:root{--c-bg: #f5f2ee;--c-ink: #1a1a1a;--c-warm-gray: #5e5a56;--c-muted: #9a9590;--c-divider: #c8c3bc;--c-accent: #3d3a37;--f-serif: "Noto Serif JP", "Georgia", serif;--f-sans: "Noto Sans JP", "Helvetica Neue", sans-serif;--space-xs: .5rem;--space-sm: 1rem;--space-md: 2rem;--space-lg: 4rem;--space-xl: 8rem;--space-2xl: 12rem;--transition: .4s ease}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{font-size:16px;scroll-behavior:smooth}body{background-color:var(--c-bg);color:var(--c-ink);font-family:var(--f-serif);font-weight:300;line-height:1.8;-webkit-font-smoothing:antialiased;overflow-x:hidden;animation:page-fade 1.2s ease both}@keyframes page-fade{0%{opacity:0}to{opacity:1}}img{display:block;max-width:100%}a{color:inherit;text-decoration:none}.site-header{position:fixed;top:0;left:0;right:0;z-index:100;display:flex;align-items:center;justify-content:space-between;padding:1.25rem 2.5rem;background:#f5f2eee0;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-bottom:.5px solid var(--c-divider)}.site-wordmark{font-family:var(--f-serif);font-weight:200;font-size:.85rem;letter-spacing:.35em;text-transform:uppercase;color:var(--c-ink);transition:opacity var(--transition)}.site-wordmark:hover{opacity:.5}.site-nav{display:flex;gap:2rem}.site-nav a{font-family:var(--f-sans);font-weight:300;font-size:.75rem;letter-spacing:.2em;color:var(--c-ink);opacity:.85;transition:opacity var(--transition)}.site-nav a:hover{opacity:1}.hero{position:relative;width:100%;height:72vh;min-height:360px;max-height:680px;overflow:hidden}.hero-image-wrap{width:100%;height:100%;position:relative}.hero-image-wrap:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:linear-gradient(to bottom,transparent 55%,rgba(20,18,15,.55) 100%);pointer-events:none}.hero-image{width:100%;height:100%;object-fit:cover;object-position:center 35%;filter:saturate(.85) brightness(.95);transition:transform 8s ease}.hero:hover .hero-image{transform:scale(1.015)}.hero-caption{position:absolute;bottom:2rem;left:2.5rem;display:flex;align-items:baseline;gap:.75rem;color:var(--c-bg);text-shadow:0 1px 6px rgba(0,0,0,.45)}.hero-caption-jp{font-family:var(--f-serif);font-weight:200;font-size:1.25rem;letter-spacing:.15em;opacity:.9}.hero-caption-sep{font-weight:200;opacity:.75}.hero-caption-en{font-family:var(--f-sans);font-weight:300;font-size:.75rem;letter-spacing:.2em;opacity:.9}.hero-location{position:absolute;bottom:2rem;right:2.5rem;display:flex;align-items:baseline;gap:.5rem;color:var(--c-bg);text-shadow:0 1px 6px rgba(0,0,0,.45)}.hero-location-text{font-family:var(--f-serif);font-weight:200;font-size:1rem;letter-spacing:.12em;opacity:.85}.hero-location-divider{opacity:.5;font-size:.7rem}.hero-location-sub{font-family:var(--f-sans);font-weight:300;font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;opacity:.8}.section-inner,.intro-inner{max-width:960px;margin:0 auto;padding:0 2.5rem;display:grid;grid-template-columns:5rem 1fr;gap:2rem 4rem;align-items:start}.section-label{display:flex;flex-direction:column;gap:.5rem;padding-top:.25rem}.label-jp{font-family:var(--f-serif);font-weight:200;font-size:.8rem;letter-spacing:.1em;color:var(--c-warm-gray);writing-mode:vertical-rl;text-orientation:mixed}.label-num{font-family:var(--f-sans);font-size:.65rem;letter-spacing:.1em;color:var(--c-muted)}.section-heading{font-family:var(--f-serif);font-weight:200;font-size:clamp(1.5rem,3vw,2.25rem);letter-spacing:.1em;color:var(--c-ink);margin-bottom:var(--space-md)}.intro{padding:var(--space-xl) 0;border-bottom:.5px solid var(--c-divider)}.intro-name{font-family:var(--f-serif);font-weight:200;font-size:clamp(2.5rem,6vw,5rem);letter-spacing:.3em;line-height:1.1;margin-bottom:var(--space-xs)}.intro-tagline{font-family:var(--f-sans);font-weight:300;font-size:.75rem;letter-spacing:.3em;text-transform:uppercase;color:var(--c-warm-gray);margin-bottom:var(--space-md)}.intro-divider{width:2rem;height:.5px;background:var(--c-divider);margin-bottom:var(--space-md)}.intro-text{font-size:.95rem;color:var(--c-accent);margin-bottom:var(--space-sm);max-width:42ch}.projects{padding:var(--space-xl) 0;border-bottom:.5px solid var(--c-divider)}.project-list{display:flex;flex-direction:column}.project-entry{display:block;padding:1.5rem 0;border-bottom:.5px solid var(--c-divider);transition:all var(--transition);cursor:pointer}.project-entry:first-child{border-top:.5px solid var(--c-divider)}.project-entry:hover{padding-left:.5rem}.project-entry:hover .project-name{opacity:.6}.project-meta{display:flex;justify-content:space-between;align-items:center;margin-bottom:.4rem}.project-lang{font-family:var(--f-sans);font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;color:var(--c-warm-gray)}.project-arrow{font-size:.85rem;color:var(--c-warm-gray);transition:transform var(--transition)}.project-entry:hover .project-arrow{transform:translate(4px)}.project-name{font-family:var(--f-serif);font-weight:300;font-size:1.1rem;letter-spacing:.08em;transition:opacity var(--transition);margin-bottom:.3rem}.project-desc{font-family:var(--f-sans);font-weight:300;font-size:.8rem;color:var(--c-warm-gray);line-height:1.6;max-width:55ch}.gallery-teaser{padding:var(--space-xl) 0;border-bottom:.5px solid var(--c-divider);overflow:hidden}.gallery-teaser-inner{max-width:960px;margin:0 auto;padding:0 2.5rem}.gallery-teaser-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:var(--space-md)}.gallery-teaser-label{display:flex;align-items:center;gap:1rem}.gallery-teaser-label .label-jp{writing-mode:horizontal-tb;font-size:.9rem;letter-spacing:.15em}.gallery-teaser-cta{display:flex;align-items:center;gap:.5rem;font-family:var(--f-sans);font-weight:300;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;color:var(--c-warm-gray);transition:color var(--transition)}.gallery-teaser-cta:hover{color:var(--c-ink)}.gallery-teaser-arrow{display:inline-block;transition:transform var(--transition)}.gallery-teaser-cta:hover .gallery-teaser-arrow{transform:translate(4px)}.gallery-strip{display:grid;grid-template-columns:1fr .6fr 1fr;height:340px;gap:2px;cursor:pointer;text-decoration:none}.gallery-strip-item{position:relative;overflow:hidden;background:var(--c-divider)}.gallery-strip-item img{width:100%;height:100%;object-fit:cover;object-position:center;filter:saturate(.75) brightness(.92);transition:transform .7s ease,filter .4s ease}.gallery-strip:hover .gallery-strip-item img{transform:scale(1.04);filter:saturate(.9) brightness(.85)}.gallery-strip-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:flex-end;padding:1.25rem;background:linear-gradient(to top,rgba(20,18,15,.45) 0%,transparent 55%);opacity:0;transition:opacity var(--transition)}.gallery-strip:hover .gallery-strip-overlay{opacity:1}.gallery-strip-overlay span{font-family:var(--f-sans);font-weight:300;font-size:.65rem;letter-spacing:.25em;text-transform:uppercase;color:var(--c-bg)}.gallery-strip-item--text{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.6rem;background:var(--c-ink);transition:background var(--transition)}.gallery-strip:hover .gallery-strip-item--text{background:var(--c-accent)}.gallery-strip-count{font-family:var(--f-sans);font-weight:300;font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--c-muted)}.gallery-strip-jp{font-family:var(--f-serif);font-weight:200;font-size:1.5rem;letter-spacing:.15em;color:var(--c-bg)}.gallery-strip-sub{font-family:var(--f-sans);font-weight:300;font-size:.65rem;letter-spacing:.2em;color:var(--c-muted)}.about{display:grid;grid-template-columns:1fr 1fr;min-height:60vh;border-bottom:.5px solid var(--c-divider)}.about-image-wrap{overflow:hidden}.about-image{width:100%;height:100%;min-height:400px;object-fit:cover;object-position:center;display:block;transition:transform .6s ease}.about-image-wrap:hover .about-image{transform:scale(1.02)}.about-text-wrap{display:flex;flex-direction:column;justify-content:center;padding:var(--space-xl) var(--space-lg);gap:var(--space-md)}.about-quote{font-family:var(--f-serif);font-weight:200;font-size:clamp(1rem,2vw,1.25rem);font-style:italic;line-height:2;color:var(--c-ink);border-left:.5px solid var(--c-divider);padding-left:1.5rem}.about-body{font-family:var(--f-sans);font-weight:300;font-size:.85rem;color:var(--c-warm-gray);line-height:1.8;max-width:40ch}.contact{padding:var(--space-xl) 0;border-bottom:.5px solid var(--c-divider)}.contact-inner{align-items:start}.link-list{display:flex;flex-direction:column}.link-entry{display:flex;align-items:baseline;gap:2rem;padding:1.1rem 0;border-bottom:.5px solid var(--c-divider);transition:all var(--transition)}.link-entry:first-child{border-top:.5px solid var(--c-divider)}.link-entry:hover{padding-left:.5rem}.link-type{font-family:var(--f-sans);font-size:.65rem;letter-spacing:.2em;text-transform:uppercase;color:var(--c-warm-gray);min-width:6rem}.link-val{font-family:var(--f-serif);font-weight:300;font-size:.95rem;color:var(--c-ink);transition:opacity var(--transition)}.link-entry:hover .link-val{opacity:.5}.site-footer{display:flex;align-items:center;justify-content:center;gap:2rem;padding:2.5rem}.footer-name{font-family:var(--f-serif);font-weight:200;font-size:.7rem;letter-spacing:.4em;text-transform:uppercase;color:var(--c-ink)}.footer-year{font-family:var(--f-sans);font-size:.65rem;color:var(--c-warm-gray)}.footer-jp{font-family:var(--f-serif);font-weight:200;font-size:.75rem;letter-spacing:.15em;color:var(--c-warm-gray)}@media (max-width: 768px){.site-header{padding:1.25rem 1.5rem}.site-nav{gap:1.25rem}.section-inner,.intro-inner{grid-template-columns:1fr;gap:1rem;padding:0 1.5rem}.label-jp{writing-mode:horizontal-tb}.intro,.projects{padding:var(--space-lg) 0}.about{grid-template-columns:1fr}.about-image-placeholder{min-height:260px}.about-text-wrap{padding:var(--space-lg) 1.5rem}.contact{padding:var(--space-lg) 0}.hero-caption{left:1.5rem;flex-direction:column;gap:.25rem;align-items:flex-start}.gallery-teaser{padding:var(--space-lg) 0}.gallery-teaser-inner{padding:0 1.5rem}.gallery-strip{grid-template-columns:1fr 1fr;height:220px}.gallery-strip-item--text{display:none}}@media (max-width: 480px){.site-nav a:not(:first-child){display:none}}
