:root{--color-bg: #ffffff;--color-text: #14213d;--color-muted: #959393;--color-line: #dfe4ec;--color-placeholder: #eef1f6;--color-accent: #1a49d6;--font-sans: "Inter", system-ui, -apple-system, "Segoe UI", Helvetica, Arial, sans-serif;--ease: cubic-bezier(.22, .61, .36, 1);--dur-fast: .25s;--dur: .5s;--dur-slow: .9s;--sidebar-width: 320px;--space-page: 44px;}*, *::before, *::after{box-sizing: border-box;margin: 0;padding: 0;}[hidden]{display: none !important;}body{font-family: var(--font-sans);font-weight: 400;font-size: 14px;line-height: 1.6;color: var(--color-text);background: var(--color-bg);-webkit-font-smoothing: antialiased;}ul{list-style: none;}em, i, cite, address, dfn, var{font-style: normal;}a{color: inherit;}button{font: inherit;color: inherit;background: none;border: 0;cursor: pointer;}::selection{background: var(--color-accent);color: #fff;}:focus-visible{outline: 2px solid var(--color-accent);outline-offset: 3px;}h1{font-weight: 500;font-style: normal;font-size: clamp(22px, 2.4vw, 32px);line-height: 1.15;letter-spacing: -0.02em;color: var(--color-accent);margin-bottom: 28px;}@media (prefers-reduced-motion: reduce){*, *::before, *::after{animation: none !important;transition: none !important;}}@keyframes reveal{from{opacity: 0;transform: translateY(10px);}to{opacity: 1;transform: none;}}.is-revealing{animation: reveal var(--dur) var(--ease) both;}@keyframes page-in{from{opacity: 0;transform: translateY(8px);}to{opacity: 1;transform: none;}}@view-transition{navigation: auto;}.sidebar{view-transition-name: sidebar;}::view-transition-old(root), ::view-transition-new(root){animation-duration: .45s;}.sidebar{position: fixed;inset: 0 auto 0 0;width: var(--sidebar-width);padding: 44px 36px 40px;display: flex;flex-direction: column;}.sidebar__bar{flex: none;}.sidebar__panel{flex: 1;min-height: 0;display: flex;flex-direction: column;}.sidebar__logo{display: block;margin-bottom: 64px;font-size: 16px;font-weight: 600;letter-spacing: -0.02em;text-decoration: none;}.sidebar__title{font-size: inherit;font-weight: inherit;letter-spacing: inherit;color: inherit;margin: 0;line-height: inherit;}.menu-toggle{display: none;}.nav{list-style: none;}.nav li{margin-bottom: 16px;}.nav__link{font-size: 14px;text-decoration: none;transition: color var(--dur-fast) var(--ease);}.nav__link:hover, .nav__link.is-active, .nav__link[aria-current="page"]{color: var(--color-accent);}.nav__item--spaced{margin-top: 44px;}.submenu-wrap{display: grid;grid-template-rows: 1fr;}.js .submenu-wrap{grid-template-rows: 0fr;transition: grid-template-rows var(--dur) var(--ease);}.js .is-open > .submenu-wrap{grid-template-rows: 1fr;}.submenu{min-height: 0;overflow: hidden;padding-left: 14px;}.js .submenu{opacity: 0;transition: opacity var(--dur) var(--ease);}.js .is-open .submenu{opacity: 1;}.submenu li:first-child{margin-top: 10px;}.submenu li{margin-bottom: 8px;}.submenu .nav__link{display: inline-block;font-size: 13px;color: var(--color-muted);transition: color var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);}.submenu .nav__link:hover, .submenu .nav__link[aria-current="page"]{color: var(--color-accent);}.submenu .nav__link:hover{transform: translateX(3px);}.lang{margin-top: 24px;font-size: 11px;color: var(--color-muted);}.lang a:hover, .lang .is-active{color: var(--color-accent);}.sidebar__footer{margin-top: auto;}.social{display: flex;gap: 18px;}.social__link{display: inline-flex;color: var(--color-text);transition: color var(--dur-fast) var(--ease);}.social__link:hover{color: var(--color-accent);}.controls{position: fixed;left: 36px;bottom: 80px;z-index: 5;display: flex;align-items: center;gap: 18px;font-size: 12px;white-space: nowrap;}.no-js .controls{display: none;}.controls button{transition: color var(--dur-fast) var(--ease);}.controls button:hover{color: var(--color-accent);}@media (max-width: 800px), (orientation: landscape) and (max-height: 500px){:root{--topbar-h: 56px;--controls-h: 64px;--stage-extra: 124px;--space-page: 20px;}.sidebar{inset: 0 0 auto 0;width: auto;padding: 0;display: block;z-index: 50;background: var(--color-bg);}.sidebar__bar{position: relative;z-index: 2;background: var(--color-bg);display: flex;align-items: center;justify-content: space-between;height: var(--topbar-h);padding: 0 var(--space-page);border-bottom: 1px solid var(--color-line);}.sidebar__logo{margin: 0;}.menu-toggle{display: block;position: relative;width: 44px;height: 44px;margin-right: -10px;-webkit-tap-highlight-color: transparent;}.menu-toggle span{position: absolute;left: 11px;right: 11px;height: 2px;border-radius: 2px;background: var(--color-text);transition: transform var(--dur) var(--ease), opacity var(--dur-fast) var(--ease);}.menu-toggle span:nth-child(1){top: 15px;}.menu-toggle span:nth-child(2){top: 21px;}.menu-toggle span:nth-child(3){top: 27px;}.is-menu-open .menu-toggle span:nth-child(1){transform: translateY(6px) rotate(45deg);}.is-menu-open .menu-toggle span:nth-child(2){opacity: 0;}.is-menu-open .menu-toggle span:nth-child(3){transform: translateY(-6px) rotate(-45deg);}html.is-menu-open, html.is-menu-open body{overflow: hidden;}.sidebar__panel{position: absolute;top: 100%;left: 0;right: 0;height: calc(100vh - var(--topbar-h));height: calc(100dvh - var(--topbar-h));padding: 36px var(--space-page) calc(28px + env(safe-area-inset-bottom));overflow-y: auto;background: var(--color-bg);opacity: 0;visibility: hidden;transform: translateY(-8px);transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease), visibility 0s linear var(--dur);}.is-menu-open .sidebar__panel{opacity: 1;visibility: visible;transform: none;transition: opacity var(--dur) var(--ease), transform var(--dur) var(--ease), visibility 0s;}.nav li{margin-bottom: 8px;}.nav__link{display: inline-block;padding: 6px 0;font-size: 24px;letter-spacing: -0.01em;}.nav__item--spaced{margin-top: 28px;}.submenu .nav__link{font-size: 18px;}.submenu li{margin-bottom: 2px;}.is-menu-open .nav > li{animation: reveal var(--dur) var(--ease) both;}.is-menu-open .nav > li:nth-child(1){animation-delay: .05s;}.is-menu-open .nav > li:nth-child(2){animation-delay: .10s;}.is-menu-open .nav > li:nth-child(3){animation-delay: .15s;}.is-menu-open .nav > li:nth-child(4){animation-delay: .20s;}.is-menu-open .nav > li:nth-child(5){animation-delay: .25s;}.is-menu-open .nav > li:nth-child(6){animation-delay: .30s;}.is-menu-open .sidebar__footer{animation: reveal var(--dur) var(--ease) .35s both;}.sidebar__footer{margin-top: 36px;}.social{gap: 8px;}.social__link{padding: 10px;margin-left: -10px;}.social__link svg{width: 22px;height: 22px;}.controls{left: 0;right: 0;bottom: 0;z-index: 40;height: calc(var(--controls-h) + env(safe-area-inset-bottom));padding: 0 var(--space-page) env(safe-area-inset-bottom);justify-content: space-between;gap: 0;background: var(--color-bg);border-top: 1px solid var(--color-line);font-size: 14px;}.controls button{min-height: 44px;padding: 0 2px;-webkit-tap-highlight-color: transparent;}}@media (orientation: landscape) and (max-height: 500px){:root{--topbar-h: 44px;--controls-h: 48px;--stage-extra: 84px;}.menu-toggle{margin-top: -2px;}.controls{font-size: 13px;}}.content{animation: page-in var(--dur-slow) var(--ease) both;min-height: 100vh;margin-left: var(--sidebar-width);padding: 40px var(--space-page) 80px;}.text{max-width: 600px;font-size: 15px;line-height: 1.7;}.text p{margin-bottom: 20px;}.text a{text-underline-offset: 4px;text-decoration-color: var(--color-accent);transition: color var(--dur-fast) var(--ease);}.text a:hover{color: var(--color-accent);}@media (max-width: 800px), (orientation: landscape) and (max-height: 500px){.content{margin-left: 0;min-height: 0;padding: calc(var(--topbar-h) + 16px) var(--space-page) 32px;}body.has-controls .content{padding-bottom: calc(var(--controls-h) + env(safe-area-inset-bottom) + 12px);}.text{font-size: 15px;}}.project-title{margin-bottom: 20px;}.viewer{max-width: 1100px;}.stage{position: relative;overflow: hidden;height: calc( 100vh - 250px );background: var(#fff);touch-action: pan-y pinch-zoom;-webkit-user-select: none;user-select: none;}.stage__image{position: absolute;inset: 0;width: 100%;height: 100%;object-fit: contain;opacity: 0;transform: scale(1.015);background: #fff;pointer-events: none;-webkit-touch-callout: none;transition: opacity var(--dur-slow) var(--ease), transform calc(var(--dur-slow) * 1.6) var(--ease);}.stage__image.is-active{opacity: 1;transform: none;}.no-js .stage__image{opacity: 1;transform: none;}img.is-broken{visibility: hidden;}.viewer__caption{height: 2.9em;margin-top: 12px;overflow: hidden;font-size: 11px;line-height: 1.45;letter-spacing: 0.01em;color: var(--color-muted);transition: opacity var(--dur-fast) var(--ease), transform var(--dur-fast) var(--ease);}.viewer__caption.is-changing{opacity: 0;transform: translateY(3px);}.stage__arrow{position: absolute;top: 0;bottom: 0;width: 50%;z-index: 2;}.stage__arrow--prev{left: 0;cursor: w-resize;}.stage__arrow--next{right: 0;cursor: e-resize;}.stage__arrow{-webkit-tap-highlight-color: transparent;}.stage__arrow:focus-visible{outline-offset: -3px;}.no-js .stage__arrow{display: none;}.js .info{display: none;}.js .info.is-open{display: block;}.info .thumbs{margin-top: 40px;display: grid;grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));gap: 10px;}.thumbs li{overflow: hidden;background: var(--color-placeholder);}.thumbs img{display: block;width: 100%;aspect-ratio: 3 / 2;object-fit: cover;cursor: pointer;transition: transform var(--dur) var(--ease), opacity var(--dur-fast) var(--ease);}.thumbs li:hover img{transform: scale(1.05);opacity: 0.9;}.info.is-revealing .thumbs li{animation: reveal var(--dur-slow) var(--ease) both;animation-delay: calc(min(var(--i, 0), 12) * 45ms + 120ms);}@media (max-width: 800px), (orientation: landscape) and (max-height: 500px){.viewer{max-width: none;margin-inline: calc(var(--space-page) * -1);}.stage{height: calc( 100vh - var(--topbar-h) - var(--controls-h) - var(--stage-extra) );height: calc( 100dvh - var(--topbar-h) - var(--controls-h) - var(--stage-extra) );}.viewer__caption{padding-inline: var(--space-page);}.info .thumbs{grid-template-columns: repeat(3, 1fr);gap: 6px;}}@media (orientation: landscape) and (max-height: 500px){.project-title{font-size: 18px;margin-bottom: 8px;}.viewer__caption{height: 1.5em;margin-top: 6px;}.info .thumbs{grid-template-columns: repeat(6, 1fr);}}.form{max-width: 800px;}.form__label{display: block;margin-top: 24px;font-size: 12px;color: var(--color-muted);}.form__field{width: 100%;padding: 14px 0;font: inherit;font-size: 15px;background: none;border: 0;border-bottom: 1px solid var(--color-line);outline: 0;resize: vertical;transition: border-color var(--dur-fast) var(--ease);}.form__field:focus{border-bottom-color: var(--color-accent);}.form__submit{margin-top: 32px;padding: 12px 22px;font-size: 13px;color: #fff;background: var(--color-accent);transition: background var(--dur-fast) var(--ease);}.form__submit:hover{background: var(--color-text);}@media (max-width: 800px), (orientation: landscape) and (max-height: 500px){.form__field{font-size: 16px;}.form__submit{width: 100%;min-height: 48px;font-size: 15px;}}.content--center{display: flex;flex-direction: column;justify-content: center;padding-block: 40px;}.about-page{width: 100%;max-width: 920px;margin-inline: auto;}.about{display: grid;grid-template-columns: 320px 1fr;gap: 56px;align-items: center;}.about__photo{aspect-ratio: 1 / 1;background: var(--color-placeholder);overflow: hidden;}.about__photo img{display: block;width: 100%;height: 100%;object-fit: cover;}@media (max-width: 800px), (orientation: landscape) and (max-height: 500px){.content--center{justify-content: flex-start;}.about{grid-template-columns: 1fr;gap: 24px;}.about__photo{max-width: 320px;}}.contact-list{margin-bottom: 44px;display: grid;gap: 14px;}.contact-list__row{display: grid;grid-template-columns: 96px 1fr;align-items: baseline;}.contact-list dt{font-size: 11px;letter-spacing: .08em;text-transform: uppercase;color: var(--color-muted);}.contact-list dd{font-size: 16px;}.contact-list a{color: var(--color-accent);text-underline-offset: 4px;transition: color var(--dur-fast) var(--ease);}.contact-list a:hover{color: var(--color-text);}