:root{--bg:#191816;--surface:#23211e;--cream:#faebd7;--yellow:#7527LFD --cream-faint: #faebd74d;--accent:#5fb3a6;--accent-glow:#5fb3a659;--font-display:"Bebas Neue", sans-serif;--font-body:"Roboto", sans-serif;--frame:0 0 0 5px var(--bg), 0 0 0 7px var(--accent)}body{box-sizing:border-box;background-color:var(--bg);min-height:100vh;font-family:var(--font-body);flex-direction:column;justify-content:center;align-items:center;margin:0;padding:1rem 0;display:flex}a{color:var(--cream);text-transform:uppercase;justify-content:center;align-items:center;display:flex}a:focus-visible{outline:2px solid var(--accent);outline-offset:4px}ul{list-style:none}::selection{background:var(--accent);color:var(--bg)}h1,h2{font-family:var(--font-display);color:var(--cream);text-transform:uppercase;border-radius:0}h1{border-left:.6rem solid var(--accent);padding-left:1rem;font-size:clamp(3.5rem,10vw,6rem)}h2{border-left:.4rem solid var(--accent);padding-left:.8rem;font-size:clamp(2.5rem,7vw,4rem)}p{box-sizing:border-box;width:min(92vw,42rem);color:var(--cream);border-left:2px solid var(--cream-faint);margin:0 0 1.25em;padding-left:1.25rem;font-size:1.15rem;line-height:1.7}p strong{color:var(--accent);font-weight:700}p a{color:var(--accent);text-underline-offset:.2em;text-decoration:underline;text-decoration-thickness:1px;display:inline}p a:hover{text-decoration-thickness:2px}nav{flex-direction:column;justify-content:center;align-items:center;display:flex}nav ul{flex-wrap:wrap;justify-content:center;gap:.25rem 1.75rem;margin:0 0 1rem;padding:0;display:flex}.crumb{font-family:var(--font-display);font-size:2rem;transition:transform .15s}.crumb:hover{transform:scale(1.12)}.crumb a:hover{color:var(--accent)}#three-js-viewer{aspect-ratio:16/9;width:min(92vw,960px)}#three-js-viewer.viewer-banner{aspect-ratio:auto;width:min(92vw,42rem);height:9rem;margin:1rem 0}.post,.project,#three-js-viewer,.responsive-picture{border:2px solid var(--cream);box-shadow:var(--frame);border-radius:.75rem}.post{box-sizing:border-box;background:var(--surface);width:min(92vw,48rem);color:var(--cream);margin:2rem 0 4rem;padding:clamp(1.25rem,4vw,3rem)}.post p{border-left:none;width:auto;margin:0 0 1.4em;line-height:1.75}.post-title{border-left:none;margin:.5rem 0;font-size:clamp(3rem,9vw,5rem);line-height:1}.post-section{font-family:var(--font-display);border-top:1px solid var(--cream-faint);margin:3rem 0 1rem;padding-top:1.5rem;font-size:clamp(2rem,6vw,2.75rem);font-weight:400;line-height:1.1}.post .post-meta{opacity:.7;margin:0;font-size:.95rem}.post .post-subtitle{opacity:.85;font-size:1.3rem;font-style:italic}.post-lead{border-left:.4rem solid var(--accent);font-family:var(--font-display);margin:2rem 0;padding-left:1.25rem;font-size:clamp(1.75rem,5vw,2.25rem);line-height:1.2}.post .post-end{text-align:center;opacity:.85;margin-top:3rem;font-style:italic}.project-list{grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:2rem;width:min(95vw,1200px);margin:2rem 0;padding:0;display:grid}.project{background:var(--surface);color:var(--cream);transition:transform .2s,box-shadow .2s;overflow:hidden}.project:hover{border-color:var(--accent);box-shadow:var(--frame), 0 0 24px var(--accent-glow);transform:translateY(-6px)}.project article{flex-direction:column;height:100%;display:flex}.project p{width:auto}.project-cover{aspect-ratio:16/9;object-fit:cover;width:100%;display:block}.project-name,.project-title,.project-description,.project-details{margin:0;padding:0 1.25rem}.project-name{border-left:none;margin-top:1rem;font-size:2.5rem;line-height:1}.project-title{letter-spacing:.15em;text-transform:uppercase;opacity:.7;border-left:none;margin-top:.25rem;font-size:.9rem}.project-description{border-left:none;margin:1rem 0;font-size:1rem;line-height:1.5}.project-details{border-top:1px solid var(--cream-faint);grid-template-columns:auto 1fr;gap:.4rem 1rem;margin-top:auto;padding-top:1rem;padding-bottom:1.25rem;font-size:.95rem;display:grid}.project-details dt{font-family:var(--font-display);letter-spacing:.08em;opacity:.7;font-size:1.2rem}.project-details dd{margin:0}.responsive-picture{width:min(95vw,1200px);height:auto;margin:2rem 0;display:block}.lead{border-left:.4rem solid var(--accent);width:min(92vw,48rem);margin-bottom:1.75rem;padding-left:1.25rem;font-size:clamp(1.4rem,3.5vw,1.9rem);line-height:1.35}.drop-cap:first-letter{float:left;font-family:var(--font-display);color:var(--accent);padding:.08em .12em 0 0;font-size:4.2em;line-height:.8}.pull-line{width:min(92vw,42rem);font-family:var(--font-display);text-align:center;color:var(--accent);border-left:none;border-top:1px solid var(--cream-faint);border-bottom:1px solid var(--cream-faint);margin:2rem 0;padding:1.25rem 0;font-size:clamp(1.9rem,5vw,2.75rem);line-height:1.15}.home-actions{flex-wrap:wrap;justify-content:center;gap:1rem;margin:1rem 0 3rem;display:flex}.button{border:2px solid var(--cream);font-family:var(--font-display);letter-spacing:.05em;border-radius:.75rem;padding:.6rem 1.5rem;font-size:1.6rem;transition:background .15s,color .15s,border-color .15s}.button:hover{border-color:var(--accent);color:var(--accent)}.button-primary{background:var(--accent);border-color:var(--accent);color:var(--bg)}.button-primary:hover{background:var(--cream);border-color:var(--cream);color:var(--bg)}.hero{text-align:center;width:min(92vw,56rem)}.hero h1{text-wrap:balance;border-left:none;margin:1rem 0 .5rem;padding-left:0;font-size:clamp(3rem,8vw,5rem)}.hero h1:after{content:"";background:var(--accent);width:4rem;height:.35rem;margin:.75rem auto 0;display:block}.hero p{border-left:none;width:auto;max-width:42rem;margin-left:auto;margin-right:auto;padding-left:0}.hero .lead{max-width:48rem}@media (prefers-reduced-motion:no-preference){@view-transition{navigation:auto}::view-transition-old(root){mix-blend-mode:normal;animation:none}::view-transition-new(root){mix-blend-mode:normal;animation:none}::view-transition-old(root){z-index:2;transform-origin:0;backface-visibility:hidden;animation:.9s ease-in-out forwards page-turn}::view-transition-new(root){z-index:1;animation:.9s ease-in-out both page-reveal}@keyframes page-turn{0%{filter:brightness();transform:perspective(2200px)rotateY(0)}to{filter:brightness(.5);transform:perspective(2200px)rotateY(-100deg)}}@keyframes page-reveal{0%{filter:brightness(.5)}to{filter:brightness()}}}@keyframes scale-up{0%{background-color:var(--accent);transform:scaleX(0)}}#progressbar{animation:2.5s linear forwards scale-up}@keyframes grow-progress{0%{transform:scaleX(0)}to{transform:scaleX(1)}}#progress{transform-origin:0;background:red;width:100%;height:1em;animation:linear scale-up;animation-timeline:scroll();position:fixed;top:0;left:0}
