/* Twoheart gallery — local redesign */
.hero{position:relative;overflow:clip!important}
.side-grid article::after{content:"+"!important}
.hero h1>span:not(.hero-period){color:var(--accent);font-family:Georgia,"Times New Roman",serif;font-style:italic;font-weight:400;letter-spacing:-.055em}
:root{--paper:#10120f;--ink:#eeeee7;--muted:#a2a79a;--line:#30352b;--accent:#d3ed91;--orange:#d3ed91;--space:clamp(22px,5.5vw,100px);--mono:Consolas,"Courier New",monospace}
body{background:var(--paper);color:var(--ink)}::selection{background:var(--accent);color:var(--paper)}.wrap{width:min(1440px,calc(100% - var(--space)*2))}.header{height:102px;position:relative;z-index:5}.brand{font-size:26px;font-weight:600;letter-spacing:-1.6px;gap:11px}.brand-symbol{background:var(--accent);color:#10120f;width:33px;height:33px;border-radius:50%;display:grid;place-items:center;font-family:Georgia,serif;font-style:italic;font-size:28px;line-height:1;letter-spacing:-3px;padding-right:4px}.brand-dot{font:10px var(--mono);vertical-align:top;margin:7px 0 0 5px;display:inline-block;color:var(--muted)}.header nav{gap:35px;font-size:12px}.nav-link:hover{color:var(--accent)}.motion-toggle{background:none;border:1px solid #424936;border-radius:30px;padding:10px 15px;display:flex;align-items:center;gap:9px;min-height:44px;font-size:11px;color:#c1c7b7}.motion-toggle:hover{border-color:var(--accent);color:var(--accent)}.motion-light,.signal-dot{width:5px;height:5px;display:inline-block;border-radius:50%;background:var(--accent);box-shadow:0 0 12px #c9eb8b44}.motion-paused .motion-light{background:#929889;box-shadow:none}
.hero{min-height:740px;grid-template-columns:1.1fr 1fr;gap:12px;padding-block:65px 110px;overflow:visible}.hero-copy{z-index:2;pointer-events:none}.hero-copy a{pointer-events:auto}.hero-copy>.eyebrow{color:#bfc6b3;font-size:9px;letter-spacing:1.6px;display:flex;gap:11px;align-items:center;margin-bottom:33px}.hero h1{font-size:clamp(65px,7.5vw,116px);font-weight:500;line-height:.96;letter-spacing:-7px;white-space:nowrap}.hero h1>span:first-child{color:var(--accent);font-family:Georgia,"Times New Roman",serif;font-style:italic;font-weight:400;letter-spacing:-7px}.hero-period{color:var(--accent)}.hero-chinese{margin-top:33px;font-size:21px;font-weight:400;letter-spacing:1px}.hero-chinese span{color:#b9c0ad}.hero-intro{font-size:13px;color:var(--muted);line-height:1.95;margin-top:15px}.hero-cta{display:inline-flex;align-items:center;gap:15px;margin-top:32px;font-size:13px}.cta-icon{display:grid;place-items:center;width:49px;height:49px;background:var(--accent);color:var(--paper);border-radius:50%;font-size:24px;transition:transform .3s,background .3s}.hero-cta:hover .cta-icon{transform:rotate(45deg);background:white}.hero-cta small{font:8px var(--mono);color:var(--muted);letter-spacing:1px;display:block;margin-top:3px}.hero-art{height:560px;margin-left:0;isolation:isolate;--px:0px;--py:0px;perspective:900px}.hero-art canvas{position:absolute;inset:0;width:100%;height:100%;z-index:1;opacity:0;transition:opacity .6s;mask-image:radial-gradient(ellipse at center,#000 55%,transparent 76%)}.hero-art[data-renderer=webgl] canvas{opacity:1}.hero-art[data-renderer=webgl] .scene-fallback{display:none}.scene-halo{position:absolute;inset:8%;border-radius:50%;background:radial-gradient(ellipse,#a0bb5720,transparent 68%);filter:blur(15px)}.scene-orbit{position:absolute;inset:8% -8%;border:1px solid #a4b77925;border-radius:50%;transform:rotate(-33deg) rotateX(57deg);pointer-events:none;z-index:2}.orbit-two{inset:16% -4%;transform:rotate(37deg) rotateX(65deg);border-style:dashed;opacity:.55}.scene-fallback{position:absolute;inset:15%;transform-style:preserve-3d;transform:rotateX(28deg) rotateZ(-30deg);animation:sculpture-spin 22s linear infinite}.scene-fallback i{position:absolute;inset:12%;border-radius:50%;border:40px solid #b9c897;box-shadow:inset 12px 15px 20px #ffffff88,inset -10px -8px 12px #171f0d,10px 10px 25px #0008}.scene-fallback i:nth-child(2){transform:rotateY(75deg)}.scene-fallback i:nth-child(3){transform:rotateX(75deg)}.scene-cross{position:absolute;color:#8a9679;font:22px var(--mono);font-weight:200;z-index:3}.cross-top{top:55px;right:20%}.cross-bottom{bottom:85px;left:4%}.scene-caption{position:absolute;bottom:15px;left:12%;font:8px var(--mono);letter-spacing:1.7px;color:#8c977e;z-index:3}.scene-number{position:absolute;right:3%;top:18px;font:8px var(--mono);letter-spacing:1px;color:#8c977e;writing-mode:vertical-rl}.floating-note{position:absolute;z-index:3;background:#1d231bcc;border:1px solid #58644566;backdrop-filter:blur(12px);border-radius:8px;padding:12px 16px;font:10px var(--mono);color:#d5dec8;box-shadow:0 10px 40px #0002;transform:translate3d(var(--px),var(--py),20px);animation:float 7s ease-in-out infinite}.note-design{top:24%;left:0;rotate:-8deg}.note-dot{width:6px;height:6px;background:var(--accent);border-radius:50%;display:inline-block;margin-right:7px}.note-explore{right:0;bottom:23%;rotate:7deg;animation-delay:-3s}.note-explore>span{font-size:20px;color:var(--accent);vertical-align:middle;margin-right:9px}.hero-bottom{position:absolute;bottom:26px;left:0;right:0;display:flex;justify-content:space-between;align-items:center;color:#9ba58b;font:8px var(--mono);letter-spacing:1.4px}.hero-bottom>a{display:flex;gap:18px;align-items:center;min-height:44px}.hero-bottom>a span{color:var(--accent);font-size:17px}.hero-bottom>a:hover{color:var(--accent)}.discipline-bar{overflow:hidden;background:#151813}.discipline-bar .wrap{justify-content:space-between;gap:24px;height:72px;font:12px var(--mono);letter-spacing:1.5px;color:#bbc3af;white-space:nowrap}.discipline-bar i{font-size:20px;font-style:normal;color:var(--accent)}
.section{padding-block:100px}.section-heading .eyebrow{color:var(--accent);font-size:10px;letter-spacing:2px;margin-bottom:21px}h2{font-size:clamp(32px,3.5vw,51px);font-weight:400;letter-spacing:-1.5px;line-height:1.4}.heading-index{display:inline-block;font:12px var(--mono);color:var(--muted);letter-spacing:0;vertical-align:top;margin:13px 0 0 14px}.section-aside{font-size:12px}.filter-row{border-top:0;padding:0 0 24px;margin-bottom:35px}.filters{gap:9px}.filter{padding:11px 19px;border:1px solid #353d2d;border-radius:40px;background:transparent;font-size:12px;color:#b5beaa;transition:color .2s,background .2s,border-color .2s}.filter.active{background:var(--accent);color:var(--paper);border-color:var(--accent)}.filter:not(.active):hover{border-color:var(--accent);color:var(--ink)}.view-note{font-size:10px}.project-grid{grid-template-columns:1.12fr 1fr;gap:52px 32px}.project{min-width:0;perspective:1000px}.project:nth-child(even){padding-top:70px}.project-image{height:350px;padding:48px 34px 24px;border-radius:10px;transform:rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));transition:transform .3s ease-out;isolation:isolate}.project-image::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at var(--shine-x,50%) 0%,#fff3,transparent 60%);opacity:0;transition:opacity .3s;z-index:3}.project-button:hover .project-image::after{opacity:1}.project-image-top{inset:18px 21px auto;font-size:8px;color:#45523c}.project-green{background:#dbe3cf}.project-blue{background:#d8e3ed}.project-lime{background:#bfcda2}.project-sand{background:#e2dfd0}.project-coffee{background:#ced9e5}.project-red{background:#d6c7bc}.browser-frame{height:310px;border-color:#a1af91;border-radius:5px 5px 0 0;transform:translateY(7px) rotate(-2deg);transition:transform .4s;box-shadow:0 15px 30px #15280018}.plain-frame{top:26px;border-color:#15191130;border-radius:4px;overflow:hidden;transform:rotate(-2deg);transition:transform .4s;box-shadow:0 15px 30px #15280018}.project-button:hover .browser-frame,.project-button:hover .plain-frame{transform:translateY(-2px) rotate(0)}.project-button:hover .medical-cover{transform:scale(1.025)}.view-project{z-index:4;background:#151b10;color:#e7efd8;border:1px solid #67755355;border-radius:30px;font-size:10px;padding:9px 14px}.project-caption{padding-top:19px;gap:15px}.project-caption h3{font-size:22px;letter-spacing:-.5px;font-weight:500}.project-caption h3>span{display:none}.project-caption p{font-size:11px}.project-arrow{width:40px;height:40px;border-color:#444f37;border-radius:50%;font-size:20px}.project-button:hover .project-arrow{color:var(--paper);background:var(--accent)}.work-footnote{font-size:11px;color:#919d83;margin-top:35px;max-width:620px;line-height:1.8}
.side-projects{border-top:1px solid var(--line);padding-top:80px}.side-grid{gap:20px;border:0}.side-grid article,.side-grid article+article{padding:27px;border:1px solid var(--line);border-radius:8px;background:linear-gradient(145deg,#1b2017,#12160f);position:relative;overflow:hidden;transition:border-color .3s}.side-grid article:hover{border-color:#6c8150}.side-grid article::after{content:"↗";position:absolute;top:22px;right:23px;font-size:22px;color:#697c51}.side-number{font:9px var(--mono);color:#a6b595;letter-spacing:1.5px}.side-grid h3{font-size:25px;font-weight:400;margin:35px 0 15px}.side-grid p{font-size:12px;line-height:1.95;min-height:72px;max-width:320px}.side-tag{border-top:1px solid var(--line);padding-top:18px;margin-top:25px;font-size:10px;color:#a8b596}.closing-section{padding-block:65px 0;overflow:hidden}.closing-section>.eyebrow{font-size:9px;color:var(--accent);letter-spacing:2px}.closing-section>div{display:flex;justify-content:space-between;align-items:center;margin-top:30px}.closing-section h2{font-size:clamp(50px,6vw,90px);line-height:1.25;letter-spacing:-3px}.closing-section h2 span{color:#9aa88b}.closing-link{font-size:80px;font-weight:300;color:var(--accent);width:110px;height:110px;border-radius:50%;border:1px solid #667c4555;display:grid;place-items:center;line-height:1;transition:background .3s,color .3s,transform .3s}.closing-link:hover{background:var(--accent);color:var(--paper);transform:rotate(45deg)}.closing-note{color:var(--muted);font:11px var(--mono);margin-top:30px}.closing-word{display:block;font-size:clamp(100px,20vw,310px);letter-spacing:-.075em;line-height:1.4;color:#22291c;margin-top:30px;font-weight:600;user-select:none}.footer{min-height:90px;border-top:1px solid var(--line)}.footer-brand{color:var(--ink)}.footer a:hover{color:var(--accent)}
.case-dialog{border:1px solid #566447;border-radius:12px;background:#151a12;color:var(--ink)}.case-dialog::backdrop{background:#060904d9;backdrop-filter:blur(12px)}.dialog-toolbar{background:#151a12ef;backdrop-filter:blur(10px)}.dialog-toolbar>span{color:var(--muted)}.dialog-toolbar button{background:var(--accent);color:var(--paper);border-radius:30px}.case-header>.eyebrow{color:var(--accent)}.case-meta span{border-color:#4b593c;border-radius:20px;color:#c4cfb5}.case-status{background:#232c1c;border-radius:6px;color:#b5c3a4}.case-gallery img{border-radius:6px;border-color:#4c5b3c}
.reveal-ready{opacity:.01;transform:translateY(25px);transition:opacity .65s ease,transform .65s cubic-bezier(.2,.7,.2,1)}.reveal-ready.revealed{opacity:1;transform:translateY(0)}.motion-paused .reveal-ready{opacity:1;transform:none}.motion-paused .floating-note,.motion-paused .scene-fallback{animation-play-state:paused}.motion-paused .project-image{transform:none!important}.motion-paused .floating-note{transform:none}
@keyframes float{0%,100%{translate:0 0}50%{translate:0 -13px}}@keyframes sculpture-spin{to{transform:rotateX(28deg) rotateZ(330deg) rotateY(360deg)}}
@media(min-width:1600px){.hero{min-height:800px}.hero-art{height:620px}.project-image{height:410px}.browser-frame{height:370px}.plain-frame{top:32px}.project-caption h3{font-size:25px}}
@media(max-width:1100px){.hero{min-height:650px;grid-template-columns:1.05fr 1fr;padding-top:45px}.hero h1{font-size:clamp(52px,7.8vw,85px);letter-spacing:-5px}.hero h1>span:first-child{letter-spacing:-5px}.hero-chinese{font-size:16px;letter-spacing:0}.hero-art{height:460px}.hero-copy>.eyebrow{font-size:7px;letter-spacing:1px}.floating-note{padding:10px 12px;font-size:8px}.note-design{left:5%;top:18%}.note-explore{bottom:18%}.discipline-bar .wrap{font-size:9px;letter-spacing:1px;gap:14px}.project-image{height:280px;padding-inline:23px}.browser-frame{height:245px}.plain-frame{top:24px}.project-grid{gap:35px 24px}.project:nth-child(even){padding-top:50px}.side-grid article,.side-grid article+article{padding:23px}.side-grid h3{font-size:22px}.side-grid p{font-size:11px;min-height:90px}}
@media(max-width:760px){:root{--space:22px}.header{height:82px}.brand{font-size:23px}.brand-symbol{width:28px;height:28px;font-size:25px}.header nav{gap:19px}.nav-link{font-size:11px}.nav-link:nth-child(2){display:none}.motion-toggle{font-size:10px;padding:8px 11px;min-height:44px}.hero{grid-template-columns:1fr;gap:0;padding:45px 0 80px;min-height:0}.hero-copy>.eyebrow{font-size:7px;letter-spacing:1.1px;margin-bottom:25px}.hero h1{font-size:clamp(54px,12vw,86px);letter-spacing:-4px;line-height:1}.hero h1>span:first-child{letter-spacing:-4px}.hero-chinese{margin-top:25px;font-size:16px;line-height:1.9}.hero-chinese span{display:block}.hero-intro{font-size:12px;margin-top:12px}.hero-cta{margin-top:23px}.cta-icon{width:44px;height:44px}.hero-art{height:360px;width:100%;margin-top:4px}.hero-art canvas{inset:-3% -8%;width:116%;height:106%}.scene-orbit{inset:10% -7%}.orbit-two{inset:18% -1%}.cross-top{top:35px;right:20%}.cross-bottom{bottom:42px}.scene-number{font-size:7px;top:8px}.scene-caption{bottom:0;font-size:7px;left:20%}.note-design{top:13%;left:0;font-size:8px}.note-explore{bottom:14%;right:0;font-size:8px}.scene-fallback{inset:18%}.scene-fallback i{border-width:28px}.hero-bottom{bottom:15px;font-size:7px;letter-spacing:.6px}.hero-edition{display:none}.hero-bottom>a{gap:10px}.discipline-bar .wrap{height:56px;width:max-content;min-width:100%;padding-inline:22px;gap:25px;font-size:9px;letter-spacing:1px}.discipline-bar span:last-child,.discipline-bar i:last-of-type{display:none}.discipline-bar i{font-size:16px}.section{padding-block:60px}.section-heading{display:block;margin-bottom:25px}.section-heading .eyebrow{font-size:9px;margin-bottom:15px}.section-aside{font-size:11px;margin-top:12px}.section-aside br{display:none}h2{font-size:33px}.heading-index{font-size:10px;margin-top:7px}.filter-row{display:block;padding-bottom:18px;margin-bottom:25px}.filters{gap:7px;justify-content:space-between}.filter{font-size:10px;padding:9px 11px;min-height:44px}.filter sup{margin-left:6px;font-size:8px}.view-note{margin-top:17px;font-size:8px}.project-grid{grid-template-columns:1fr;gap:32px}.project:nth-child(even){padding-top:0}.project-image{height:auto;aspect-ratio:1.3;padding:47px 25px 24px;border-radius:8px}.browser-frame{height:280px}.plain-frame{top:23px}.project-image-top{font-size:7px;inset:17px 18px auto}.medical-cover{height:100%;max-height:280px}.project-caption{padding-top:15px}.project-caption h3{font-size:20px}.project-caption p{font-size:10px}.project-arrow{width:36px;height:36px;font-size:18px}.view-project{opacity:1;transform:none;font-size:9px;padding:7px 12px;right:12px;bottom:12px}.work-footnote{font-size:10px;line-height:1.9;margin-top:25px}.side-projects{padding-top:55px}.side-grid{grid-template-columns:1fr;gap:15px}.side-grid article,.side-grid article+article{padding:24px}.side-grid h3{margin-top:24px;font-size:25px}.side-grid p{min-height:0;max-width:none;font-size:12px}.side-tag{margin-top:20px}.closing-section{padding-top:20px}.closing-section>.eyebrow{font-size:7px;letter-spacing:1px}.closing-section h2{font-size:47px;letter-spacing:-2px}.closing-link{width:65px;height:65px;font-size:48px}.closing-note{font-size:8px;margin-top:23px}.closing-word{font-size:22vw;margin-top:35px;line-height:1.5}.footer{padding-block:25px;font-size:9px}.case-dialog{border-radius:8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal-ready{opacity:1;transform:none}.scene-fallback,.floating-note{animation:none!important}}
