:root{--paper:#f8f6f0;--ink:#292924;--muted:#62625a;--accent:#7c293c;--line:#d9d5cb;--panel:#eeebe2;--max:1080px;color-scheme:light}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--paper);color:var(--ink);font-family:"Segoe UI",Arial,sans-serif;font-size:16px;line-height:1.7}a{color:inherit;text-underline-offset:4px}button{font:inherit}a,button,input,summary{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible,summary:focus-visible{outline:3px solid var(--accent);outline-offset:5px}::selection{background:#ead7dc;color:var(--ink)}.skip-link{position:fixed;left:20px;top:-80px;background:var(--ink);color:var(--paper);padding:10px 16px;z-index:10}.skip-link:focus{top:12px}.site-header{max-width:var(--max);margin:auto;display:flex;align-items:center;justify-content:space-between;gap:26px;min-height:94px;border-bottom:1px solid var(--line)}.brand{display:flex;align-items:center;gap:10px;text-decoration:none;font-weight:600;letter-spacing:-.4px}.brand-mark{font-family:Georgia,serif;color:var(--accent);font-size:30px;line-height:1}nav{display:flex;gap:22px;align-items:center}nav a{font-size:13px;text-decoration:none;min-height:44px;display:inline-flex;align-items:center;border-bottom:1px solid transparent}nav a:hover{border-bottom-color:var(--accent);color:var(--accent)}main,footer{max-width:var(--max);margin:auto}.section{padding:86px 0;border-bottom:1px solid var(--line);scroll-margin-top:24px}.hero{display:grid;grid-template-columns:1fr 270px;gap:70px;align-items:center;padding-top:90px;padding-bottom:90px}.term,.section-number,.project-type,.course-code,.project-index,.margin-note{font-family:Consolas,"Courier New",monospace}.term{font-size:13px;color:var(--muted);margin:0 0 28px}.hero h1{font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:clamp(46px,5.8vw,72px);letter-spacing:-2.5px;line-height:1.07;margin:0 0 28px}.hero h1 em{color:var(--accent);font-weight:400}.introduction{font-size:18px;max-width:580px;margin-bottom:10px;line-height:1.7}.introduction strong{font-weight:600;overflow-wrap:anywhere}.mission{font-size:16px;color:var(--muted);max-width:540px;margin-top:0}.primary-link{display:inline-flex;gap:36px;align-items:center;padding:9px 0;margin-top:20px;color:var(--accent);font-weight:600;text-decoration:none;border-bottom:1px solid var(--accent);min-height:44px}.primary-link:hover{gap:44px}.primary-link span{font-size:20px}.identity{margin:0;text-align:center}.identity img{display:block;width:215px;height:215px;margin:auto}.identity figcaption{font-size:13px;line-height:1.6;margin-top:20px}.identity figcaption span{color:var(--muted);font-size:12px}.split-section{display:grid;grid-template-columns:340px 1fr;gap:80px}.section-number{color:var(--accent);font-size:12px;margin:0 0 16px}.section-heading h2{font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:36px;line-height:1.22;letter-spacing:-1px;margin:0}.body-copy p:first-child{margin-top:0}.body-copy p{margin:0 0 20px}.about-facts{margin:28px 0 0;padding-top:22px;border-top:1px solid var(--line);font-size:14px}.about-facts div{margin-bottom:16px}.about-facts dt{font-weight:600}.about-facts dd{margin:3px 0 0;color:var(--muted)}.wide-heading{display:flex;justify-content:space-between;align-items:flex-end;gap:36px;margin-bottom:38px}.wide-heading>p{max-width:310px;font-size:13px;color:var(--muted);margin:0 0 2px;line-height:1.65}.course-list{border-top:1px solid var(--line)}.course{border-bottom:1px solid var(--line)}summary{cursor:pointer;list-style:none}summary::-webkit-details-marker{display:none}.course summary{display:grid;grid-template-columns:115px 1fr 24px;gap:24px;padding:20px 0;min-height:64px;align-items:center;font-size:16px;line-height:1.5}.course-code{font-size:12px;color:var(--accent)}.disclosure{font-size:24px;line-height:1;color:var(--muted);font-weight:300;text-align:center}.course[open] .disclosure{transform:rotate(45deg)}.course summary:hover{color:var(--accent)}.course-body{margin-left:139px;max-width:730px;padding:0 30px 15px 0;font-size:15px;color:var(--muted)}.course-body p{margin:0 0 14px}.course-body strong{color:var(--ink);font-weight:600}.project h3{font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:28px;letter-spacing:-.6px;line-height:1.25;margin:0 0 18px}.project-type{font-size:11px;color:var(--accent);margin:0 0 14px}.featured-project{display:grid;grid-template-columns:1fr 390px;gap:54px;align-items:start;padding:36px 0 48px}.featured-project h3{font-size:35px}.project p{margin:0 0 16px}.project p.project-type{margin-bottom:14px}.project-features{font-size:14px;padding-left:20px;margin:20px 0}.project-features li{margin:5px 0}.tools{font-size:12px;color:var(--muted);line-height:1.8}.tools strong{font-weight:600;color:var(--ink)}.project-figure{margin:0;padding:24px;background:var(--panel)}.project-figure img{display:block;width:100%;height:auto}.project-figure figcaption{margin-top:16px;font-family:Consolas,"Courier New",monospace;font-size:10px;color:var(--muted);text-align:center}.project-row{display:grid;grid-template-columns:64px 1fr;gap:40px;padding:34px 0;border-top:1px solid var(--line)}.project-index{font-size:13px;color:var(--muted);padding-top:4px}.project-main{max-width:760px}.project-details{font-size:14px;margin-top:18px;max-width:760px}.project-details summary{color:var(--accent);text-decoration:underline;text-underline-offset:4px;min-height:44px;display:flex;align-items:center;gap:12px;font-weight:600}.project-details summary:before{content:"+";font-weight:400;font-size:19px}.project-details[open] summary:before{content:"−"}.project-details p{margin:12px 0}.project-details ul{padding-left:20px}.project-details li{margin:6px 0}.journey-copy h3{font-weight:600;font-size:16px;margin:30px 0 10px}.margin-note{font-size:12px;color:var(--muted);margin-top:24px}.contact-section{display:flex;align-items:flex-end;justify-content:space-between;gap:48px;padding-bottom:72px}.contact-section h2{font-family:Georgia,"Times New Roman",serif;font-weight:400;font-size:36px;letter-spacing:-1px;margin:0 0 22px;line-height:1.25}.contact-section p{font-size:14px;color:var(--muted)}.email-link{font-size:23px;color:var(--accent);overflow-wrap:anywhere}.contact-actions{display:flex;align-items:center;gap:16px;margin-top:20px;min-height:44px;flex-wrap:wrap}.copy-email,.menu-button{background:transparent;border:1px solid var(--line);border-radius:2px;padding:9px 15px;cursor:pointer;font-size:12px;min-height:44px;color:var(--ink)}.copy-email:hover,.menu-button:hover{border-color:var(--accent);color:var(--accent)}#copy-status{font-size:12px;color:var(--muted)}.contact-section .contact-signature{text-align:right;font-size:14px;color:var(--ink);line-height:1.8}.contact-signature span{color:var(--muted);font-size:12px}footer{display:flex;justify-content:space-between;gap:24px;padding:24px 0 30px;font-size:11px;color:var(--muted);align-items:center}footer p{margin:0}footer a{display:inline-flex;align-items:center;min-height:44px;text-decoration:none}.menu-button{display:none}[hidden]{display:none!important}
@media(max-width:1160px){.site-header,main,footer{margin-left:36px;margin-right:36px}nav{gap:16px}.split-section{grid-template-columns:300px 1fr;gap:50px}.hero{gap:40px}}
@media(max-width:820px){.site-header{min-height:80px;flex-wrap:wrap;gap:0;padding:17px 0}.brand{font-size:15px}.menu-button{display:block}.site-header nav{width:100%;justify-content:flex-start;gap:8px 24px;flex-wrap:wrap;padding-top:12px}.site-header nav a{font-size:14px}.hero{grid-template-columns:1fr 180px;gap:26px}.hero h1{font-size:50px}.identity img{width:150px;height:150px}.identity figcaption{font-size:12px}.identity figcaption span{font-size:11px}.split-section{grid-template-columns:1fr;gap:32px}.section{padding:60px 0}.wide-heading{display:block}.wide-heading>p{margin-top:18px;max-width:500px}.featured-project{grid-template-columns:1fr 300px;gap:30px}.project-figure{padding:16px}.course summary{grid-template-columns:95px 1fr 24px;gap:18px}.course-body{margin-left:113px}.contact-section{gap:32px}}
@media(max-width:600px){.site-header,main,footer{margin-left:22px;margin-right:22px}.hero{grid-template-columns:1fr;padding-top:50px;gap:34px}.hero h1{font-size:48px;letter-spacing:-1.8px}.term{font-size:11px;margin-bottom:24px}.introduction{font-size:16px}.mission{font-size:14px}.identity{display:flex;align-items:center;gap:18px;text-align:left}.identity img{width:86px;height:86px;margin:0}.identity figcaption{margin:0}.section-heading h2,.contact-section h2{font-size:31px}.featured-project{grid-template-columns:1fr;padding-top:15px}.featured-project h3{font-size:31px}.project-figure{max-width:380px;width:100%;margin-top:6px}.project-row{grid-template-columns:30px 1fr;gap:15px}.project h3{font-size:25px}.project-row p{font-size:15px}.project-row .tools{font-size:12px}.course summary{grid-template-columns:1fr 24px;gap:5px 12px;font-size:15px;padding:17px 0}.course-code{grid-column:1}.course summary>span:nth-child(2){grid-column:1}.disclosure{grid-column:2;grid-row:1/3}.course-body{margin-left:0;padding:0 24px 14px 0;font-size:14px}.contact-section{display:block}.email-link{font-size:20px}.contact-section .contact-signature{text-align:left;margin-top:36px}.body-copy{font-size:15px}footer{align-items:flex-start;font-size:10px}footer p{max-width:210px}.wide-heading{margin-bottom:28px}}
.device-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start;max-width:390px;width:100%}.screenshot-figure{margin:0;min-width:0}.screenshot-link{display:block;min-height:44px}.screenshot-link img{display:block;width:100%;height:auto;border:1px solid var(--line);border-radius:3px}.screenshot-link:hover img{border-color:var(--accent)}.screenshot-figure figcaption{font-size:11px;color:var(--muted);line-height:1.6;margin-top:9px}.gallery-note{grid-column:1/-1;font-size:11px;color:var(--muted);line-height:1.65;margin:0!important}.landscape-screenshot{margin-top:24px}.landscape-screenshot figcaption{font-size:12px}.identity img{border-radius:50%;object-fit:cover;border:1px solid var(--line)}
@media(max-width:820px){.featured-project{grid-template-columns:1fr}.project-figure{max-width:390px;width:100%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important}}
@media print{body{background:white;color:black}.site-header,.primary-link,.contact-actions,footer,.skip-link{display:none!important}.section{break-inside:avoid;padding:30px 0}.project-row{break-inside:avoid}.hero{padding-top:0}main{margin:0}.course-body{display:block}.project-details>p,.project-details>ul{display:block}details::details-content{display:block}.contact-section{padding-bottom:0}}
