@font-face{font-family:EB Garamond;src:url(/fonts/EBGaramond-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:EB Garamond;src:url(/fonts/EBGaramond-Italic.ttf) format("truetype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:EB Garamond;src:url(/fonts/EBGaramond-Medium.ttf) format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:EB Garamond;src:url(/fonts/EBGaramond-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:EB Garamond;src:url(/fonts/EBGaramond-SemiBold.ttf) format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:EB Garamond;src:url(/fonts/EBGaramond-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}@font-face{font-family:EB Garamond;src:url(/fonts/EBGaramond-BoldItalic.ttf) format("truetype");font-weight:700;font-style:italic;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/WorkSans-ExtraLight.ttf) format("truetype");font-weight:200;font-style:normal;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/WorkSans-Light.ttf) format("truetype");font-weight:300;font-style:normal;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/WorkSans-Regular.ttf) format("truetype");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/WorkSans-Italic.ttf) format("truetype");font-weight:400;font-style:italic;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/WorkSans-Medium.ttf) format("truetype");font-weight:500;font-style:normal;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/WorkSans-MediumItalic.ttf) format("truetype");font-weight:500;font-style:italic;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/WorkSans-SemiBold.ttf) format("truetype");font-weight:600;font-style:normal;font-display:swap}@font-face{font-family:Work Sans;src:url(/fonts/WorkSans-Bold.ttf) format("truetype");font-weight:700;font-style:normal;font-display:swap}:root{--bg: #0c2833;--bg-raised: #13333f;--bg-sunken: #081e28;--surface: #1a3f4c;--fg: #e6eef0;--fg-muted: #9cb2b9;--fg-subtle: #6a848d;--fg-faint: #3f5560;--rule: #1f3c47;--rule-strong: #3a5966;--accent: #b8ccd4;--accent-hover: #d6e2e8;--accent-wash: #2c4a55;--secondary: #a8b894;--secondary-hover: #c4d2b0;--ember: #e0a58a;--ember-hover: #ecb89f;--ember-wash: #5c3a2a;--selection-bg: #2c4a55;--selection-fg: #e6eef0}:root{--font-serif: "EB Garamond", "Hoefler Text", "Garamond", "Apple Garamond", serif;--font-sans: "Work Sans", -apple-system, "Helvetica Neue", "Segoe UI", system-ui, sans-serif;--font-mono: ui-monospace, "SF Mono", "Menlo", "Consolas", monospace;--font-display: var(--font-serif);--font-body: var(--font-sans);--step--2: .75rem;--step--1: .875rem;--step-0: 1rem;--step-1: 1.125rem;--step-2: 1.375rem;--step-3: 1.75rem;--step-4: 2.25rem;--step-5: 3rem;--step-6: 4.5rem;--step-7: 6rem;--weight-serif-regular: 400;--weight-serif-medium: 500;--weight-serif-semibold: 600;--weight-serif-bold: 700;--weight-sans-light: 300;--weight-sans-regular: 400;--weight-sans-medium: 500;--weight-sans-semibold: 600;--leading-tight: 1.15;--leading-snug: 1.3;--leading-normal: 1.55;--leading-loose: 1.75;--tracking-tighter: -.02em;--tracking-tight: -.01em;--tracking-normal: 0;--tracking-wide: .04em;--tracking-wider: .12em;--space-1: .25rem;--space-2: .5rem;--space-3: .75rem;--space-4: 1rem;--space-5: 1.5rem;--space-6: 2rem;--space-7: 3rem;--space-8: 4rem;--space-9: 6rem;--space-10: 8rem;--space-11: 12rem;--measure: 60ch;--measure-wide: 72ch;--content-max: 42rem;--page-max: 64rem;--radius-none: 0;--radius-sm: 2px;--radius-md: 3px;--radius-pill: 999px;--border-hairline: 1px solid var(--rule);--border-strong: 1px solid var(--rule-strong);--shadow-none: none;--shadow-sm: 0 1px 0 0 var(--rule);--shadow-md: 0 1px 2px 0 rgba(42, 38, 32, .06);--shadow-focus: 0 0 0 3px rgba(184, 204, 212, .38);--ease-standard: cubic-bezier(.4, 0, .2, 1);--ease-out: cubic-bezier(0, 0, .2, 1);--dur-fast: .12s;--dur-base: .2s;--dur-slow: .32s;--door-rotate: -10deg;--door-translate: 12px;--door-duration: .38s;--door-ease: cubic-bezier(.2, .8, .2, 1)}html{background:var(--bg);color:var(--fg);font-family:var(--font-body);font-size:16px;line-height:var(--leading-normal);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{margin:0;font-weight:var(--weight-sans-regular)}::selection{background:var(--selection-bg);color:var(--selection-fg)}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);color:var(--fg);font-weight:var(--weight-serif-regular);line-height:var(--leading-snug);letter-spacing:var(--tracking-tight);margin:0;text-wrap:balance}h1{font-size:var(--step-5);line-height:var(--leading-tight);letter-spacing:var(--tracking-tighter)}h2{font-size:var(--step-4);line-height:var(--leading-tight)}h3{font-size:var(--step-3)}h4{font-size:var(--step-2);font-weight:var(--weight-serif-medium)}h5{font-size:var(--step-1);font-weight:var(--weight-serif-medium)}h6{font-size:var(--step--1);font-family:var(--font-body);font-weight:var(--weight-sans-medium);text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--fg-muted)}p{margin:0 0 var(--space-4);max-width:var(--measure);text-wrap:pretty}a{color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent-wash);text-decoration-thickness:1px;text-underline-offset:.2em;transition:color var(--dur-fast) var(--ease-standard),text-decoration-color var(--dur-fast) var(--ease-standard)}a:hover{color:var(--accent-hover);text-decoration-color:var(--accent)}a:focus-visible{outline:none;box-shadow:var(--shadow-focus);border-radius:var(--radius-sm)}em,i{font-style:italic}strong,b{font-weight:var(--weight-sans-semibold)}code,kbd,samp,pre{font-family:var(--font-mono);font-size:.9em;background:var(--bg-sunken);padding:.1em .35em;border-radius:var(--radius-sm)}hr{border:0;border-top:var(--border-hairline);margin:var(--space-7) 0}.eyebrow{font-family:var(--font-body);font-size:var(--step--1);font-weight:var(--weight-sans-medium);text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--fg-subtle)}.lede{font-family:var(--font-display);font-size:var(--step-2);font-weight:var(--weight-serif-regular);line-height:var(--leading-normal);color:var(--fg-muted);max-width:var(--measure-wide)}.page{max-width:var(--page-max);margin:0 auto;padding:0 var(--space-6)}.nav{display:flex;align-items:baseline;justify-content:space-between;padding:var(--space-6) 0 var(--space-5);border-bottom:1px solid var(--rule)}.nav-mark{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:26px;color:var(--fg);text-decoration:none;letter-spacing:-.01em}.nav-links{display:flex;gap:var(--space-6)}.nav-link{font-family:var(--font-body);font-size:15px;color:var(--fg-muted);text-decoration:none;background:transparent;border:0;padding:0 0 2px;cursor:pointer;border-bottom:1px solid transparent;transition:color var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard)}.nav-link:hover,.nav-link:focus-visible{color:var(--accent);border-bottom-color:var(--accent-wash);outline:none}.nav-link.active{color:var(--fg);border-bottom-color:var(--accent-wash)}.hero{padding:var(--space-7) 0 0;display:flex;flex-direction:column;align-items:center;text-align:center}.hero+.section{padding-top:var(--space-6)}.hero-shrine{margin-top:var(--space-5);width:100%;display:flex;justify-content:center}.hero-shrine .shrine{width:100%;height:auto;cursor:default;user-select:none;display:block}.hero-wordmark{font-family:var(--font-display);font-style:italic;font-weight:500;font-size:clamp(64px,10vw,112px);line-height:1;letter-spacing:-.03em;color:var(--ember);margin:0 0 var(--space-6)}.hero-lede{font-family:var(--font-display);font-weight:400;font-size:var(--step-2);line-height:1.5;color:var(--fg-muted);max-width:38ch;margin:0 0 var(--space-7)}.hero-lede em{color:var(--fg);font-style:italic}.hero-cta{display:inline-block;font-family:var(--font-body);font-size:15px;font-weight:500;color:var(--accent);text-decoration:none;border-bottom:1px solid var(--accent-wash);padding-bottom:2px;transition:color var(--dur-fast),border-color var(--dur-fast)}.hero-cta:hover{color:var(--accent-hover);border-bottom-color:var(--accent)}.hero-cta .arrow{display:inline-block;transition:transform var(--dur-base) var(--ease-out);margin-left:6px}.hero-cta:hover .arrow{transform:translate(3px)}.section{padding:var(--space-9) 0}.section+.section{border-top:1px solid var(--rule)}.section:has(+.footer){padding-bottom:var(--space-6)}.nav+.section{padding-top:var(--space-6)}.section-eyebrow{display:inline-flex;align-items:center;gap:.5em;font-family:var(--font-body);font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--fg-subtle);margin:0 0 var(--space-4)}.section-eyebrow-icon{width:1.25em;height:1.25em}.section-title-icon{width:1em;height:1em;flex-shrink:0;color:var(--accent)}.section-centered .section-title{justify-content:center;margin-bottom:var(--space-5)}.section-centered .section-eyebrow{justify-content:center}.section-title{display:flex;align-items:center;gap:.4em;font-family:var(--font-display);font-weight:500;font-size:var(--step-4);line-height:1.1;letter-spacing:-.01em;color:var(--fg);margin:0 0 var(--space-7);text-wrap:balance}.project-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--space-4)}.project-card{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-5) var(--space-5);border:1px solid var(--rule);background:var(--bg-raised);text-decoration:none;color:inherit;transition:border-color var(--dur-base) var(--ease-out),background var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out)}.project-card[hidden]{display:none}.project-card:hover,.project-card:focus-visible{border-color:var(--accent-wash);background:var(--bg-sunken);transform:translate(4px);outline:none}.project-card-head{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}.project-num{font-family:var(--font-display);color:var(--ember);font-size:14px}.project-title{font-family:var(--font-display);font-weight:500;font-size:var(--step-3);color:var(--fg);line-height:1.2}.project-title .project-subtitle{color:var(--fg-muted);font-weight:400;font-size:.78em;margin-left:.4em}.project-card-body{font-family:var(--font-body);font-size:15px;line-height:1.55;color:var(--fg-muted);margin:0;flex:1}.project-card-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);flex-wrap:wrap}.project-tags{display:flex;gap:6px;flex-wrap:wrap;font-family:var(--font-body);font-size:11px;text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--fg-subtle)}.project-tags span{padding:2px 8px;border:1px solid var(--rule);border-radius:var(--radius-sm)}.project-status{font-family:var(--font-display);font-size:14px;color:var(--fg-subtle);white-space:nowrap}.projects-filter{display:grid;grid-template-columns:1fr auto;gap:var(--space-4);align-items:center;margin-bottom:var(--space-6)}.projects-filter-search{display:flex;align-items:center;position:relative}.projects-filter-search input[type=search]{width:100%;padding:10px 14px;background:var(--bg-raised);color:var(--fg);border:1px solid var(--rule);border-radius:var(--radius-md);font-family:var(--font-body);font-size:15px;line-height:1.4;transition:border-color var(--dur-fast),background var(--dur-fast)}.projects-filter-search input[type=search]::placeholder{color:var(--fg-faint)}.projects-filter-search input[type=search]:focus{outline:none;border-color:var(--accent-wash);background:var(--bg-sunken);box-shadow:var(--shadow-focus)}.projects-filter-sort{display:inline-flex;align-items:center;gap:var(--space-3)}.projects-filter-label{font-family:var(--font-body);font-size:var(--step--2);font-weight:var(--weight-sans-medium);text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--fg-subtle)}.projects-filter-sort select{padding:9px 14px;background:var(--bg-raised);color:var(--fg);border:1px solid var(--rule);border-radius:var(--radius-md);font-family:var(--font-body);font-size:14px;cursor:pointer;transition:border-color var(--dur-fast),background var(--dur-fast)}.projects-filter-sort select:focus,.projects-filter-sort select:hover{outline:none;border-color:var(--accent-wash);background:var(--bg-sunken)}.projects-filter-empty{grid-column:1 / -1;margin:0;font-family:var(--font-display);color:var(--fg-muted);text-align:center;padding:var(--space-5) 0}@media(max-width:540px){.projects-filter{grid-template-columns:1fr}}.project-card-placeholder{background:transparent;border-style:dashed;cursor:default}.project-card-placeholder:hover,.project-card-placeholder:focus-visible{background:transparent;border-color:var(--rule);transform:none}.project-card-placeholder .project-num,.project-card-placeholder .project-title{color:var(--fg-faint);font-weight:400}.project-card-placeholder .project-card-body{color:var(--fg-faint)}.project-list-cta{margin-top:var(--space-6);display:flex;justify-content:flex-end}.section-flush-footer{padding-bottom:var(--space-7)!important}.section-flush-footer .project-list-cta{margin-top:var(--space-4)}.section-flush-footer+.footer{padding-top:var(--space-7);padding-bottom:var(--space-7)}.project-list-cta-link{display:inline-flex;align-items:center;gap:6px;font-family:var(--font-body);font-size:15px;font-weight:500;color:var(--accent);text-decoration:none;transition:color var(--dur-fast)}.project-list-cta-link:hover,.project-list-cta-link:focus-visible{color:var(--accent-hover);outline:none}.project-list-cta-link .arrow{transition:transform var(--dur-base) var(--ease-out)}.project-list-cta-link:hover .arrow,.project-list-cta-link:focus-visible .arrow{transform:translate(4px)}@media(max-width:720px){.project-list{grid-template-columns:1fr}.project-list-cta{justify-content:center}}.prose{max-width:60ch;font-family:var(--font-body);font-size:17px;line-height:var(--leading-loose);color:var(--fg)}.prose p{margin:0 0 var(--space-5)}.prose p+p{margin-top:0}.prose a:not(.project-list-cta-link){color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent-wash);text-underline-offset:.2em}.prose a:not(.project-list-cta-link):hover{color:var(--accent-hover);text-decoration-color:var(--accent)}.prose em{font-family:var(--font-display);font-style:italic;font-size:1.05em}.about-grid{display:grid;grid-template-columns:1fr 1.6fr;gap:var(--space-8);max-width:68rem}.about-aside dt{font-family:var(--font-body);font-size:12px;font-weight:500;text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--fg-subtle);margin-top:var(--space-5);padding-top:var(--space-5);border-top:1px solid var(--rule)}.about-aside dt:first-child{margin-top:0;padding-top:0;border-top:0}.about-aside dd{font-family:var(--font-body);font-size:15px;color:var(--fg);margin:var(--space-3) 0 0}.contact-list{list-style:none;padding:0;margin:0;max-width:38rem;perspective:1200px;perspective-origin:50% 50%}.contact-item{position:relative;z-index:1;display:block;background:var(--bg-raised);border-top:1px solid var(--rule);transform-style:preserve-3d;transform-origin:left center;transform:rotateY(0) translateZ(0);transition:transform var(--door-duration) var(--door-ease),box-shadow var(--door-duration) var(--door-ease),background var(--door-duration) var(--door-ease);box-shadow:0 0 0 0 transparent;backface-visibility:hidden}.contact-item:last-child{border-bottom:1px solid var(--rule)}.contact-item:hover,.contact-item:focus-within{z-index:2;transform:rotateY(var(--door-rotate)) translateZ(var(--door-translate));background:var(--surface);box-shadow:-16px 14px 36px #00000073,inset 2px 0 #b8ccd41a}.contact-item a{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-5);padding:var(--space-4) var(--space-5) var(--space-4) var(--space-4);text-decoration:none;color:inherit}.contact-item a:focus{outline:none}.contact-item a:focus-visible{box-shadow:inset 0 0 0 2px var(--accent)}.contact-kind{font-family:var(--font-body);font-size:13px;color:var(--fg-subtle);text-transform:uppercase;letter-spacing:var(--tracking-wide);display:inline-flex;align-items:center;gap:var(--space-2);flex-shrink:0}.contact-kind svg{width:16px;height:16px;color:var(--fg-muted);transition:color var(--door-duration) var(--door-ease)}.contact-item:hover .contact-kind svg,.contact-item:focus-within .contact-kind svg{color:var(--ember)}.contact-value{font-family:var(--font-display);font-size:var(--step-2);color:var(--accent);text-align:right;word-break:break-all;min-width:0;transition:color var(--door-duration) var(--door-ease)}.contact-item:hover .contact-value,.contact-item:focus-within .contact-value{color:var(--accent-hover)}@media(prefers-reduced-motion:reduce){.contact-item{transition:background .2s linear,box-shadow .2s linear}.contact-item:hover,.contact-item:focus-within{transform:none;box-shadow:inset 2px 0 0 var(--ember)}}@media(hover:none){.contact-item:hover{transform:none;box-shadow:none;background:var(--bg-raised)}.contact-item:hover .contact-kind svg{color:var(--fg-muted)}.contact-item:hover .contact-value{color:var(--accent)}}@media(max-width:36rem){.contact-item a{flex-direction:column;align-items:flex-start;gap:var(--space-2)}.contact-value{text-align:left;font-size:var(--step-1)}}.footer{padding:var(--space-6) 0 var(--space-7);border-top:1px solid var(--rule);display:flex;justify-content:space-between;align-items:baseline;font-family:var(--font-body);font-size:13px;color:var(--fg-subtle)}.footer a{color:var(--fg-muted);text-decoration:none}.footer a:hover{color:var(--accent)}.footer-ornament{opacity:.4;color:var(--fg-subtle);display:inline-flex}.footer-ornament .icon{width:24px;height:24px}.back-link{font-family:var(--font-body);font-size:14px;color:var(--fg-muted);text-decoration:none;background:transparent;border:0;cursor:pointer;padding:0;margin-bottom:var(--space-5);display:inline-block}.back-link:hover{color:var(--accent)}.detail-ctas{display:flex;gap:var(--space-4);margin-top:var(--space-7);flex-wrap:wrap}.btn{display:inline-block;font-family:var(--font-body);font-size:14px;font-weight:500;padding:12px 22px;border-radius:var(--radius-sm);text-decoration:none;transition:background var(--dur-fast),color var(--dur-fast);cursor:pointer}.btn-primary{background:var(--accent);color:var(--bg-raised);border:0}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{background:transparent;color:var(--fg);border:1px solid var(--rule-strong)}.btn-ghost:hover{background:var(--bg-sunken)}.icon{width:1em;height:1em;display:inline-block;vertical-align:-.125em;flex-shrink:0}.hearth{--base-dur: 5.4s;display:block;color:var(--accent);position:relative;user-select:none;cursor:pointer}.hearth:focus-visible{outline:none;box-shadow:var(--shadow-focus);border-radius:4px}.hearth .flame-group{transition:opacity .6s cubic-bezier(.4,0,.2,1),transform .6s cubic-bezier(.4,0,.2,1);transform-box:fill-box;transform-origin:center bottom}.hearth.is-lit .flame-group{opacity:1;transform:scale(1)}.hearth.is-dim .flame-group{opacity:.85;transform:scale(.55)}.hearth.is-out .flame-group{opacity:0;transform:scale(.4)}.hearth .flame{transform-box:fill-box;transform-origin:center bottom;animation:flame-breath 4.2s cubic-bezier(.4,0,.2,1) infinite}.hearth .flame-inner{transform-box:fill-box;transform-origin:center bottom;animation:flame-flicker 2.2s cubic-bezier(.4,0,.2,1) infinite}.hearth.is-dim .flame{animation-duration:6s}.hearth.is-dim .flame-inner{animation-duration:3.2s}@keyframes flame-breath{0%{transform:scaleY(1) rotate(-.5deg)}30%{transform:scaleY(1.025) rotate(.4deg)}50%{transform:scaleY(1.04) rotate(.7deg)}72%{transform:scaleY(1.02) rotate(.2deg)}to{transform:scaleY(1) rotate(-.5deg)}}@keyframes flame-flicker{0%{transform:scale(1) translateY(0);opacity:.92}18%{transform:scale(1.01) translateY(-.2px);opacity:.95}35%{transform:scale(1.022) translateY(-.5px);opacity:1}52%{transform:scale(1.008) translateY(-.2px);opacity:.94}68%{transform:scale(1.025) translateY(-.6px);opacity:1}82%{transform:scale(1.012) translateY(-.3px);opacity:.96}to{transform:scale(1) translateY(0);opacity:.92}}.hearth .ember{transform-box:fill-box;transform-origin:center;animation:ember-rise var(--base-dur) cubic-bezier(.3,.1,.4,1) infinite;opacity:0}.hearth.is-lit .ember{animation-play-state:running}.hearth.is-dim .ember{animation-duration:calc(var(--base-dur) * 1.6);animation-play-state:running}.hearth.is-out .ember{animation-play-state:paused;opacity:0!important}.hearth .ember.e1{animation-delay:0ms;--drift: 6px}.hearth .ember.e2{animation-delay:.9s;--drift: -8px}.hearth .ember.e3{animation-delay:1.8s;--drift: 4px}.hearth .ember.e4{animation-delay:2.6s;--drift: -5px}.hearth .ember.e5{animation-delay:3.4s;--drift: 9px}.hearth .ember.e6{animation-delay:4.1s;--drift: -3px}@keyframes ember-rise{0%{opacity:0;transform:translate(0) scale(.6)}12%{opacity:1}60%{opacity:.85;transform:translate(calc(var(--drift) * .6),-22px) scale(1)}to{opacity:0;transform:translate(var(--drift),-42px) scale(.4)}}.hearth .smoke{transform-box:fill-box;transform-origin:center;opacity:0}.hearth.is-out .smoke{animation:smoke-rise 6.8s cubic-bezier(.3,.1,.4,1) infinite}.hearth .smoke.s1{animation-delay:0ms;--sdrift: 8px}.hearth .smoke.s2{animation-delay:2.2s;--sdrift: -6px}.hearth .smoke.s3{animation-delay:4.4s;--sdrift: 4px}@keyframes smoke-rise{0%{opacity:0;transform:translate(0) scale(.8)}20%{opacity:.55}60%{opacity:.32;transform:translate(calc(var(--sdrift) * .5),-28px) scale(1.6)}to{opacity:0;transform:translate(var(--sdrift),-56px) scale(2.4)}}.hearth .log-glow{transition:opacity .6s cubic-bezier(.4,0,.2,1)}.hearth.is-lit .log-glow{opacity:1}.hearth.is-dim .log-glow{opacity:.5}.hearth.is-out .log-glow{opacity:.2}.hearth.is-relighting .log-glow{animation:log-bloom .7s cubic-bezier(.5,0,.2,1) both}@keyframes log-bloom{0%{opacity:.2}30%{opacity:1}to{opacity:1}}@media(prefers-reduced-motion:reduce){.hearth .flame,.hearth .flame-inner,.hearth .ember,.hearth .smoke,.hearth .flame-group,.hearth .log-glow,.hearth.is-relighting .log-glow{animation:none!important;transition:none!important}.hearth.is-lit .ember,.hearth.is-dim .ember{opacity:.85!important}.hearth.is-out .smoke{opacity:.4!important}.hearth.is-out .ember{opacity:0!important}}.shrine{image-rendering:pixelated;image-rendering:crisp-edges}.shrine,.shrine *{outline:none}.shrine .star{transform-box:fill-box;transform-origin:center;transition:transform .24s cubic-bezier(.2,.8,.2,1)}.shrine .star:hover{transform:scale(1.15)}.shrine .star.is-twinkling{animation:shrine-star-twinkle .8s cubic-bezier(.4,0,.2,1)}.shrine .star-hit{cursor:pointer}.shrine .star-rays{opacity:0;transition:opacity .2s}.shrine .star.is-twinkling .star-rays{opacity:1}.shrine .star-glow{animation:shrine-sun-glow 2.4s ease-in-out infinite}@keyframes shrine-sun-glow{0%,to{opacity:0}50%{opacity:.85}}@keyframes shrine-star-twinkle{0%{transform:scale(1) rotate(0)}35%{transform:scale(1.6) rotate(20deg)}70%{transform:scale(1.2) rotate(-10deg)}to{transform:scale(1) rotate(0)}}.shrine .cloud{transform-box:fill-box;transform-origin:center;animation:shrine-cloud-float 5.4s ease-in-out infinite}.shrine .cloud-hit{cursor:pointer}.shrine .cloud.is-puffed .cloud-body{animation:shrine-cloud-puff .6s cubic-bezier(.2,.8,.3,1)}@keyframes shrine-cloud-float{0%,to{transform:translate(8px)}50%{transform:translate(8px,-1.4px)}}@keyframes shrine-cloud-puff{0%{opacity:.55}30%{opacity:1}to{opacity:.55}}.shrine .cloud-bolt{opacity:0}.shrine .cloud.is-puffed .cloud-bolt{animation:shrine-cloud-bolt .6s cubic-bezier(.4,0,.2,1)}@keyframes shrine-cloud-bolt{0%{opacity:0}10%{opacity:1}22%{opacity:0}32%{opacity:1}60%{opacity:.6}to{opacity:0}}@media(prefers-reduced-motion:reduce){.shrine .cloud.is-puffed .cloud-bolt{animation:none;opacity:.7}}.shrine .pillar{transform-box:fill-box;transform-origin:center bottom}.shrine .pillar-hit{cursor:pointer}.shrine .pillar.is-rumbling .pillar-body{animation:shrine-pillar-rumble .75s cubic-bezier(.36,.07,.19,.97)}@keyframes shrine-pillar-rumble{0%,to{transform:translate(0)}10%{transform:translate(-.6px)}25%{transform:translate(.6px)}40%{transform:translate(-.4px)}55%{transform:translate(.4px)}70%{transform:translate(-.2px)}85%{transform:translate(.2px)}}.shrine .flame-group{transform-box:fill-box;transform-origin:center bottom;transition:opacity .5s cubic-bezier(.4,0,.2,1),transform .5s cubic-bezier(.4,0,.2,1)}.shrine.is-lit .flame-group{opacity:1;transform:scale(1)}.shrine.is-dim .flame-group{opacity:.85;transform:scale(.55)}.shrine.is-out .flame-group{opacity:0;transform:scale(.4)}.shrine .flame-flicker{transform-box:fill-box;transform-origin:center bottom;animation:shrine-flame-flicker 1.6s cubic-bezier(.4,0,.2,1) infinite}.shrine.is-out .flame-flicker{animation:none}@keyframes shrine-flame-flicker{0%,to{transform:scaleY(1) scaleX(1)}35%{transform:scaleY(1.1) scaleX(.95)}70%{transform:scaleY(.94) scaleX(1.04)}}.shrine .flame-hit{cursor:pointer}.shrine .altar-glow{transition:opacity .5s cubic-bezier(.4,0,.2,1)}.shrine.is-lit .altar-glow{opacity:.6}.shrine.is-dim .altar-glow{opacity:.3}.shrine.is-out .altar-glow{opacity:0}.shrine .smoke{transform-box:fill-box;transform-origin:center;opacity:0}.shrine.is-out .smoke{animation:shrine-smoke-rise 4.2s cubic-bezier(.3,.1,.4,1) infinite}.shrine .smoke.s2{animation-delay:1.4s}.shrine .smoke.s3{animation-delay:2.8s}@keyframes shrine-smoke-rise{0%{opacity:0;transform:translate(0) scale(.7)}25%{opacity:.5}to{opacity:0;transform:translateY(-10px) scale(1.4)}}@media(prefers-reduced-motion:reduce){.shrine .flame-group{transition:opacity .2s;transform:none!important}.shrine .flame-flicker,.shrine .smoke,.shrine .star.is-twinkling{animation:none!important}.shrine.is-lit .altar-glow{opacity:.6}}.project-spec{margin:var(--space-5) 0 var(--space-7);padding:var(--space-5) 0;border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);display:grid;gap:var(--space-3);grid-template-columns:1fr}.project-spec-row{display:grid;grid-template-columns:110px 1fr;gap:var(--space-3);align-items:baseline;margin:0}.project-spec dt{font-family:var(--font-body);font-size:var(--step--2);font-weight:var(--weight-sans-medium);text-transform:uppercase;letter-spacing:var(--tracking-wider);color:var(--fg-subtle);margin:0}.project-spec dd{font-family:var(--font-display);font-size:var(--step-1);color:var(--fg);margin:0;word-break:break-word}.project-spec dd a{color:var(--accent);text-decoration:underline;text-decoration-color:var(--accent-wash);text-underline-offset:.2em}.project-spec dd a:hover{color:var(--accent-hover);text-decoration-color:var(--accent)}.project-detail-subtitle{color:var(--fg-muted)}.project-stack{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}.project-stack-icon{position:relative;display:inline-flex;width:22px;height:22px;color:var(--fg-muted)}.project-stack-icon .icon{width:22px;height:22px;transition:color var(--dur-fast) var(--ease-standard),filter var(--dur-base) var(--ease-out)}.project-stack-icon:hover{color:var(--accent)}.project-stack-icon:hover .icon{filter:drop-shadow(0 0 4px var(--accent-wash))}.project-stack-icon:after{content:attr(data-tooltip);position:absolute;bottom:calc(100% + 8px);left:50%;transform:translate(-50%) translateY(4px);background:var(--bg-sunken);color:var(--fg);font-family:var(--font-body);font-style:normal;font-size:12px;font-weight:500;padding:4px 8px;border:1px solid var(--rule-strong);border-radius:var(--radius-sm);white-space:nowrap;pointer-events:none;opacity:0;z-index:10;transition:opacity var(--dur-fast) var(--ease-standard),transform var(--dur-fast) var(--ease-out)}.project-stack-icon:hover:after{opacity:1;transform:translate(-50%) translateY(0)}.project-stack-text{font-family:var(--font-display);color:var(--fg-muted);font-size:var(--step-1)}@media(prefers-reduced-motion:reduce){.project-stack-icon .icon,.project-stack-icon:after{transition:none}}.project-socials{display:inline-flex;gap:var(--space-4);align-items:center}.project-social{display:inline-flex;color:var(--fg-muted);text-decoration:none;transition:color var(--dur-fast) var(--ease-standard),transform var(--dur-base) var(--ease-out)}.project-social:hover,.project-social:focus-visible{color:var(--accent);outline:none;transform:translateY(-1px)}.project-social .icon{width:18px;height:18px}@media(prefers-reduced-motion:reduce){.project-social{transition:color var(--dur-fast);transform:none!important}}@media(max-width:540px){.project-spec-row{grid-template-columns:1fr;gap:2px}.project-spec dd{font-size:var(--step-0)}}.back-to-top{position:fixed;right:var(--space-5);bottom:var(--space-5);z-index:50;width:44px;height:44px;display:inline-flex;align-items:center;justify-content:center;background:var(--bg-raised);color:var(--accent);border:1px solid var(--rule-strong);border-radius:var(--radius-md);cursor:pointer;font-size:18px;box-shadow:0 4px 12px -4px #00000073;transition:opacity var(--dur-base) var(--ease-out),transform var(--dur-base) var(--ease-out),background var(--dur-fast) var(--ease-standard),border-color var(--dur-fast) var(--ease-standard),color var(--dur-fast) var(--ease-standard);opacity:1}.back-to-top[hidden]{display:inline-flex;opacity:0;transform:translateY(8px);pointer-events:none}.back-to-top:hover,.back-to-top:focus-visible{background:var(--bg-sunken);border-color:var(--accent-wash);color:var(--accent-hover);outline:none;transform:translateY(-2px)}.back-to-top:focus-visible{box-shadow:var(--shadow-focus)}@media(prefers-reduced-motion:reduce){.back-to-top{transition:opacity .12s;transform:none!important}}@media(prefers-reduced-motion:reduce){*{transition:none!important}}@media(max-width:720px){.about-grid{grid-template-columns:1fr;gap:var(--space-6)}.nav{flex-direction:column;align-items:flex-start;gap:var(--space-3)}.nav-links{gap:var(--space-5)}.hero{padding:var(--space-9) 0 var(--space-8)}}
