/* PE-3b128d6d-eb71-4a67-ac72-4a099e50f9b4 | Core(root): CORE-EXECUTION-STANDARD.md | Manifest(root): docs/MD-FILE-MANIFEST.md */
/* 2027 TF EOI microsite · v1.0
   TF brand v5.5: Source Serif 4 identity/titles, Source Sans 3 evidence; neutral base;
   Deakin teal and VU aubergine identify affiliation only. Motion structure follows the
   Strava 03.20.2 discipline: complete semantic reading first, motion as enhancement. */
@font-face{font-family:'Source Sans 3';src:url('../assets/fonts/source-sans-3-400-normal.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Source Sans 3';src:url('../assets/fonts/source-sans-3-400-italic.ttf') format('truetype');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:'Source Sans 3';src:url('../assets/fonts/source-sans-3-600-normal.ttf') format('truetype');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'Source Serif 4';src:url('../assets/fonts/source-serif-4-400-normal.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'Source Serif 4';src:url('../assets/fonts/source-serif-4-400-italic.ttf') format('truetype');font-weight:400;font-style:italic;font-display:swap}

:root{
  --paper:#FFFFFF; --ink:#262626; --muted:#595959; --rule:#D6D6D2; --field:#F3F3EF; --canvas:#E8E8E6;
  --deakin:#007D98; --deakin-field:#EFF7F9; --vu:#1E1248; --vu-field:#F3F1F7;
  --on-ink:#FFFFFF; --on-ink-muted:#C4C4BE; --on-ink-rule:rgba(255,255,255,.22);
  --serif:'Source Serif 4',Georgia,'Times New Roman',serif;
  --sans:'Source Sans 3',Arial,sans-serif;
  --gutter:24px; --max:1320px; --ease:cubic-bezier(.22,1,.36,1);
  --section-space:72px;
}
@media(min-width:760px){:root{--gutter:48px;--section-space:96px}}
@media(min-width:1180px){:root{--gutter:64px;--section-space:120px}}

*,*::before,*::after{box-sizing:border-box}
html{scroll-padding-top:24px;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 17px/1.6 var(--sans);font-kerning:normal;letter-spacing:0;overflow-x:clip}
img{display:block;max-width:100%;height:auto}
h1,h2,h3,h4,p,dl,dd,ul,ol,figure,blockquote{margin:0}
strong{font-weight:600}
em{font-style:italic}
a{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:4px}
a:focus-visible,button:focus-visible,[tabindex="-1"]:focus-visible{outline:2px solid currentColor;outline-offset:4px}
main:focus,section:focus,tr:focus{outline:none}
.wrap{width:100%;max-width:var(--max);margin-inline:auto;padding-inline:var(--gutter)}
.visually-hidden{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.skip{position:absolute;left:16px;top:-100px;z-index:60;padding:10px 14px;background:var(--ink);color:var(--paper)}
.skip:focus{top:12px}
.icon{display:inline-block;flex:none;width:24px;height:24px;vertical-align:middle}
.icon--down{transform:rotate(90deg)}.icon--up{transform:rotate(-90deg)}.icon--download{width:16px;height:16px}

/* Masthead ------------------------------------------------------------- */
.masthead{position:relative;z-index:30;background:var(--field);border-bottom:1px solid var(--rule)}
.masthead-inner{display:flex;align-items:center;justify-content:space-between;gap:24px;min-height:76px}
.identity{font-size:15px;line-height:1.35;text-decoration:none}
.masthead nav{display:flex;gap:28px;font-size:15px}
.masthead nav a{text-decoration:none;padding:12px 0;background:linear-gradient(currentColor,currentColor) left calc(100% - 8px)/0 1px no-repeat;transition:background-size .32s var(--ease)}
.masthead nav a:hover,.masthead nav a[aria-current]{background-size:100% 1px}
.menu-toggle{display:none;width:48px;height:48px;margin-right:-12px;border:0;background:none;color:inherit;cursor:pointer}
@media(max-width:860px){
  .menu-toggle{display:grid;place-items:center}
  .masthead nav{position:absolute;inset:100% 0 auto;flex-direction:column;gap:0;padding:8px var(--gutter) 20px;background:var(--field);border-bottom:1px solid var(--rule)}
  .masthead nav a{padding:12px 0;font-size:17px;border-top:1px solid var(--rule);background:none}
  .masthead nav[hidden]{display:none}
}

/* Hero ----------------------------------------------------------------- */
.hero{background:var(--field);padding-top:clamp(40px,6vw,88px);overflow:hidden}
.hero-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(40px,5vw,80px);align-items:end}
.eyebrow{font-size:15px;line-height:1.4;color:var(--muted)}
.hero h1{margin-top:20px;font:400 clamp(56px,7.6vw,112px)/.94 var(--serif);text-wrap:balance}
.preference{max-width:40ch;margin-top:32px;font-size:clamp(18px,1.5vw,21px);line-height:1.45}
.hero-actions{display:flex;flex-wrap:wrap;align-items:center;gap:16px 32px;margin-top:40px}
.button{display:inline-flex;align-items:center;gap:14px;min-height:56px;padding:0 20px 0 24px;background:var(--ink);color:var(--paper);font-size:16px;font-weight:600;text-decoration:none;transition:background-color .2s ease}
.button:hover{background:#000}
.text-link{display:inline-flex;align-items:center;gap:10px;min-height:44px;font-size:16px;font-weight:600}
.button .icon,.text-link .icon{width:20px;height:20px;transition:transform .32s var(--ease)}
.button:hover .icon,.text-link:hover .icon{transform:translateX(4px)}
.hero-frame{position:relative;margin:0 16px 16px 0;transform:translateY(calc(var(--hero-progress,0) * -32px))}
.hero-frame::before{content:"";position:absolute;inset:16px -16px -16px 16px;background:var(--ink)}
.frame-crop{position:relative;overflow:hidden;background:var(--canvas)}
.hero-frame .frame-crop{aspect-ratio:964/740}
/* Perimeter crop removes the capture strip (top), an embedded social tag (bottom left)
   and a carousel control (right edge). Source pixels kept: x 30-994, y 26-766. */
.hero-frame img{width:106.224%;max-width:none;height:auto;margin:-2.697% 0 0 -3.112%}
.hero-frame figcaption{position:relative;padding:12px 14px 2px;background:var(--ink);color:var(--paper);font-size:13px;line-height:1.5}
@media(max-width:900px){
  .hero-grid{grid-template-columns:minmax(0,1fr);gap:48px}
  .hero-frame{max-width:640px}
}

/* One orchestrated arrival, CSS-only so no visible content is ever reset by script. */
@media(prefers-reduced-motion:no-preference){
  .hero .eyebrow{animation:arrive-fade .9s .05s var(--ease) both}
  .hero h1{animation:arrive-line 1.1s .12s var(--ease) both}
  .hero .preference{animation:arrive-fade .9s .45s var(--ease) both}
  .hero-actions{animation:arrive-fade .9s .6s var(--ease) both}
  .hero-frame .frame-crop{animation:arrive-wipe 1.2s .25s var(--ease) both}
  .hero-frame::before{animation:arrive-block 1.2s .55s var(--ease) both}
  .hero-frame figcaption{animation:arrive-fade .8s .95s var(--ease) both}
}
@keyframes arrive-line{from{clip-path:inset(0 -10% 100% -10%);transform:translateY(.35em)}to{clip-path:inset(-10%);transform:none}}
@keyframes arrive-fade{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}
@keyframes arrive-wipe{from{clip-path:inset(100% 0 0 0)}to{clip-path:inset(0)}}
@keyframes arrive-block{from{transform:translate(-16px,-16px);opacity:0}to{transform:none;opacity:1}}

/* Bio ------------------------------------------------------------------ */
.bio-band{padding-block:clamp(56px,7vw,104px)}
.bio{max-width:58ch;font-size:clamp(20px,1.85vw,25px);line-height:1.55;text-wrap:pretty}

/* Shared section language ------------------------------------------- */
section h2{font:400 clamp(34px,4.2vw,58px)/1.06 var(--serif);max-width:26ch;text-wrap:balance}
.heading-scope{color:var(--muted);white-space:nowrap}
.section-lead{max-width:56ch;margin-top:20px;font-size:clamp(18px,1.4vw,20px);line-height:1.55}
.role-title{font-weight:600;line-height:1.35;padding-left:14px;border-left:2px solid var(--rule)}
.role-title.deakin{border-color:var(--deakin)}.role-title.vu{border-color:var(--vu)}
.role-meta{margin-top:4px;color:var(--muted);font-size:15px;line-height:1.5}
.role-title+.role-meta{padding-left:16px}
.role-record h3{font-size:19px;font-weight:600;line-height:1.35}
.role-record p:not(.role-meta){margin-top:12px;max-width:60ch}

/* Section navigation (03.20.2 pattern, original chevron) --------------- */
.section-nav-shell{margin-top:clamp(56px,6vw,88px)}
.section-nav{display:flex;justify-content:flex-end;gap:8px;padding-top:12px;border-top:1px solid var(--rule)}
.section-nav a{display:grid;place-items:center;width:48px;height:48px;border:1px solid var(--rule);color:var(--ink);text-decoration:none;transition:background-color .2s ease,color .2s ease,border-color .2s ease}
@media(hover:hover){.section-nav a:hover{background:var(--ink);border-color:var(--ink);color:var(--paper)}}
.section-nav a:active{background:var(--ink);color:var(--paper)}
.section-nav.on-ink{border-color:var(--on-ink-rule)}
.section-nav.on-ink a{border-color:var(--on-ink-rule);color:var(--on-ink)}
@media(hover:hover){.section-nav.on-ink a:hover{background:var(--paper);color:var(--ink)}}
.hero .section-nav{border-color:#D0D0CB}
.hero .section-nav-shell{margin-top:56px;padding-bottom:24px}

/* Units ---------------------------------------------------------------- */
.units{background:var(--field);padding-top:var(--section-space)}
.units-grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:40px clamp(40px,5vw,80px)}
.units-heading .role-title{margin-top:32px}
.unit-index{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 40px;border-top:1px solid var(--ink)}
.unit-entry{display:grid;grid-template-columns:5.6em minmax(0,1fr);gap:16px;align-items:baseline;padding:16px 0 18px;border-bottom:1px solid var(--rule)}
.unit-entry dt{font:400 24px/1.1 var(--serif);font-variant-numeric:lining-nums}
.unit-entry dd{font-size:16px;line-height:1.4}
.unit-extra{grid-column:2;max-width:68ch;font-size:15px;color:var(--muted);margin-top:-16px}
.feedback{grid-column:1/-1;display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:40px clamp(40px,5vw,80px);align-items:start;margin-top:clamp(32px,4vw,64px);padding-top:40px;border-top:1px solid var(--rule)}
.feedback-figure{white-space:nowrap;font:400 clamp(80px,9vw,148px)/.85 var(--serif);font-variant-numeric:lining-nums tabular-nums;letter-spacing:0}
.evidence-list{list-style:none;padding:0;display:grid;gap:18px;max-width:68ch}
.evidence-list li{padding-left:18px;border-left:1px solid var(--rule)}
@media(max-width:900px){
  .units-grid,.feedback{grid-template-columns:minmax(0,1fr)}
  .unit-extra{grid-column:auto;margin-top:0}
}
@media(max-width:620px){.unit-index{grid-template-columns:minmax(0,1fr)}}

/* Responsibilities ----------------------------------------------------- */
.responsibilities{padding-top:var(--section-space)}
.split-heading{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:32px clamp(40px,5vw,80px);align-items:end}
.duty-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;margin-top:clamp(40px,5vw,64px)}
.duty{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);border-top:1px solid var(--ink)}
.duty-identity{display:flex;flex-direction:column;gap:2px;padding:16px 16px 18px 14px;border-left:2px solid;font-size:15px;line-height:1.4}
.duty.vu .duty-identity{border-color:var(--vu);background:var(--vu-field)}
.duty.deakin .duty-identity{border-color:var(--deakin);background:var(--deakin-field)}
.unit-period strong{font-size:17px}
.duty-institution{margin-top:6px;color:var(--muted)}
.duty-fields{display:grid;gap:12px;padding:16px 0 18px 20px}
.duty-fields dt{font-size:13px;color:var(--muted);line-height:1.4}
.duty-fields dd{font-size:16px;line-height:1.5}
.content-development{display:grid;grid-template-columns:minmax(0,1fr);gap:28px;margin-top:clamp(56px,6vw,96px)}
.content-development h3{font:400 clamp(26px,2.6vw,36px)/1.15 var(--serif)}
.content-development .duty{max-width:calc(50% - 12px)}
.statement{max-width:34ch;margin-top:clamp(24px,3vw,48px);font:400 clamp(26px,2.9vw,40px)/1.3 var(--serif);text-wrap:pretty}
.vu-feedback{max-width:68ch;color:var(--ink)}
@media(max-width:1000px){
  .split-heading,.duty-grid{grid-template-columns:minmax(0,1fr)}
  .content-development .duty{max-width:none}
}
@media(max-width:560px){
  .duty{grid-template-columns:minmax(0,1fr)}
  .duty-fields{padding-left:16px}
}

/* Professional practice (ink band) -------------------------------------- */
.practice{margin-top:var(--section-space);padding-block:var(--section-space) 32px;background:var(--ink);color:var(--on-ink)}
.practice h2{max-width:24ch}
.practice-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(40px,5vw,96px);margin-top:clamp(40px,5vw,72px);align-items:start}
.practice-frame{position:relative;margin:0 16px 16px 0}
.practice-frame::before{content:"";position:absolute;inset:16px -16px -16px 16px;border:1px solid var(--on-ink-rule)}
.practice-frame .frame-crop{aspect-ratio:4/5}
/* Full source height is retained: the runner stays intact from cap to shoes. */
.practice-frame img{width:100%;height:100%;object-fit:cover;object-position:60% 50%}
.practice-copy{display:grid;gap:56px}
.practice .role-meta{color:var(--on-ink-muted)}
.practice .role-record p:not(.role-meta){color:var(--on-ink)}
.practice .role-record+.role-record{padding-top:40px;border-top:1px solid var(--on-ink-rule)}
.season{margin-top:32px;max-width:600px}
.season svg{display:block;width:100%;height:auto;overflow:visible}
.season-grid{stroke:var(--on-ink-rule);stroke-width:1}
.season-base{stroke:var(--on-ink-muted);stroke-width:1}
.season-bar{fill:var(--on-ink)}
.season text{fill:var(--on-ink-muted);font:400 15px var(--sans)}
.season figcaption{margin-top:10px;color:var(--on-ink-muted);font-size:15px}
.practice .section-nav-shell{margin-top:72px}
@media(max-width:900px){.practice-grid{grid-template-columns:minmax(0,1fr)}.practice-frame{max-width:520px}}

/* Research ------------------------------------------------------------- */
.research{padding-top:var(--section-space)}
.research h2{max-width:22ch}
.research-grid{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:56px clamp(40px,5vw,96px);margin-top:clamp(40px,5vw,72px)}
.phd h3{font-size:19px;font-weight:600}
.phd p:not(.role-meta){margin-top:12px;max-width:62ch}
.examiner{grid-column:1;padding-top:40px;border-top:1px solid var(--ink)}
.examiner blockquote p{font:400 clamp(24px,2.5vw,34px)/1.32 var(--serif);max-width:32ch;text-wrap:pretty}
.examiner figcaption{margin-top:20px;color:var(--muted);font-size:15px}
.research-frame{grid-column:2;grid-row:1/span 2;position:relative;align-self:start;margin:0 16px 16px 0}
.research-frame .frame-crop::after{content:none}
.research-frame::before{content:"";position:absolute;inset:16px -16px auto 16px;aspect-ratio:1024/923;background:var(--field)}
.research-frame .frame-crop{aspect-ratio:1024/923}
/* Bottom 40px removed: embedded social tag. */
.research-frame img{width:100%;height:100%;object-fit:cover;object-position:50% 0}
.research-frame figcaption{position:relative;margin-top:28px;font-size:15px;line-height:1.5;color:var(--muted)}
.research-frame figcaption strong{color:var(--ink)}
.ra-roles{grid-column:1/-1;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:40px;padding-top:40px;border-top:1px solid var(--rule)}
@media(max-width:900px){
  .research-grid,.ra-roles{grid-template-columns:minmax(0,1fr)}
  .examiner,.research-frame{grid-column:auto;grid-row:auto}
}

/* Framed photographs arrive once, only when armed offscreen. */
.portrait-armed .frame-crop{clip-path:inset(calc((1 - var(--portrait-progress,1)) * 100%) 0 0 0)}
.portrait-armed img{transform:scale(calc(1.06 - var(--portrait-progress,1) * .06))}
.portrait-armed::before{opacity:var(--portrait-progress,1)}

/* Progressive reading emphasis: words stay readable at every state. */
.progressive-word{transition:color .25s ease}
.motion-ok [data-progressive]{color:var(--muted)}
.motion-ok [data-progressive] .progressive-word.is-read{color:var(--ink)}

/* Season chart wipe (armed only offscreen) */
.season.is-armed .season-bars{clip-path:inset(0 100% 0 0)}
.season.is-armed.is-revealed .season-bars{clip-path:inset(0);transition:clip-path 1.4s var(--ease)}

.precision-digit{display:inline-block}

/* Documents ------------------------------------------------------------ */
.documents{margin-top:var(--section-space);padding-top:var(--section-space);background:var(--field)}
.documents-grid{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:56px clamp(40px,5vw,96px)}
.contact{display:flex;flex-direction:column;align-items:flex-start}
.contact-name{font:400 clamp(36px,4vw,56px)/1.05 var(--serif)}
.contact-qualification{margin:12px 0 28px;color:var(--muted)}
.contact-link{display:inline-flex;align-items:center;min-height:44px;font-size:18px}
.document-links{border-top:1px solid var(--ink)}
.document-row{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:28px 0;border-bottom:1px solid var(--rule);text-decoration:none}
.document-row strong{display:block;font:400 clamp(28px,2.8vw,40px)/1.1 var(--serif)}
.document-row small{display:block;margin-top:8px;font-size:15px;color:var(--muted)}
.document-row .icon{transition:transform .32s var(--ease)}
.document-row:hover .icon{transform:translateX(6px)}
.document-row:hover strong{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:6px}
.pdf-links{display:flex;flex-wrap:wrap;gap:8px 32px;padding-top:20px}
.pdf-links a{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-size:15px}
@media(max-width:900px){.documents-grid{grid-template-columns:minmax(0,1fr)}}

/* Footer --------------------------------------------------------------- */
.site-footer{border-top:1px solid var(--rule)}
.footer-inner{display:flex;flex-wrap:wrap;gap:8px 32px;align-items:center;padding-block:28px 40px;font-size:14px;color:var(--muted)}
.footer-inner a{display:inline-flex;align-items:center;min-height:44px}
.review-notice{margin-left:auto}
@media(max-width:620px){.review-notice{margin-left:0}}

/* Page progress -------------------------------------------------------- */
.page-progress{position:fixed;z-index:50;inset:0 0 auto;height:2px;background:var(--ink);transform:scaleX(0);transform-origin:left;pointer-events:none}

@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  .page-progress{display:none}
  .hero-frame{transform:none}
}
@media(forced-colors:active){
  .duty-identity,.role-title,.map-chip{border-color:CanvasText!important}
  .progressive-word{color:CanvasText!important}
  .season-bar{fill:CanvasText}
}
@media print{
  .masthead nav,.menu-toggle,.section-nav-shell,.page-progress,.hero-actions,.pdf-links,.skip{display:none!important}
  .hero,.units,.documents,.practice{background:none;color:var(--ink)}
  .practice .role-meta,.practice .role-record p,.season text,.season figcaption{color:var(--ink)!important}
  .hero-frame,.practice-frame,.research-frame{break-inside:avoid}
  *{animation:none!important;transition:none!important}
}

