.portfolio-page{position:relative}.section{position:relative;width:100%;padding:var(--section-padding-y) var(--section-padding-x)}.section-inner{width:100%;max-width:var(--max-width);margin:0 auto}.section-number{font-family:var(--font-heading);font-size:clamp(.875rem,1.2vw,1rem);font-weight:300;color:var(--color-text-muted);letter-spacing:.1em;margin-bottom:.5rem}.section-heading{font-family:var(--font-heading);font-size:clamp(2rem,5vw,3.5rem);font-weight:700;color:var(--color-text);letter-spacing:-.02em;text-transform:uppercase;margin-bottom:1rem}.dot-target{color:transparent;pointer-events:none;user-select:none}.section-rule{width:100%;height:1px;background:var(--color-border);border:none;margin-bottom:clamp(2rem,4vw,3.5rem)}.hero{min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding:var(--section-padding-x);position:relative}.hero-inner{width:100%;max-width:var(--max-width);margin:0 auto}.hero-name{font-family:var(--font-heading);font-size:clamp(4rem,15vw,12rem);font-weight:700;line-height:.9;letter-spacing:-.04em;text-transform:uppercase;color:var(--color-text);margin:0}.hero-name-line{display:block;overflow:hidden}.hero-name-letter{display:inline-block}.hero-period{color:var(--color-accent);transition:opacity .4s ease}.hero-subtitle{font-family:var(--font-body);font-size:clamp(1rem,2vw,1.25rem);font-weight:400;color:var(--color-text-muted);margin-top:clamp(1.5rem,3vw,2.5rem);max-width:45ch;line-height:1.6}.hero-scroll{position:absolute;bottom:clamp(1.5rem,3vw,2.5rem);left:50%;transform:translate(-50%);display:flex;flex-direction:column;align-items:center;gap:.5rem}.hero-scroll-text{font-family:var(--font-heading);font-size:.6875rem;font-weight:500;letter-spacing:.3em;text-transform:uppercase;color:var(--color-text-muted)}.hero-scroll-arrow{font-size:1.25rem;color:var(--color-accent);animation:bounce-arrow 1.8s cubic-bezier(.16,1,.3,1) infinite}@keyframes bounce-arrow{0%,to{transform:translateY(0);opacity:1}50%{transform:translateY(8px);opacity:.5}}.hero-scroll-line{width:1px;height:40px;background:linear-gradient(to bottom,var(--color-accent),transparent)}.hover-row{position:relative;transition:padding-left .3s cubic-bezier(.16,1,.3,1)}.hover-row:before{content:"";position:absolute;left:0;top:0;bottom:0;width:0;background:var(--color-accent);transition:width .3s cubic-bezier(.16,1,.3,1)}.hover-row:hover:before{width:3px}.hover-row:hover{padding-left:1.25rem}.project-list{list-style:none}.project-row{display:flex;flex-direction:column;gap:.5rem;padding:clamp(1rem,2vw,1.5rem) 0;border-bottom:1px solid var(--color-border);cursor:default}@media(min-width:768px){.project-row{flex-direction:row;align-items:baseline;justify-content:space-between;gap:2rem}}.project-name{font-family:var(--font-heading);font-size:clamp(1.125rem,2.5vw,1.5rem);font-weight:500;color:var(--color-text);letter-spacing:-.01em;transition:color .3s ease;flex-shrink:0}.project-row:hover .project-name{color:var(--color-accent)}.project-tech{font-family:var(--font-body);font-size:.75rem;font-weight:500;color:var(--color-text);letter-spacing:.04em;white-space:nowrap;background:var(--color-surface);border:1px solid var(--color-border);padding:.25rem .75rem;border-radius:0;transition:border-color .3s ease}.project-row:hover .project-tech{border-color:var(--color-accent)}.project-desc{font-family:var(--font-body);font-size:.875rem;color:var(--color-text-muted);line-height:1.6;max-width:55ch}@media(min-width:768px){.project-row{flex-wrap:wrap}.project-desc{flex-basis:100%;margin-top:.25rem}}.other-heading{font-family:var(--font-heading);font-size:clamp(.875rem,1.2vw,1rem);font-weight:500;color:var(--color-text-muted);letter-spacing:.1em;text-transform:uppercase;margin-top:clamp(2.5rem,4vw,4rem);margin-bottom:1rem}.compact-row{display:flex;flex-direction:column;gap:.25rem;padding:clamp(.75rem,1.5vw,1rem) 0;border-bottom:1px solid var(--color-border)}.compact-row:hover:before{width:2px}@media(min-width:768px){.compact-row{flex-direction:row;align-items:baseline;justify-content:space-between;gap:2rem}}.compact-name{font-family:var(--font-heading);font-size:clamp(.9375rem,1.5vw,1.125rem);font-weight:500;color:var(--color-text);transition:color .3s ease}.compact-row:hover .compact-name{color:var(--color-accent)}.compact-tech{font-family:var(--font-body);font-size:.6875rem;font-weight:500;color:var(--color-text);letter-spacing:.04em;background:var(--color-surface);border:1px solid var(--color-border);padding:.1875rem .625rem;transition:border-color .3s ease}.compact-row:hover .compact-tech{border-color:var(--color-accent)}.about-grid{display:flex;flex-direction:column;gap:clamp(2.5rem,5vw,4rem)}@media(min-width:768px){.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(3rem,6vw,6rem);align-items:start}}.about-col-left{display:flex;flex-direction:column;gap:clamp(1.5rem,3vw,2rem)}.about-col-right{display:flex;flex-direction:column;gap:clamp(2rem,4vw,2.5rem)}.about-name{font-family:var(--font-heading);font-size:clamp(2rem,5vw,3rem);font-weight:700;letter-spacing:-.02em;color:var(--color-text);border:2px solid var(--color-border);padding:.75rem 1.25rem;display:inline-block;transition:border-color .3s ease,color .3s ease}.about-name:hover{border-color:var(--color-accent);color:var(--color-accent)}.about-bio{font-family:var(--font-body);font-size:clamp(1rem,1.8vw,1.125rem);color:var(--color-text-muted);line-height:1.7;max-width:55ch}.about-stats{display:flex;gap:clamp(2rem,4vw,3rem)}.about-stat{display:flex;flex-direction:column;gap:.25rem}.about-stat-number{font-family:var(--font-heading);font-size:clamp(2.5rem,5vw,3.5rem);font-weight:700;letter-spacing:-.03em;color:var(--color-text);line-height:1}.about-stat-label{font-family:var(--font-heading);font-size:.75rem;font-weight:400;color:var(--color-text-muted);letter-spacing:.08em;text-transform:uppercase}.focus-list{display:flex;flex-wrap:wrap;gap:.75rem}.focus-item{font-family:var(--font-heading);font-size:.8125rem;font-weight:500;color:var(--color-text);letter-spacing:.03em;padding:.5rem 1.25rem;border:1px solid var(--color-border);transition:border-color .3s ease,color .3s ease}.focus-item:hover{border-color:var(--color-accent);color:var(--color-accent)}.about-stack{display:flex;flex-direction:column;gap:.75rem}.about-stack-label{font-family:var(--font-heading);font-size:.75rem;font-weight:500;color:var(--color-text-muted);letter-spacing:.1em;text-transform:uppercase}.about-stack-items{display:flex;flex-wrap:wrap;gap:.5rem}.about-stack-item{font-family:var(--font-heading);font-size:.8125rem;font-weight:500;color:var(--color-text);letter-spacing:.04em;padding:.5rem 1.25rem;background:var(--color-surface);border:1px solid var(--color-border);transition:border-color .3s ease,background .3s ease}.about-stack-item:hover{border-color:var(--color-accent);background:#ff333314}.writing-list{list-style:none}.writing-row{display:flex;flex-direction:column;gap:.5rem;padding:clamp(1rem,2vw,1.25rem) 0;border-bottom:1px solid var(--color-border);text-decoration:none;color:inherit}@media(min-width:768px){.writing-row{flex-direction:row;align-items:baseline;gap:2rem}}.writing-date{font-family:var(--font-heading);font-size:.8125rem;font-weight:400;color:var(--color-text-muted);letter-spacing:.05em;flex-shrink:0;min-width:7ch}.writing-title{font-family:var(--font-heading);font-size:clamp(1rem,2vw,1.25rem);font-weight:500;color:var(--color-text);flex:1;transition:color .3s ease}.writing-row:hover .writing-title{color:var(--color-accent)}.writing-arrow{font-size:1.25rem;color:var(--color-text-muted);transition:transform .3s ease,color .3s ease;margin-left:auto;display:none}@media(min-width:768px){.writing-arrow{display:block}}.writing-row:hover .writing-arrow{transform:translate(6px);color:var(--color-accent)}.writing-view-all{display:inline-flex;align-items:center;gap:.5rem;margin-top:clamp(1.5rem,3vw,2rem);font-family:var(--font-heading);font-size:.875rem;font-weight:500;color:var(--color-text-muted);letter-spacing:.05em;text-decoration:none;transition:color .3s ease,gap .3s ease}.writing-view-all:hover{color:var(--color-accent);gap:.75rem}.side-project-list{list-style:none}.side-project-row{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding:clamp(1.25rem,2.5vw,1.75rem) 0;border-bottom:1px solid var(--color-border);text-decoration:none;color:inherit}.side-project-info{display:flex;flex-direction:column;gap:.375rem}.side-project-name{font-family:var(--font-heading);font-size:clamp(1.125rem,2.5vw,1.5rem);font-weight:500;color:var(--color-text);letter-spacing:-.01em;transition:color .3s ease}.side-project-row:hover .side-project-name{color:var(--color-accent)}.side-project-desc{font-family:var(--font-body);font-size:.875rem;color:var(--color-text-muted);line-height:1.6;max-width:55ch}.side-project-arrow{font-size:1.25rem;color:var(--color-text-muted);transition:transform .3s ease,color .3s ease;flex-shrink:0}.side-project-row:hover .side-project-arrow{transform:translate(6px);color:var(--color-accent)}.contact-cta{font-family:var(--font-heading);font-size:clamp(2.5rem,8vw,5rem);font-weight:700;line-height:.95;letter-spacing:-.03em;text-transform:uppercase;color:var(--color-text);margin-bottom:clamp(2rem,4vw,3rem)}.contact-period{color:var(--color-accent);opacity:0;transition:opacity .25s ease}.contact-links{display:flex;flex-wrap:wrap;gap:clamp(1.5rem,3vw,2.5rem)}.contact-link{font-family:var(--font-heading);font-size:clamp(1rem,1.5vw,1.125rem);font-weight:500;color:var(--color-text-muted);text-decoration:none;position:relative;letter-spacing:.02em;transition:color .3s ease}.contact-link:after{content:"";position:absolute;bottom:-2px;left:0;width:0;height:1px;background:var(--color-accent);transition:width .3s cubic-bezier(.16,1,.3,1)}.contact-link:hover,.contact-link.is-highlighted{color:var(--color-accent)}.contact-link:hover:after,.contact-link.is-highlighted:after{width:100%}.site-footer{padding:clamp(2rem,4vw,3rem) var(--section-padding-x);font-family:var(--font-body);font-size:.8125rem;color:#fff3;letter-spacing:.03em;max-width:var(--max-width);margin:0 auto}.scroll-dot{position:fixed;width:10px;height:10px;background:var(--color-accent);border-radius:50%;z-index:100;opacity:0;pointer-events:none;will-change:transform,opacity;box-shadow:0 0 12px #f336;transition:opacity .4s ease}.scroll-dot--visible{opacity:1}.scroll-dot--rolling{transition:left .5s cubic-bezier(.16,1,.3,1),top .3s ease,opacity .4s ease}.scroll-dot--settled{transition:opacity .3s ease}.motion-fade{opacity:0;transform:translateY(20px)}.motion-letter{display:inline-block;opacity:0;transform:translateY(100%)}.motion-stagger{opacity:0;transform:translateY(16px)}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.motion-fade,.motion-letter,.motion-stagger{opacity:1;transform:none}.scroll-dot{display:none}}
