:root{color-scheme:dark;--ink:#171715;--paper:#f1f0ea;--muted:#aaa99f;--accent:#b3c746}
*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--ink);color:var(--paper);font-family:Arial,"Hiragino Kaku Gothic ProN",Meiryo,sans-serif}body{overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--accent);outline-offset:5px}button{border:0;background:none}a{color:var(--paper);text-underline-offset:6px} [hidden]{display:none!important}
#app{height:100dvh;position:relative;isolation:isolate;padding:max(24px,env(safe-area-inset-top)) 5vw max(24px,env(safe-area-inset-bottom));display:grid;grid-template-rows:56px 1fr 24px;background:radial-gradient(ellipse at 75% 42%,#262621 0,transparent 53%)}
header,footer{display:flex;justify-content:space-between;align-items:center}header{z-index:3}#home{display:flex;align-items:center;text-align:left;gap:13px;padding:0;min-height:48px}#home img{width:24px;height:40px}#home span{font-size:14px;letter-spacing:.22em}#home small{display:block;font-size:8px;letter-spacing:.15em;margin-top:8px;color:var(--muted)}.location,footer{font-size:9px;letter-spacing:.16em;color:var(--muted)}
#menu{display:grid;grid-template-columns:1fr 1fr;min-height:0;align-items:center;gap:4vw}.intro{padding-left:3vw}.eyebrow{font-size:10px;letter-spacing:.24em;color:var(--accent)}h1{font-size:clamp(30px,3.5vw,58px);font-weight:300;letter-spacing:.06em;line-height:1.65;margin:30px 0 18px}.intro>p:not(.eyebrow){font-size:13px;line-height:2;color:var(--muted)}.edition{display:block;margin-top:48px;font-size:8px;letter-spacing:.2em;color:#76766d}.mobile{display:none}
.navigation{position:relative;display:flex;align-items:center;justify-content:center;height:100%;min-height:0}#pear{height:min(64dvh,530px);width:100%;display:flex;justify-content:center}#pear svg{height:100%;max-width:100%;overflow:visible}.decor,.decor-leaf .decor{fill:#e0e1d7!important;opacity:1!important}.blade{fill:#e0e1d7;cursor:pointer;transform-box:fill-box;transform-origin:center;transition:transform 160ms,fill 160ms,opacity 160ms,filter 160ms}.blade text{fill:#171715;font-size:8px;letter-spacing:.5px;text-anchor:middle;pointer-events:none}.blade:hover,.blade:focus-visible,.blade.active{fill:var(--accent);filter:drop-shadow(0 0 4px #b3c74644);transform:translate(var(--dx),var(--dy))}.blade.pressed{transform:scale(.975)}#pear svg:has(.active) .blade:not(.active){opacity:.4}.blade:focus-visible{outline:none;stroke:var(--accent);stroke-width:3}.hint{position:absolute;bottom:0;font-size:10px;letter-spacing:.15em;color:var(--muted)}
#labels{position:absolute;left:0;right:0;bottom:12%;display:grid;grid-template-columns:1fr 1fr;gap:0 28%;pointer-events:none}#labels button{min-height:48px;font-size:10px;letter-spacing:.12em;text-align:left;pointer-events:auto;white-space:nowrap}#labels button:nth-child(even){text-align:right}#labels b{font-weight:400;color:var(--accent);margin-right:8px}#labels button:hover{color:var(--accent)}
#detail{width:min(750px,90%);align-self:center;justify-self:center;min-height:0}h2{font-size:clamp(28px,4vw,56px);font-weight:300;letter-spacing:.08em;margin:14px 0 30px}#content{min-height:160px}#content h3{font-size:clamp(18px,2.3vw,28px);font-weight:400;line-height:1.5;margin:0 0 18px}#content p{font-size:14px;line-height:1.9;color:var(--muted);max-width:620px}.external{display:inline-block;margin-top:16px;font-size:12px}.pagination{display:flex;align-items:center;gap:20px;margin-top:24px}.pagination button{width:48px;height:48px;border:1px solid #47473e;font-size:21px}.pagination button:disabled{opacity:.2;cursor:default}#counter{font-size:11px;letter-spacing:.18em;color:var(--muted)}#back-menu{margin-top:20px;min-height:48px;padding:0;font-size:12px;color:var(--muted)}
#transition{position:fixed;inset:0;z-index:10;pointer-events:none;visibility:hidden}#transition.running{visibility:visible}#transition>svg{width:100%;height:100%}#shutter path{fill:#11120f}#flash{position:absolute;inset:0;background:#fff;opacity:0}
@media (max-width:1024px){html.mobile-layout #app{padding-left:22px;padding-right:22px;grid-template-rows:48px 1fr 18px}html.mobile-layout .location{font-size:8px}html.mobile-layout #home span{font-size:11px}html.mobile-layout #home small{font-size:6px}html.mobile-layout #menu{grid-template-columns:1fr;grid-template-rows:1fr auto;gap:0}html.mobile-layout .navigation{grid-row:1;min-height:0;padding-bottom:36px}html.mobile-layout #pear{height:min(42dvh,350px)}html.mobile-layout .intro{padding:8px 0 22px}html.mobile-layout .intro .eyebrow,html.mobile-layout .edition{display:none}html.mobile-layout h1{font-size:25px;line-height:1.55;margin:0 0 10px}html.mobile-layout .intro>p:not(.eyebrow){font-size:11px;line-height:1.6;margin:0}html.mobile-layout .mobile{display:none}html.mobile-layout .hint{display:none}html.mobile-layout #labels{bottom:7%;gap:0 44%;}html.mobile-layout #labels button{font-size:9px;padding:0;min-height:48px}html.mobile-layout #labels b{margin-right:5px}html.mobile-layout footer{font-size:6px}html.mobile-layout #detail{width:100%}html.mobile-layout h2{font-size:30px;margin-bottom:24px}html.mobile-layout #content{min-height:165px}html.mobile-layout #content p{font-size:13px}html.mobile-layout #content h3{font-size:20px}html.mobile-layout .pagination{margin-top:16px}html.mobile-layout #back-menu{margin-top:10px}html.mobile-layout .blade text{font-size:10px}}
@media (max-height:650px) and (max-width:1024px){html.mobile-layout #pear{height:36dvh}html.mobile-layout .intro{padding-bottom:10px}html.mobile-layout h1{font-size:21px;line-height:1.4}html.mobile-layout .intro>p:not(.eyebrow){font-size:10px}html.mobile-layout #labels{gap:0 46%;bottom:0}html.mobile-layout #labels button{min-height:44px}html.mobile-layout h2{font-size:25px;margin:8px 0 16px}html.mobile-layout #content{min-height:125px}html.mobile-layout #content p{line-height:1.6;margin:8px 0}html.mobile-layout .pagination{margin-top:10px}html.mobile-layout .pagination button{height:44px}html.mobile-layout #back-menu{margin-top:0}}
@media (max-height:500px) and (min-width:0px){html:not(.mobile-layout) #app{padding-top:12px;padding-bottom:12px}html:not(.mobile-layout) #pear{height:64dvh}html:not(.mobile-layout) .edition,html:not(.mobile-layout) .hint{display:none}html:not(.mobile-layout) h1{font-size:30px;margin:12px 0}html:not(.mobile-layout) #labels{bottom:2%}html:not(.mobile-layout) #detail{width:85%}html:not(.mobile-layout) h2{font-size:25px;margin:5px 0 12px}html:not(.mobile-layout) #content{min-height:60px}html:not(.mobile-layout) #content p{margin:6px 0;font-size:12px}html:not(.mobile-layout) .pagination{margin-top:4px;float:right}html:not(.mobile-layout) #back-menu{margin-top:4px}}
.decor-button{cursor:pointer}.decor-button .decor,.decor-leaf .decor{fill:#e0e1d7!important;opacity:1!important}.decor-button:focus-visible{outline:none;stroke:var(--accent);stroke-width:3}.release-button .decor{transition:transform 90ms ease-out;transform:translateY(0)}.release-button.is-depressed .decor{transform:translateY(9px)}.shuttering .blade{transition:none;transform:none!important}.blade .blade-name{font-size:16px;letter-spacing:1px}.blade .blade-number{display:none;font-size:24px}
#shutter path:nth-child(2n){fill:#20211c}#shutter path{stroke:#3b3c32;stroke-width:.08;stroke-linejoin:round}
#labels button:nth-child(6){grid-row:1;grid-column:1;text-align:left}#labels button:nth-child(1){grid-row:1;grid-column:2;text-align:right}
#labels button:nth-child(5){grid-row:2;grid-column:1;text-align:left}#labels button:nth-child(2){grid-row:2;grid-column:2;text-align:right}
#labels button:nth-child(4){grid-row:3;grid-column:1;text-align:left}#labels button:nth-child(3){grid-row:3;grid-column:2;text-align:right}
@media (max-width:1024px){html.mobile-layout .blade .blade-name{display:none}html.mobile-layout .blade .blade-number{display:block}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important}.blade:hover,.blade.active,.release-button.is-depressed .decor{transform:none!important}}
/* Keep controls reachable with large text, short windows and on-screen keyboards. */
#detail{max-height:100%;overflow:auto;padding:8px;overscroll-behavior:contain}
#content .price{color:var(--paper);font-size:22px;letter-spacing:.06em}
#content .note{font-size:12px}
#contact-form label{display:block;font-size:12px;margin:10px 0}
#contact-form input,#contact-form textarea{display:block;width:100%;min-height:48px;margin-top:6px;padding:10px 12px;border:1px solid #66665c;border-radius:0;background:#20201d;color:var(--paper);font:inherit;font-size:16px}
#contact-form textarea{height:90px;resize:vertical}
#contact-form :is(input,textarea):focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.form-actions{display:flex;gap:16px}.form-actions button,#contact-form>button{min-height:48px;padding:8px 18px;border:1px solid #66665c}.form-actions button:disabled{opacity:.3}
#content .form-notice{font-size:11px;line-height:1.6}.contact-summary{overflow-wrap:anywhere}
#pear svg:has(.blade:hover) .blade:not(:hover){opacity:.4}
#labels,.leader-lines{display:none}
#app[data-state="portfolio"] #content{display:block}
.portfolio-category{margin-bottom:28px}
.portfolio-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.portfolio-photo{padding:0;min-width:0;background:#20201d;overflow:hidden}
.portfolio-photo img{display:block;width:100%;height:220px;object-fit:contain}
.photo-dialog{padding:52px 16px 16px;border:1px solid #555;background:var(--ink);color:var(--paper);max-width:94vw;max-height:94dvh}
.photo-dialog::backdrop{background:#000d}
.photo-dialog img{display:block;max-width:85vw;max-height:75dvh;object-fit:contain;margin:auto}
.photo-dialog p{display:none}
.photo-close{position:absolute;right:12px;top:4px;min-height:44px}
@media (max-width:1024px){html.mobile-layout .portfolio-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}html.mobile-layout .portfolio-photo img{height:180px}}
.release-button:focus{outline:none}
#pear .blade:focus{outline:none}
#pear .blade:focus-visible{outline:none;stroke:none}
#pear .blade:focus-visible>path{stroke:var(--accent);stroke-width:2}
.release-button:focus-visible{outline:none;stroke:none}
.release-button:focus-visible .decor{stroke:var(--accent);stroke-width:2}
@media (min-width:0px){html:not(.mobile-layout) #menu{position:relative;display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(32px,5vw,88px);align-items:center;width:min(1180px,100%);justify-self:center}html:not(.mobile-layout) #menu .intro{position:relative;grid-column:2;grid-row:1;padding:0;z-index:2;max-width:100%}html:not(.mobile-layout) #menu .intro .eyebrow,html:not(.mobile-layout) #menu .intro .edition{display:none}html:not(.mobile-layout) #menu h1{font-size:clamp(26px,2.5vw,40px);line-height:1.6;margin:0 0 18px}html:not(.mobile-layout) #menu .intro>p:not(.eyebrow){font-size:12px;line-height:1.9}html:not(.mobile-layout) #menu .navigation{position:relative;grid-column:1;grid-row:1;display:flex;align-items:center;justify-content:center}html:not(.mobile-layout) #menu #pear{height:min(68dvh,680px);width:100%;max-width:100%;transform:none}
}
@media (min-width:0px) and (max-height:600px){html:not(.mobile-layout) #menu h1{font-size:26px}html:not(.mobile-layout) #menu #pear{height:66dvh}
}

#app[data-state="studio"] #content{display:block}
.studio-gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.studio-gallery figure{margin:0;min-width:0}
.studio-gallery img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:contain}
.studio-gallery figcaption{font-size:11px;color:var(--muted);margin-top:10px;letter-spacing:.05em}
.studio-info{margin-top:24px}
@media (max-width:1024px){html.mobile-layout .studio-gallery{grid-template-columns:1fr 1fr;gap:16px 12px}html.mobile-layout .studio-gallery figure:first-child{grid-column:1/-1}html.mobile-layout .studio-gallery figcaption{font-size:10px}html.mobile-layout .studio-info{margin-top:20px}}
#detail{width:min(1080px,100%)}
#content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 36px;min-height:0}
.content-block{min-width:0}
#content h3{font-size:20px;margin-bottom:8px}
#content p{font-size:13px;margin:8px 0;line-height:1.7}
#content .external{margin-top:8px}
#app[data-state="works"] .content-block{border-top:1px solid #44443b;padding-top:12px}
#app[data-state="services"] #content{grid-template-columns:1.4fr 1fr}
#app[data-state="services"] .content-block:first-child{grid-row:span 2}
#app[data-state="contact"] #content{grid-template-columns:.8fr 1.2fr}
#contact-form form{display:grid;grid-template-columns:1fr 1fr;gap:4px 12px}
#contact-form form>p,#contact-form .form-actions,#contact-form label:has(textarea){grid-column:1/-1}
#contact-form label{margin:4px 0}
@media (max-width:1024px){html.mobile-layout #content,html.mobile-layout #app[data-state="services"] #content,html.mobile-layout #app[data-state="contact"] #content{grid-template-columns:1fr;gap:20px}html.mobile-layout #content h3{font-size:18px}html.mobile-layout #app[data-state="services"] .content-block:first-child{grid-row:auto}html.mobile-layout #contact-form form{grid-template-columns:1fr}
}
@media (max-width:1024px){html.mobile-layout #menu{display:flex;flex-direction:column;align-items:center;gap:0;width:100%;min-height:0}html.mobile-layout #menu .intro{flex:none;width:min(100%,560px);padding:clamp(8px,2dvh,24px) 0 8px}html.mobile-layout #menu .navigation{flex:0 1 500px;min-height:0;padding:0;align-self:center;height:min(60dvh,500px);max-height:calc(100% - 140px);width:min(100%,560px);margin-top:auto;margin-bottom:24px}html.mobile-layout #pear{height:78%;max-height:390px;width:70%}html.mobile-layout .blade .blade-number,html.mobile-layout .blade .blade-name{display:none}html.mobile-layout #labels{display:block;inset:0;z-index:2}html.mobile-layout #labels button:nth-child(n){position:absolute;min-height:48px;width:82px;font-size:10px;letter-spacing:.06em;text-align:left;padding:0;transform:translateY(-50%)}html.mobile-layout #labels button:nth-child(-n+3){text-align:right}html.mobile-layout #labels button:nth-child(6){left:0;top:39%}html.mobile-layout #labels button:nth-child(5){left:0;top:76%}html.mobile-layout #labels button:nth-child(4){left:5%;top:95%}html.mobile-layout #labels button:nth-child(1){right:0;top:39%}html.mobile-layout #labels button:nth-child(2){right:0;top:76%}html.mobile-layout #labels button:nth-child(3){right:5%;top:95%}html.mobile-layout .leader-lines{display:block;position:absolute;inset:0;width:100%;height:100%;pointer-events:none;overflow:visible}html.mobile-layout .leader-lines polyline{fill:none;stroke:var(--muted);stroke-width:.8}html.mobile-layout .leader-lines circle{fill:var(--ink);stroke:var(--muted);stroke-width:.8}
}

/* Four independently scrollable galleries inside one viewport. */
#app[data-state="portfolio"] #detail{height:100%;max-height:100%;overflow:hidden;display:flex;flex-direction:column;width:min(1280px,100%)}
#app[data-state="portfolio"] #section-number{margin:4px 0}
#app[data-state="portfolio"] h2{font-size:clamp(24px,3vw,40px);margin:8px 0 16px}
#app[data-state="portfolio"] #content{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-template-rows:repeat(2,minmax(0,1fr));gap:20px;flex:1;min-height:0}
#app[data-state="portfolio"] .portfolio-category{min-height:0;min-width:0;margin:0;display:flex;flex-direction:column}
#app[data-state="portfolio"] .portfolio-category h3{font-size:12px;letter-spacing:.16em;margin:0 0 8px}
#app[data-state="portfolio"] .portfolio-grid{display:flex;flex:1;min-height:0;gap:10px;padding:8px;overflow-x:auto;overflow-y:hidden;border:1px solid #3b3b34;background:#1c1c19;scrollbar-width:thin;scrollbar-color:#77776a transparent;overscroll-behavior:contain}
#app[data-state="portfolio"] .portfolio-grid{scrollbar-width:none;-ms-overflow-style:none}
#app[data-state="portfolio"] .portfolio-grid::-webkit-scrollbar{display:none}
#app[data-state="portfolio"] .portfolio-gallery{display:flex;align-items:stretch;gap:6px;flex:1;min-height:0}
#app[data-state="portfolio"] .portfolio-gallery{position:relative}
#app[data-state="portfolio"] .portfolio-gallery::before{content:'WHEEL TO SCROLL';position:absolute;z-index:2;right:1px;top:1px;bottom:1px;width:76px;display:flex;align-items:center;justify-content:center;padding:0 8px;color:#f1f0eacc;font-size:8px;letter-spacing:.12em;line-height:1.5;text-align:center;background:linear-gradient(90deg,transparent 0%,#1c1c19e8 65%,#1c1c19 100%);pointer-events:none}
#app[data-state="portfolio"] .portfolio-photo{flex:0 0 44%;height:100%;min-width:48px}
#app[data-state="portfolio"] .portfolio-photo img{width:100%;height:100%;object-fit:contain}
#app[data-state="portfolio"] #back-menu{flex:none;align-self:flex-start;margin-top:8px;min-height:44px}
#app[data-state="portfolio"] .pagination{display:none}
@media (max-width:600px){html.mobile-layout #app[data-state="portfolio"] .portfolio-gallery::before{content:'SWIPE TO SCROLL';width:62px;font-size:7px}html.mobile-layout #app[data-state="portfolio"] #content{grid-template-columns:1fr;grid-template-rows:repeat(4,minmax(0,1fr));gap:10px}html.mobile-layout #app[data-state="portfolio"] h2{font-size:24px;margin:4px 0 10px}html.mobile-layout #app[data-state="portfolio"] .portfolio-category h3{font-size:10px;margin-bottom:4px}html.mobile-layout #app[data-state="portfolio"] .portfolio-grid{padding:4px;gap:6px}html.mobile-layout #app[data-state="portfolio"] .portfolio-photo{flex-basis:32%}html.mobile-layout #app[data-state="portfolio"] #section-number{display:none}
}
#app[data-state="portfolio"] #content>.content-block{display:contents}

@media(max-width:1024px){html:not(.mobile-layout) #menu{gap:3vw}html:not(.mobile-layout) #menu h1{font-size:clamp(14px,2.5vw,26px)}html:not(.mobile-layout) #menu .intro>p{font-size:clamp(9px,1.3vw,12px)}html:not(.mobile-layout) #pear svg{width:100%;object-fit:contain}}

#contact-form .contact-verification{grid-column:1/-1;min-width:0}