/* Experience across organisations ---------------------------------------- */
.experience{padding-top:var(--section-space);border-top:1px solid var(--rule)}
.experience h2{max-width:24ch}
.career-timeline{position:relative;margin-top:clamp(40px,5vw,72px);padding-top:28px}
.tl-axis{position:absolute;inset:0 0 0 0;pointer-events:none}
.tl-tick{position:absolute;top:0;bottom:0;left:var(--at);padding-left:6px;border-left:1px solid var(--rule);font:400 15px/1 var(--serif);color:var(--muted)}
.tl-cursor{position:absolute;top:22px;bottom:0;left:calc(var(--cursor,1) * 100%);width:1px;background:var(--ink);opacity:0;pointer-events:none}
.timeline-armed .tl-cursor{opacity:1}
.tl-lane{position:relative;padding:14px 0 0}
.tl-label{position:relative;display:flex;flex-wrap:wrap;gap:2px 12px;padding-left:var(--start);font-size:14px;line-height:1.35}
.label-end .tl-label{justify-content:flex-end;padding-left:0;padding-right:calc(100% - var(--end));text-align:right}
.tl-title{font-weight:600}
.tl-period{color:var(--muted)}
.tl-deakin .tl-title,.tl-vu .tl-title{padding-left:8px;border-left:2px solid}
.tl-deakin .tl-title{border-color:var(--deakin)}
.tl-vu .tl-title{border-color:var(--vu)}
.tl-track{position:relative;display:block;height:8px;margin-top:6px}
.tl-bar{position:absolute;top:0;bottom:0;left:var(--start);width:calc(var(--end) - var(--start));min-width:6px;background:var(--ink);border-radius:4px;transform-origin:left;transform:scaleX(var(--draw,1))}
.tl-practice .tl-bar{background:repeating-linear-gradient(90deg,var(--ink) 0 10px,#4A4A4A 10px 12px)}
.experience-records{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:40px clamp(32px,4vw,56px);margin-top:clamp(48px,6vw,88px)}
.experience-records .role-record{padding-top:18px;border-top:1px solid var(--ink)}
.experience-records .role-record p:not(.role-meta){font-size:16px}
.experience-notes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px clamp(32px,4vw,56px);margin-top:40px;padding-top:24px;border-top:1px solid var(--rule)}
.experience-notes p{max-width:62ch;font-size:16px}
@media(max-width:1000px){.experience-records{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:700px){
  .experience-records,.experience-notes{grid-template-columns:minmax(0,1fr)}
  .tl-label,.label-end .tl-label{padding:0;justify-content:flex-start;text-align:left}
  .tl-tick:nth-child(even){color:transparent}
  .tl-label{font-size:13px}
}
@media print{.tl-cursor{display:none}.tl-bar{transform:none!important}}
.tl-tick:last-child{padding:0 6px 0 0;border-left:0;border-right:1px solid var(--rule);transform:translateX(-100%)}

/* ===== v1.1 visual execution: ink opening and closing bands, designed bio, diptych ===== */
/* Ink opening: the identity reads first, the teaching photograph sits in a field-toned frame. */
.masthead{background:var(--ink);color:var(--on-ink);border-bottom-color:var(--on-ink-rule)}
.hero{background:var(--ink);color:var(--on-ink)}
.hero .eyebrow{color:var(--on-ink-muted)}
.hero .preference{color:var(--on-ink-muted)}
.hero .button{background:var(--paper);color:var(--ink)}
.hero .button:hover{background:var(--field)}
.hero-frame::before{background:var(--field)}
.hero-frame figcaption{background:var(--paper);color:var(--ink)}
.hero .section-nav{border-color:var(--on-ink-rule)}
.hero .section-nav a{border-color:var(--on-ink-rule);color:var(--on-ink)}
@media(hover:hover){.hero .section-nav a:hover{background:var(--paper);color:var(--ink)}}
@media(max-width:860px){.masthead nav{background:var(--ink);border-bottom-color:var(--on-ink-rule)}.masthead nav a{border-top-color:var(--on-ink-rule)}}

/* Designed 100-word bio */
.bio-feature{padding-block:clamp(72px,9vw,136px) 0}
.bio-grid{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:40px clamp(40px,5vw,96px);align-items:start}
.bio-aside{position:sticky;top:32px;display:flex;flex-direction:column;align-items:flex-start}
.bio-label{font:600 15px/1.4 var(--sans);color:var(--muted);max-width:none}
.bio-count{display:flex;align-items:baseline;gap:12px;margin-top:10px}
.bio-number{font:400 clamp(96px,11vw,176px)/.82 var(--serif);font-variant-numeric:lining-nums;letter-spacing:0}
.bio-unit{font:400 clamp(20px,1.8vw,26px)/1 var(--serif);color:var(--muted)}
.pdf-link{display:inline-flex;align-items:center;gap:10px;min-height:48px;margin-top:28px;padding:0 18px;border:1px solid var(--ink);font-size:15px;font-weight:600;text-decoration:none;transition:background-color .2s ease,color .2s ease}
.pdf-link:hover{background:var(--ink);color:var(--paper)}
.bio-text{font:400 clamp(23px,2.2vw,31px)/1.42 var(--serif);text-wrap:pretty;max-width:38ch}
.word-ruler{margin-top:clamp(28px,3vw,44px);max-width:38ch;font-size:clamp(23px,2.2vw,31px)}
.word-ruler .ticks{display:grid;grid-template-columns:repeat(100,minmax(0,1fr));align-items:end;gap:2px;height:22px;border-bottom:1px solid var(--ink)}
.word-ruler .tick{display:block;height:9px;background:var(--ink);transform-origin:bottom;transition:background-color .25s ease,transform .25s ease}
.word-ruler .tick--ten{height:18px}
.motion-ok .word-ruler .tick{background:var(--rule)}
.motion-ok .word-ruler .tick.is-read{background:var(--ink)}
.bio-feature .section-nav-shell{margin-top:clamp(64px,7vw,104px)}
@media(max-width:900px){.bio-grid{grid-template-columns:minmax(0,1fr)}.bio-aside{position:static}.bio-text,.word-ruler{max-width:none}}
@media(max-width:520px){.word-ruler .ticks{gap:1px}}

/* Pacing: field and ink bands alternate with paper */
.experience{background:var(--field);border-top:0}
.research{background:var(--field);padding-bottom:0}
.responsibilities{padding-bottom:0}
.documents{background:var(--ink);color:var(--on-ink);margin-top:0}
.documents .contact-qualification,.documents .document-row small{color:var(--on-ink-muted)}
.documents .document-links{border-top-color:var(--on-ink)}
.documents .document-row{border-bottom-color:var(--on-ink-rule)}
.documents .section-nav{border-color:var(--on-ink-rule)}
.documents .section-nav a{border-color:var(--on-ink-rule);color:var(--on-ink)}
@media(hover:hover){.documents .section-nav a:hover{background:var(--paper);color:var(--ink)}}
.documents .pdf-links{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:4px 24px}
@media(max-width:560px){.documents .pdf-links{grid-template-columns:minmax(0,1fr)}}
.documents{padding-bottom:24px}

/* Professional practice diptych */
.practice-photos{display:grid;gap:40px}
.practice-frame.landscape .frame-crop{aspect-ratio:3/2}
.practice-frame.landscape img{object-position:30% 45%}
@media print{.hero,.masthead,.documents{background:none!important;color:var(--ink)!important}}
@media print{.motion-ok [data-progressive],.motion-ok [data-progressive] .progressive-word{color:var(--ink)!important}.motion-ok .word-ruler .tick{background:var(--ink)!important}}

/* ===== v2.0 narrative layer (17 October 2026) =================================
   Each chapter opens with a numbered source heading, the approved narrative principle
   in Source Serif, then the narrative paragraph; the TWE and CV evidence follows in
   Source Sans. Sentence case and natural tracking throughout (brand guide v5.5). */
.kicker{display:flex;align-items:center;gap:14px;font:600 15px/1.4 var(--sans);color:var(--muted)}
.kicker-index{display:inline-flex;align-items:center;gap:14px;font:400 17px/1 var(--serif);font-variant-numeric:lining-nums;color:var(--ink)}
.kicker-index::after{content:"";width:40px;height:1px;background:currentColor}
.story{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(20px,2.4vw,40px)}
.story .kicker{grid-column:1/-1}
section .story-title{grid-column:1/span 10;max-width:19ch;margin-top:clamp(20px,2.2vw,32px);font:400 clamp(36px,4.6vw,68px)/1.06 var(--serif);text-wrap:balance}
.story-body{grid-column:5/-1;margin-top:clamp(28px,3.2vw,48px)}
.story-text{max-width:60ch;font:400 clamp(19px,1.45vw,22px)/1.6 var(--serif);text-wrap:pretty}
section>.story+.wrap,section>.story+.units-grid{margin-top:clamp(56px,6vw,96px)}
@media(max-width:900px){section .story-title,.story-body{grid-column:1/-1}}

/* On ink: muted and rule tones lift; unread words stay above 4.5:1. */
.on-ink .kicker{color:var(--on-ink-muted)}
.on-ink .kicker-index{color:var(--on-ink)}
.motion-ok .on-ink [data-progressive]{color:#9A9A95}
.motion-ok .on-ink [data-progressive] .progressive-word.is-read{color:var(--on-ink)}

/* Hero: identity, the opening line as one short italic phrase, then the opening paragraph. */
.hero-line{max-width:26ch;margin-top:28px;font:italic 400 clamp(24px,2.5vw,36px)/1.25 var(--serif);color:var(--on-ink);text-wrap:balance}
.hero-lead{max-width:54ch;margin-top:24px;font:400 clamp(17px,1.25vw,19px)/1.6 var(--serif);color:var(--on-ink-muted);text-wrap:pretty}
.hero .preference{margin-top:20px;font-size:16px}
.hero-figures{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));margin-top:clamp(56px,6vw,96px);border-top:1px solid var(--on-ink-rule)}
.hero-figure{padding:24px clamp(16px,2vw,32px) 4px;border-left:1px solid var(--on-ink-rule)}
.hero-figure:first-child{padding-left:0;border-left:0}
.hero-figure dt{font:400 clamp(52px,5.6vw,88px)/.9 var(--serif);font-variant-numeric:lining-nums}
.hero-figure dd{max-width:15ch;margin:14px 0 0;font-size:15px;line-height:1.4;color:var(--on-ink-muted)}
@media(max-width:760px){
  .hero-figures{grid-template-columns:repeat(2,minmax(0,1fr))}
  .hero-figure:nth-child(3){padding-left:0;border-left:0}
  .hero-figure:nth-child(n+3){border-top:1px solid var(--on-ink-rule);margin-top:24px}
}
@media(prefers-reduced-motion:no-preference){
  .hero .hero-line{animation:arrive-fade .9s .3s var(--ease) both}
  .hero .hero-lead{animation:arrive-fade .9s .4s var(--ease) both}
  .hero .preference{animation-delay:.5s}
  .hero-figures{animation:arrive-fade 1s .75s var(--ease) both}
}

/* Band rhythm: ink, paper, ink, field, paper, field, paper, field, ink. */
.experience{background:var(--paper)}
.teaching{border-top:0}
.teaching-intro .story{flex:1 1 720px;max-width:100%}
.split-heading{display:block}
.units-heading .role-title{margin-top:0}
.bio-feature{background:var(--field);padding-bottom:0;margin-top:var(--section-space)}
.bio-label{display:flex;align-items:center;gap:14px}
.research .kicker+.story-title{grid-column:auto}

/* Evidence retained from the TWE, quiet beside the narrative. */
.support-note{max-width:68ch;padding-left:18px;border-left:2px solid var(--vu);font-size:16px}

/* Close: the approved final paragraph as the last statement. */
.closing{padding-bottom:clamp(56px,7vw,104px)}
.closing .kicker{color:var(--on-ink-muted)}
.closing .kicker-index{color:var(--on-ink)}
.closing-text{max-width:24ch;margin-top:clamp(20px,2.2vw,32px);font:400 clamp(30px,3.8vw,56px)/1.14 var(--serif);text-wrap:balance}
.documents .closing+.documents-grid{padding-top:clamp(48px,5vw,72px);border-top:1px solid var(--on-ink-rule)}

/* Principle headlines rise line by line from a mask, armed only offscreen. */
.headline-line-mask{padding-block:.08em .14em;margin-block:-.08em -.14em}
@media print{.kicker-index::after{background:var(--ink)}.hero-figures{border-color:var(--rule)}}
/* v2.0 refinements after the first full render pass */
section .story-title{max-width:25ch}
.hero-line{max-width:30ch}
.hero-intro{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));column-gap:clamp(20px,2.4vw,40px);margin-top:clamp(64px,7vw,112px)}
.hero-intro .hero-lead{grid-column:5/-1;max-width:60ch;margin:0;font:400 clamp(19px,1.45vw,22px)/1.6 var(--serif);color:var(--on-ink)}
.hero-intro .hero-figures{grid-column:1/-1}
.motion-ok .hero [data-progressive]{color:#9A9A95}
.motion-ok .hero [data-progressive] .progressive-word.is-read{color:var(--on-ink)}
@media(max-width:900px){.hero-intro .hero-lead{grid-column:1/-1}}
.closing-text{max-width:28ch}

/* v2.1 story media (17 October 2026): a photograph or Deakin's footage framed beside the
   narrative, in the same frame language as the practice photographs. */
.story-media{position:relative;grid-column:1/span 4;grid-row:3;align-self:start;max-width:380px;margin:clamp(28px,3.2vw,48px) 16px 16px 0}
.story-media--video{grid-column:1/span 3;max-width:300px}
.story-media::before{content:"";position:absolute;inset:16px -16px -16px 16px;border:1px solid var(--rule);pointer-events:none}
.story-media .frame-crop{aspect-ratio:1440/1422}
.story-media--video .frame-crop{aspect-ratio:640/1138}
.story-media img{width:100%;height:100%;object-fit:cover}
.story-media video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;transition:opacity .3s ease}
.story-media.is-playing video{opacity:1}
.story-media figcaption{position:relative;margin-top:30px;font-size:14px;line-height:1.4;color:var(--muted)}
.media-toggle{position:absolute;right:12px;bottom:12px;display:grid;place-items:center;width:44px;height:44px;padding:0;border:1px solid rgba(255,255,255,.55);background:rgba(38,38,38,.72);color:#fff;cursor:pointer;transition:background-color .2s ease}
.media-toggle[hidden]{display:none}
@media(hover:hover){.media-toggle:hover{background:var(--ink)}}
.media-toggle .icon{width:20px;height:20px}
.media-toggle .icon--pause,.is-playing .media-toggle .icon--play{display:none}
.is-playing .media-toggle .icon--pause{display:block}
.portrait-armed video{transform:scale(calc(1.06 - var(--portrait-progress,1) * .06))}
@media(max-width:900px){.story-media{grid-column:1/-1;grid-row:auto;max-width:340px;margin-top:40px}.story-media--video{max-width:280px}}
@media(prefers-reduced-motion:reduce){.story-media video{transition:none}}
@media print{.story-media video,.media-toggle{display:none!important}}

/* v2.2 · Student comments (N5): verbatim eVALUate comments set as a second row of the
   feedback grid, echoing the unit index: label left, two-column ruled list right. */
.comments-label{grid-column:1;margin-top:clamp(8px,1.6vw,24px);font:600 17px/1.35 var(--sans)}
.comment-list{grid-column:2;margin:clamp(8px,1.6vw,24px) 0 0;padding:0;list-style:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 40px;border-top:1px solid var(--ink)}
.comment-list li{display:flex;flex-direction:column;justify-content:space-between;gap:16px;padding:22px 0 20px;border-bottom:1px solid var(--rule)}
.comment-list blockquote p{font:400 clamp(19px,1.45vw,21px)/1.45 var(--serif);text-wrap:pretty;hanging-punctuation:first}
.comment-list .quote-open{margin-left:-.42em}
.comment-source{font-size:14px;line-height:1.4;color:var(--muted);font-variant-numeric:lining-nums tabular-nums}
@supports (hanging-punctuation:first){.comment-list .quote-open{margin-left:0}}
@media(max-width:900px){.comments-label,.comment-list{grid-column:auto}.comments-label{margin-top:8px}.comment-list{margin-top:-22px}}
.comment-list li:nth-last-child(-n+2){border-bottom:0;padding-bottom:0}
@media(max-width:620px){.comment-list{grid-template-columns:minmax(0,1fr)}.comment-list li:nth-last-child(2){border-bottom:1px solid var(--rule);padding-bottom:20px}}
@media print{.comment-list li{break-inside:avoid}}

/* v2.2 · Footer links (Leighton, 5:03 PM): identity left, profiles and article right. */
.footer-inner{justify-content:space-between}
.footer-links{display:flex;flex-wrap:wrap;gap:0 28px}
.footer-links a{text-decoration:underline;text-decoration-color:var(--rule);text-decoration-thickness:1px;text-underline-offset:3px}
@media(hover:hover){.footer-links a:hover{color:var(--ink);text-decoration-color:currentColor}}

/* v2.3 · Tracking notice (approved wording): the quietest line on the page. */
.tracking-notice{flex-basis:100%;max-width:72ch;margin-top:4px;font-size:13px;line-height:1.5;color:var(--muted)}
