
@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500&family=IBM+Plex+Mono:wght@400&display=swap');
:root{--bg:#191816;--ink:#eeeae3;--secondary:#b2aca2;--line:#37342f;--accent:#e8e0d4;--font:'DM Sans',Arial,sans-serif}
.site-shell{display:grid;grid-template-columns:264px minmax(0,1fr);gap:80px;max-width:1440px;width:calc(100% - 96px);margin:48px auto 0;align-items:start}.sidebar{position:sticky;top:48px}.sidebar .brand{font-size:32px;font-weight:400;letter-spacing:-.02em;line-height:1.2}.sidebar .bio{margin-top:24px;color:var(--secondary);font-size:15px;max-width:240px}.sidebar .nav{display:flex;flex-direction:column;align-items:stretch;gap:0;margin-top:48px}.sidebar .nav a{padding:12px 0 12px 16px;border-left:1px solid var(--line);font-size:14px}.sidebar .nav a.active{border-left-color:var(--ink);color:var(--ink)}.sidebar .sidebar-meta{margin-top:48px;font-size:12px;color:var(--secondary);font-family:'IBM Plex Mono',monospace;line-height:1.8}.orbit-main{min-width:0}.orbit-home{padding-top:8px}.orbit-home .work-heading{display:flex;align-items:center;justify-content:space-between;gap:24px;margin-bottom:24px}.orbit-home .work-heading h1{font-size:24px;letter-spacing:0}.orbit-home .project-image{height:clamp(280px,48svh,560px);aspect-ratio:auto;overflow:hidden}.orbit-home .project-image img{filter:saturate(.6)}.orbit-home .project-caption{margin-top:24px;align-items:start}.orbit-home .project-caption h2{font-size:28px;max-width:460px}.orbit-home .project-caption p{font-size:15px;margin-top:16px;max-width:420px}.orbit-home .viewer-controls{border-top:1px solid var(--line);padding-top:12px;margin-top:32px}.orbit-home .counter{font-family:'IBM Plex Mono',monospace}.orbit .quiet-footer{margin-top:48px}.inner-page{padding-top:8px}.page-heading h1{font-size:40px}.content-row{padding:32px 0}.content-row .row-body{max-width:700px}.project-figure img{filter:saturate(.6)}.inner-page .page-heading p{font-size:17px}.orbit .button{border-color:var(--ink)}
@media(max-width:1100px){.site-shell{grid-template-columns:232px minmax(0,1fr);gap:48px}.orbit-home .project-image{aspect-ratio:1.15}.orbit-home .project-caption{flex-direction:column;gap:20px}}
@media(max-width:800px){.site-shell{display:block;width:calc(100% - 48px);margin-top:24px}.sidebar{position:static}.sidebar-head{display:flex;justify-content:space-between;align-items:center}.sidebar .brand{font-size:24px}.sidebar .bio{margin-top:20px;max-width:400px}.sidebar .nav{display:none;margin-top:24px}.sidebar .nav.open{display:flex}.sidebar .sidebar-meta{display:none}.orbit-main{margin-top:40px}.orbit-home .work-heading{margin-bottom:20px}.orbit-home .work-heading h1{font-size:20px}.orbit-home .project-caption h2{font-size:24px}.orbit-home .project-image{aspect-ratio:1.1}.inner-page .page-heading h1{font-size:36px}}

*{box-sizing:border-box}html{scroll-behavior:auto}body{margin:0;background:var(--bg);color:var(--ink);font:400 16px/1.6 var(--font);-webkit-font-smoothing:antialiased}button,a{touch-action:manipulation}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit;text-underline-offset:4px}button,a{outline-offset:4px}button:focus-visible,a:focus-visible{outline:2px solid var(--accent)}button{transition:color 160ms cubic-bezier(.22,1,.36,1),background 160ms cubic-bezier(.22,1,.36,1),border-color 160ms cubic-bezier(.22,1,.36,1)}h1,h2,h3,p,figure{margin:0}h1,h2,h3{font-weight:400;line-height:1.12}h1{font-size:64px;letter-spacing:-.03em}h2{font-size:32px;letter-spacing:-.02em}h3{font-size:24px;letter-spacing:0}p{max-width:60ch}img{display:block;width:100%;height:100%;object-fit:cover}.muted,.meta{color:var(--secondary)}.meta{font-size:12px;line-height:1.5}.skip{position:absolute;top:-80px;left:24px;padding:12px 16px;background:var(--ink);color:var(--bg);z-index:99}.skip:focus{top:16px}.brand{font-size:16px;font-weight:500;text-decoration:none}.menu{display:none;background:transparent;border:1px solid var(--line);border-radius:8px;min-height:40px;padding:8px 16px}.nav{display:flex;gap:24px;align-items:center}.nav a{font-size:14px;line-height:1.4;text-decoration:none;color:var(--secondary);padding:12px 0}.nav a.active{color:var(--ink)}.nav a:hover{color:var(--ink)}.button{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:12px 20px;border:1px solid var(--ink);border-radius:8px;background:var(--ink);color:var(--bg);font-size:14px;line-height:1.3;text-decoration:none}.button:hover{background:var(--secondary);border-color:var(--secondary)}.text-button{border:0;border-bottom:1px solid currentColor;border-radius:0;padding:0;background:none;font-size:14px;line-height:1.5;text-align:left}.plain-link{font-size:14px}.page-heading{margin-bottom:48px}.page-heading .meta{margin-bottom:16px}.page-heading h1{font-size:48px;max-width:850px}.page-heading p{margin-top:24px;max-width:600px;color:var(--secondary);font-size:18px}.content-row{padding:28px 0;border-top:1px solid var(--line)}.content-row h2{font-size:24px;margin-bottom:16px;letter-spacing:0}.content-row p{font-size:16px;color:var(--secondary)}.content-row p+p{margin-top:16px}.content-row details{margin-top:20px}.content-row summary{cursor:pointer;font-size:14px;color:var(--ink)}.content-row details p{font-size:14px;margin-top:12px}.columns{display:grid;grid-template-columns:1fr 1fr;gap:48px}.detail-label{display:block;color:var(--ink);font-size:14px;margin-bottom:8px}.prose{max-width:760px}.prose>p{color:var(--secondary);margin-top:24px}.prose>h2{margin-top:48px}.aside-note{border-left:1px solid var(--line);padding-left:24px;margin-top:40px}.aside-note p{font-size:15px;color:var(--secondary)}.aside-note .meta{margin-bottom:12px}.guest{font:inherit;text-align:left;cursor:pointer;border:0;background:none;border-bottom:1px solid currentColor;padding:0;color:var(--ink)}.project-figure{margin:32px 0}.project-figure img{max-height:420px;aspect-ratio:1.8}.project-figure figcaption{font-size:12px;color:var(--secondary);margin-top:12px}.facts{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin:32px 0}.facts dt{font-size:14px;color:var(--ink);margin-bottom:8px}.facts dd{font-size:15px;color:var(--secondary);margin:0}.quiet-footer{display:flex;justify-content:space-between;gap:24px;border-top:1px solid var(--line);padding:24px 0;font-size:12px;color:var(--secondary);margin-top:64px}.quiet-footer button{border:0;background:none;padding:0;color:inherit;font:inherit;text-decoration:underline;text-underline-offset:4px}.chooser{display:flex;align-items:center;gap:24px}.chooser button{padding:8px 0;background:none;border:0;border-bottom:1px solid transparent;font-size:14px;color:var(--secondary)}.chooser button[aria-pressed=true]{border-bottom-color:var(--accent);color:var(--ink)}.counter{font-size:12px;color:var(--secondary);font-variant-numeric:tabular-nums}.viewer-controls{display:flex;justify-content:space-between;gap:24px;align-items:center;margin-top:20px}.viewer-controls .pager{display:flex;gap:24px}.pager button{border:0;background:none;padding:8px 0;color:var(--secondary);font-size:14px}.pager button:hover{color:var(--ink)}.project-caption{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-top:20px}.project-caption h2{font-size:20px;letter-spacing:0}.project-caption p{font-size:13px;margin-top:4px;color:var(--secondary)}dialog{width:min(520px,90vw);border:1px solid var(--line);border-radius:12px;background:var(--bg);color:var(--ink);padding:32px}dialog::backdrop{background:#0008}dialog h2{font-size:28px;margin-bottom:20px}dialog p{font-size:15px;color:var(--secondary)}dialog .dialog-close{display:block;margin:24px 0 0 auto;border:1px solid var(--line);background:none;border-radius:8px;padding:8px 16px;font-size:14px}.mobile-only{display:none}[hidden]{display:none!important}
@media(max-width:800px){h1{font-size:44px}h2{font-size:28px}.menu{display:block}.nav{display:none}.nav.open{display:flex}.columns,.facts{grid-template-columns:1fr;gap:24px}.page-heading{margin-bottom:32px}.page-heading h1{font-size:36px}.page-heading p{font-size:16px;margin-top:20px}.quiet-footer{margin-top:48px;flex-wrap:wrap;gap:12px}.content-row{padding:24px 0}.project-caption{align-items:start;gap:16px}.project-caption h2{font-size:18px}.project-caption .plain-link{white-space:nowrap}.mobile-only{display:block}.project-figure img{aspect-ratio:1.25}.viewer-controls{margin-top:16px}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}
@media print{.menu,.nav,.quiet-footer,.chooser,.viewer-controls,dialog{display:none!important}body{color:#171717!important;background:white!important}.sidebar{position:static!important}.site-shell{display:block!important}.content-row{break-inside:avoid}}

/* Personal About page. Preserve the supplied photograph's original pixels,
   colours and full composition, with no upscale, crop, overlay or filter. */
.about-page{padding-top:8px}
.about-heading{margin-bottom:24px}
.about-heading h1{font-size:24px;letter-spacing:0}
.about-photo{width:100%;max-width:1086px;margin:0}
.about-photo a{display:block}
.about-photo img{display:block;width:100%;height:auto;aspect-ratio:1086/611;object-fit:contain;filter:none}
.about-copy{max-width:720px;margin-top:32px;font-size:17px;line-height:1.75;color:var(--secondary)}
.about-copy p{max-width:none}
.about-copy p+p{margin-top:24px}
.about-copy p:first-child{font-size:20px;line-height:1.6;color:var(--ink)}
@media(max-width:800px){.about-page{padding-top:0}.about-heading{margin-bottom:20px}.about-heading h1{font-size:24px}.about-copy{margin-top:24px;font-size:16px;line-height:1.7}.about-copy p:first-child{font-size:18px}.about-copy p+p{margin-top:20px}}

/* Business Ownership: a personal work record, with evidence beside the claims. */
.business-page{padding-top:8px}
.business-page p{max-width:none;color:var(--secondary)}
.business-page .section-label{font-size:13px;line-height:1.5;margin-bottom:20px;color:var(--secondary)}
.business-intro{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,1fr);gap:40px;align-items:center}
.business-intro h1{font-size:clamp(36px,3.7vw,52px);line-height:1.08;letter-spacing:-.035em;margin-bottom:28px}
.business-intro-copy>p{font-size:15px;line-height:1.7}
.business-intro-copy .business-lead{color:var(--ink);font-size:17px;line-height:1.65;margin-bottom:16px}
.business-portrait img{height:auto;aspect-ratio:1;object-fit:contain;filter:none}
.business-page figcaption{font-size:12px;color:var(--secondary);line-height:1.6;margin-top:12px}
.business-results{display:grid;grid-template-columns:1fr 1.25fr 1fr;gap:24px;padding:28px 0;margin:40px 0 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.business-results>div{display:flex;flex-direction:column-reverse;gap:8px}
.business-results dt{font-size:13px;color:var(--secondary)}
.business-results dd{margin:0;font-size:40px;line-height:1.1;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.business-results dd span{font-size:16px;color:var(--secondary)}
.business-section{margin-top:64px}
.business-section h2{font-size:28px;line-height:1.2;letter-spacing:-.02em}
.section-heading{display:flex;justify-content:space-between;align-items:baseline;gap:24px;margin-bottom:24px}
.section-heading>p{font-size:12px;text-align:right;flex-shrink:0}
.capability-list{margin:0}
.capability-list>div{display:grid;grid-template-columns:200px minmax(0,1fr);gap:28px;padding:24px 0;border-top:1px solid var(--line)}
.capability-list dt{font-size:16px;line-height:1.6}
.capability-list dd{margin:0;font-size:15px;line-height:1.75;color:var(--secondary);max-width:52ch}
.business-page .industry-insight{border-left:1px solid var(--secondary);padding-left:24px;margin-top:24px;max-width:66ch;font-size:14px;line-height:1.8}
.business-page a:hover{color:var(--ink)}
.business-page p a{color:var(--ink)}
.service-section{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.9fr);gap:48px;padding-top:40px;border-top:1px solid var(--line);align-items:center}
.service-copy h2{margin-bottom:24px}
.service-copy>p:not(.section-label){font-size:15px;line-height:1.75;margin-top:16px}
.condition-controls{display:flex;gap:24px;margin:32px 0 0;padding:0;border:0}
 .condition-controls label{position:relative;cursor:pointer}
.condition-controls input{position:absolute;opacity:0;width:1px;height:1px}
.condition-controls span{display:block;padding:8px 0;border-bottom:1px solid transparent;font-size:14px;color:var(--secondary);min-height:40px}
.condition-controls input:checked+span{color:var(--ink);border-bottom-color:var(--ink)}
.condition-controls input:focus-visible+span{outline:2px solid var(--accent);outline-offset:4px}
.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
[data-condition-photo="before"]{display:none}
.service-section:has(#interior-before:checked) [data-condition-photo="before"]{display:block}
.service-section:has(#interior-before:checked) [data-condition-photo="after"]{display:none}
.service-copy>p.photo-note{font-size:12px;margin-top:12px;max-width:30ch}
.interior-photos img{height:auto;width:100%;aspect-ratio:9/16;object-fit:contain;filter:none}
.interior-photos{display:grid;grid-template-columns:1fr;gap:24px;max-width:320px;margin-left:auto;width:100%}
.feedback-section{padding-top:40px;border-top:1px solid var(--line)}
.feedback-section blockquote{padding:0;margin:32px 0 24px;max-width:700px}
.feedback-section blockquote p{font-size:clamp(22px,2.2vw,30px);line-height:1.4;color:var(--ink);letter-spacing:-.015em}
.feedback-section blockquote footer{font-size:13px;color:var(--secondary);margin-top:20px}
.business-page .feedback-reflection{font-size:15px;line-height:1.8;max-width:66ch}
.finished-work{margin-top:32px}
.finished-work img{width:100%;height:auto;aspect-ratio:4/3;object-fit:contain;filter:none}
.technology-section{display:grid;grid-template-columns:200px minmax(0,1fr);gap:24px 28px;border-top:1px solid var(--line);padding-top:32px}
.technology-section h2{font-size:22px;grid-row:span 2}
.technology-section p{font-size:15px;line-height:1.8;max-width:52ch}
.learning-section{padding-top:40px;border-top:1px solid var(--line)}
.learning-section h2{font-size:clamp(30px,3vw,40px);margin-bottom:28px}
.learning-section>p:not(.section-label){max-width:66ch;font-size:16px;line-height:1.8;margin-top:20px}
.next-step{margin-top:32px;padding-left:24px;border-left:1px solid var(--secondary);max-width:66ch}
.next-step h3{font-size:17px;line-height:1.5;margin-bottom:12px}
.next-step p{font-size:14px;line-height:1.8}
@media(max-width:1100px) and (min-width:801px){.business-intro{grid-template-columns:1fr;gap:28px}.business-intro h1 br{display:none}.business-portrait{max-width:400px}.section-heading{display:block}.section-heading>p{text-align:left;margin-top:12px}.capability-list>div,.technology-section{grid-template-columns:1fr;gap:12px}.technology-section h2{grid-row:auto}.service-section{gap:28px}.service-copy h2 br{display:none}}
@media(max-width:800px){.business-page{padding-top:0}.business-intro{grid-template-columns:1fr;gap:28px}.business-intro h1{font-size:40px;max-width:480px;margin-bottom:24px}.business-intro h1 br{display:none}.business-intro-copy>p{font-size:16px}.business-intro-copy .business-lead{font-size:18px}.business-portrait{max-width:480px}.business-results{gap:16px;margin-top:32px;padding:24px 0}.business-results dd{font-size:32px}.business-results dt{font-size:12px}.business-section{margin-top:48px}.section-heading{display:block}.section-heading>p{text-align:left;margin-top:12px}.business-section h2{font-size:26px}.capability-list>div{grid-template-columns:1fr;gap:12px;padding:24px 0}.capability-list dt{font-size:17px}.capability-list dd{font-size:16px}.service-section{grid-template-columns:1fr;gap:28px;padding-top:32px}.service-copy h2 br{display:none}.interior-photos{max-width:400px;margin-left:0}.condition-controls{margin-top:24px}.business-page .photo-note{max-width:none}.feedback-section{padding-top:32px}.feedback-section blockquote p{font-size:25px}.technology-section{grid-template-columns:1fr;gap:20px;padding-top:32px}.technology-section h2{grid-row:auto}.technology-section p{font-size:16px}.learning-section{padding-top:32px}.learning-section h2{font-size:32px}}
@media(max-width:400px){.business-results{grid-template-columns:1fr 1fr;gap:24px 16px}.business-results>div:last-child{grid-column:1/-1}.business-intro h1{font-size:36px}}

/* Dedicated homes for the Capstone, community experience and reflection. */
.portfolio-page{padding-top:8px}
.portfolio-page p{color:var(--secondary);max-width:66ch}
.portfolio-page .section-label{font-size:13px;line-height:1.5;margin-bottom:20px;color:var(--secondary)}
.portfolio-heading{margin-bottom:40px}
.portfolio-heading h1{font-size:clamp(36px,4vw,52px);line-height:1.12;margin-bottom:24px;max-width:780px}
.portfolio-heading p{font-size:16px;line-height:1.8}
.portfolio-heading .portfolio-lead{font-size:21px;line-height:1.5;color:var(--ink);margin-bottom:20px;max-width:560px}
.portfolio-section{margin-top:48px;padding-top:32px;border-top:1px solid var(--line)}
.portfolio-section h2{font-size:28px;line-height:1.25;margin-bottom:24px}
.portfolio-section h3{font-size:21px;line-height:1.4}
.portfolio-section>p{font-size:16px;line-height:1.8}
.portfolio-section>p+p{margin-top:20px}
.portfolio-section p a{color:var(--ink)}
.portfolio-page .section-heading{margin-bottom:0}
.portfolio-page .section-heading>p{font-size:12px}
.project-overview{display:grid;grid-template-columns:1fr 1fr 1fr;gap:24px;margin:0;padding:24px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.project-overview dt{font-size:12px;color:var(--secondary);margin-bottom:8px}
.project-overview dd{font-size:24px;margin:0;line-height:1.4}
.project-overview+.portfolio-section{border-top:0;padding-top:0}
.model-evidence{margin:32px 0}
.table-scroll{overflow-x:auto;outline-offset:4px}
.model-evidence table{width:100%;border-collapse:collapse;font-size:15px;line-height:1.5;text-align:left}
.model-evidence caption{text-align:left;color:var(--ink);font-size:16px;padding-bottom:20px}
.model-evidence th{font-weight:400}
.model-evidence td,.model-evidence th{padding:16px 16px 16px 0;border-bottom:1px solid var(--line)}
.model-evidence thead th{font-size:12px;color:var(--secondary)}
.model-evidence td:nth-child(2){font-family:'IBM Plex Mono',monospace;font-size:14px;white-space:nowrap;font-variant-numeric:tabular-nums}
.model-evidence td:last-child{color:var(--secondary)}
.model-evidence figcaption{font-size:12px;line-height:1.7;color:var(--secondary);margin-top:16px;max-width:66ch}
.evidence-link{display:inline-block;margin-top:16px;font-size:14px;line-height:1.6}
.collaboration-note{border-left:1px solid var(--secondary);padding-left:24px;margin:28px 0}
.collaboration-note h3{margin-bottom:16px}
.collaboration-note p:not(.section-label){font-size:16px;line-height:1.8}
.community-photo img{height:auto;width:100%;object-fit:contain;filter:none}
.community-photo figcaption{margin-top:12px;color:var(--secondary);font-size:12px;line-height:1.6}
.society-list{margin:28px 0}
.society-list>div{display:grid;grid-template-columns:200px minmax(0,1fr);gap:28px;padding:24px 0;border-top:1px solid var(--line)}
.society-list dt{font-size:17px;line-height:1.6}
.society-list dd{margin:0;color:var(--secondary);font-size:15px;line-height:1.75;max-width:52ch}
.reflection-opening{border-top:0;padding-top:0}
.reflection-pair{display:grid;grid-template-columns:1fr 1fr;gap:40px}
.reflection-pair h3{font-size:20px;margin-bottom:16px}
.reflection-pair p{font-size:15px;line-height:1.8}
.portfolio-page .industry-insight{border-left:1px solid var(--secondary);padding-left:24px;margin-top:32px;font-size:14px;line-height:1.8}
.development-plan{list-style:none;margin:32px 0 0;padding:0;counter-reset:goals}
.development-plan>li{counter-increment:goals;padding:28px 0;border-top:1px solid var(--line)}
.goal-heading{display:flex;justify-content:space-between;align-items:baseline;gap:24px;margin-bottom:16px}
.goal-heading h3{font-size:20px;line-height:1.4}
.goal-heading h3::before{content:counter(goals,decimal-leading-zero) ' / ';font-family:'IBM Plex Mono',monospace;color:var(--secondary);font-size:13px}
.goal-heading span{font-size:12px;color:var(--secondary);text-align:right;max-width:180px}
.development-plan p{font-size:16px;line-height:1.8;max-width:66ch}
.development-plan dl{margin:20px 0 0;padding-left:24px;border-left:1px solid var(--line)}
.development-plan dt{font-size:13px;margin-bottom:8px}
.development-plan dd{font-size:14px;color:var(--secondary);line-height:1.8;margin:0;max-width:60ch}
@media(max-width:1100px){.portfolio-page .section-heading{display:block}.portfolio-page .section-heading>p{text-align:left;margin-top:-12px;margin-bottom:24px}.goal-heading{display:block}.goal-heading span{display:block;text-align:left;max-width:none;margin-top:8px}.society-list>div{grid-template-columns:1fr;gap:12px}.reflection-pair{grid-template-columns:1fr;gap:28px}}
@media(max-width:800px){.portfolio-page{padding-top:0}.portfolio-heading{margin-bottom:32px}.portfolio-heading h1{font-size:38px}.portfolio-heading .portfolio-lead{font-size:19px}.portfolio-section{margin-top:40px;padding-top:28px}.portfolio-section h2{font-size:25px;margin-bottom:20px}.project-overview{grid-template-columns:1fr;gap:20px;padding:24px 0}.project-overview>div{display:flex;justify-content:space-between;align-items:baseline;gap:24px}.project-overview dt{margin:0}.project-overview dd{font-size:20px}.project-overview+.portfolio-section,.reflection-opening{padding-top:0}.model-evidence table{min-width:460px}.portfolio-heading h1 br{display:none}.society-list dd{font-size:16px}}


/* Preserve the source photograph. Crop only its 23px / 25px outer black frame
   in the presentation, using the measured original 2996 by 1399 pixel bounds. */
.training-photo{margin:32px auto;max-width:100%;width:100%}
.training-photo-frame{position:relative;display:block;width:100%;aspect-ratio:2950/1349;overflow:hidden}
.training-photo-frame img{position:absolute;left:-.779661017%;top:-1.853224611%;width:101.559322034%;height:auto;max-width:none;object-fit:initial;filter:none}
.training-photo figcaption{margin-top:16px;text-align:center;font-size:14px;line-height:1.6;color:var(--ink)}
@media(max-width:800px){.training-photo{margin:28px auto}.training-photo figcaption{font-size:13px;margin-top:12px}}
