:root{--projects-ink:#16201d;--projects-muted:#5f6b66;--projects-paper:#fbf8f1;--projects-panel:#fffdf8;--projects-line:#d8d1c3;--projects-teal:#187777;--projects-rust:#b44a2f;--projects-gold:#bd8b2d;--projects-green:#587d4f}html{background:var(--projects-paper)}body{background:radial-gradient(circle at 24% 4%,#ffffffb8,#0000 36rem),linear-gradient(#fbf8f1 0%,#f7f1e6 100%)}.projects-index{min-height:100vh;color:var(--projects-ink);padding:18px 18px 58px}.projects-index a{color:inherit}.projects-index__header{gap:16px;max-width:1180px;margin:0 auto 24px;display:grid}.projects-index__breadcrumbs{color:var(--projects-muted);align-items:center;gap:8px;font-size:.9rem;font-weight:650;display:flex}.projects-index__breadcrumbs a{text-decoration:none}.projects-index__breadcrumbs a:hover,.projects-index__breadcrumbs a:focus-visible{color:var(--projects-teal);outline:none}.projects-index__header h1{letter-spacing:0;max-width:760px;margin:0;font-size:clamp(3rem,8vw,6.7rem);line-height:.9}.projects-index__header p{max-width:650px;color:var(--projects-muted);margin:0;font-size:clamp(1.08rem,2.2vw,1.32rem);line-height:1.48}.projects-timeline{grid-template-columns:minmax(0,1fr);align-items:stretch;gap:18px;max-width:1180px;margin:0 auto;display:grid}.timeline-board{border:1px solid var(--projects-line);background:linear-gradient(#fffdf8db,#f8f0dff0),#f8f0df;border-radius:8px;min-width:0;overflow:auto hidden;box-shadow:0 16px 34px #41341f14}.timeline-board__inner{min-width:1120px;height:306px;position:relative}.timeline-year-axis{color:#6d675d;grid-template-columns:repeat(17,minmax(0,1fr));height:54px;display:grid;position:absolute;top:0;left:26px;right:26px}.timeline-year-axis span{border-left:1px solid #1c24221c;align-items:center;padding-left:8px;font-size:.72rem;font-weight:800;display:flex}.timeline-year-axis span:first-child{border-left:0}.timeline-spans{margin:0;padding:0;list-style:none;position:absolute;inset:60px 26px 30px}.timeline-spans:before,.timeline-spans:after{content:"";background:#1c242224;border-radius:999px;height:2px;position:absolute;left:0;right:0}.timeline-spans:before{top:54px}.timeline-spans:after{top:162px}.timeline-spans li{left:var(--timeline-start);top:calc(16px + var(--timeline-lane) * 108px);width:var(--timeline-width);min-width:0;position:absolute}.timeline-spans li:before{background:color-mix(in srgb, var(--project-accent) 22%, transparent);content:"";border-radius:999px;height:34px;position:absolute;top:38px;left:0;right:0}.timeline-span{z-index:1;border:1px solid #1c24222b;border-left:5px solid var(--project-accent);width:100%;height:72px;color:var(--projects-ink);font:inherit;text-align:left;cursor:pointer;background:#fffdf8f7;border-radius:8px;align-content:center;gap:5px;padding:10px 11px;transition:transform .16s,border-color .16s,box-shadow .16s,background-color .16s;display:grid;position:relative;box-shadow:0 10px 24px #41341f14}.timeline-span:hover,.timeline-span:focus-visible,.timeline-span.is-active{border-color:color-mix(in srgb, var(--project-accent) 62%, #1c24222e);background:#fffefa;outline:none;transform:translateY(-3px);box-shadow:0 14px 32px #41341f24}.timeline-span.is-active:after{background:var(--project-accent);content:"";border-radius:999px;width:10px;height:10px;position:absolute;top:-6px;left:50%;transform:translate(-50%)}.timeline-span__title{white-space:normal;min-width:0;font-size:.84rem;font-weight:820;line-height:1.08;overflow:visible}.timeline-span__period{min-width:0;color:var(--projects-muted);white-space:normal;font-size:.74rem;font-weight:700;line-height:1.15;overflow:visible}.timeline-detail{border:1px solid var(--projects-line);background:#fffdf8f5;border-radius:8px;grid-template-columns:minmax(280px,.82fr) minmax(0,1fr);gap:24px;min-height:256px;padding:18px;display:grid;box-shadow:0 16px 34px #41341f17}.timeline-detail__media{align-content:start;gap:8px;min-width:0;margin:0;display:grid}.timeline-detail--text-only{grid-template-columns:minmax(0,740px)}.timeline-detail__media img{aspect-ratio:16/9.2;object-fit:cover;background:#efe7d8;border:1px solid #1c24221f;border-radius:7px;width:100%}.timeline-detail__media figcaption{color:var(--projects-muted);font-size:.82rem;line-height:1.35}.timeline-detail__copy{align-self:center;min-width:0}.timeline-detail__eyebrow{color:var(--projects-rust);letter-spacing:.08em;text-transform:uppercase;margin:0;font-size:.78rem;font-weight:820}.timeline-detail h2{letter-spacing:0;margin:9px 0 8px;font-size:clamp(2rem,3.3vw,2.65rem);line-height:1.02}.timeline-detail__role{color:var(--projects-green);margin:0 0 14px;font-weight:760}.timeline-detail p{color:var(--projects-muted);line-height:1.56}.mobile-project-list{display:none}.projects-index__published{max-width:1180px;margin:34px auto 0}.projects-index__section-heading{border-bottom:1px solid var(--projects-line);margin-bottom:14px;padding-bottom:12px}.projects-index__section-heading h2{margin:0;font-size:1.35rem}.project-card-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:14px;display:grid}.project-card{border:1px solid var(--projects-line);background:#fffdf8e6;border-radius:8px;grid-template-columns:118px minmax(0,1fr);align-items:center;gap:9px 13px;padding:10px;text-decoration:none;transition:transform .16s,box-shadow .16s;display:grid}.project-card:hover,.project-card:focus-visible{outline:none;transform:translateY(-2px);box-shadow:0 14px 32px #41341f24}.project-card img,.project-card__mark{aspect-ratio:1.45;object-fit:cover;background:#efe7d8;border-radius:6px;grid-row:span 2;width:100%}.project-card__mark{color:var(--projects-teal);place-items:center;font-size:1.5rem;font-weight:850;display:grid}.project-card span:not(.project-card__mark){color:var(--projects-rust);letter-spacing:.08em;text-transform:uppercase;align-self:end;font-size:.76rem;font-weight:820}.project-card h3{align-self:start;margin:0;font-size:1.18rem;line-height:1.12}@media (width<=900px){.timeline-detail{grid-template-columns:minmax(220px,.76fr) minmax(0,1fr)}.projects-index{padding:18px 16px 44px}.projects-index__header{gap:14px;margin-bottom:22px}.projects-index__breadcrumbs{font-size:.86rem}.projects-index__header h1{font-size:clamp(2.6rem,15vw,4.6rem)}.projects-index__header p{font-size:1.03rem;line-height:1.52}.timeline-board,.timeline-detail{display:none}.mobile-project-list{border:1px solid var(--projects-line);background:#fffdf8b8;border-radius:8px;margin:0;padding:0;list-style:none;display:grid;overflow:hidden}.mobile-project{border-bottom:1px solid var(--projects-line);background:#fffdf8d1;position:relative}.mobile-project-list>li:last-child .mobile-project{border-bottom:0}.mobile-project:before{background:var(--project-accent);content:"";border-radius:999px;width:4px;position:absolute;top:14px;bottom:14px;left:0}.mobile-project.is-active{box-shadow:inset 0 0 0 1px var(--project-accent)}.mobile-project__summary{width:100%;min-height:84px;color:inherit;font:inherit;text-align:left;cursor:pointer;background:0 0;border:0;grid-template-columns:minmax(76px,.42fr) minmax(0,1fr) 14px;align-items:center;gap:10px;padding:12px 14px 12px 18px;display:grid}.mobile-project__summary:focus-visible{outline:2px solid var(--project-accent);outline-offset:-3px}.mobile-project__period{color:#46504c;font-size:.92rem;font-weight:700;line-height:1.3}.mobile-project__title{min-width:0;color:var(--projects-ink);font-size:clamp(1.06rem,5.1vw,1.35rem);font-weight:850;line-height:1.08}.mobile-project__chevron{border-bottom:2px solid #46504c;border-right:2px solid #46504c;width:10px;height:10px;transform:rotate(-45deg)}.mobile-project.is-active .mobile-project__chevron{transform:rotate(45deg)}.mobile-project__expanded{gap:13px;padding:0 18px 18px;display:grid}.mobile-project__hero{aspect-ratio:16/9.5;object-fit:cover;border:1px solid #1c24221f;border-radius:7px;width:100%}.mobile-project__role,.mobile-project__expanded p{margin:0}.mobile-project__role{color:var(--projects-green);font-weight:760;line-height:1.35}.mobile-project__expanded p{color:var(--projects-muted);line-height:1.5}.projects-index__published{margin-top:30px}.project-card-grid{grid-template-columns:1fr}}@media (prefers-reduced-motion:reduce){.timeline-span,.project-card{transition:none}}
