:root{--cream:#f5f0e7;--paper:#fffdf8;--ink:#1b2622;--pine:#1e3a34;--pine-2:#31584f;--ochre:#b77a2c;--clay:#b95f47;--line:#d8d0c1;--muted:#64706b;--display:"Noto Serif TC",serif;--body:"Chiron GoRound TC","PingFang TC","Noto Sans TC",sans-serif;--sans:Figtree,"PingFang TC",sans-serif;--ease:cubic-bezier(.16,1,.3,1)}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--body);font-size:16px;line-height:1.8;-webkit-font-smoothing:antialiased}img{display:block;max-width:100%}a{color:inherit}button{font:inherit}.skip{position:absolute;left:1rem;top:-5rem;background:var(--pine);color:#fff;padding:.7rem 1rem;z-index:100}.skip:focus{top:1rem}.shell{max-width:1200px;margin:auto;padding:0 48px}.site-header{position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--cream) 92%,transparent);backdrop-filter:blur(14px);border-bottom:1px solid var(--line)}.nav{height:76px;display:flex;align-items:center;gap:28px}.brand{font-family:var(--sans);font-size:22px;font-weight:900;letter-spacing:-.04em;text-decoration:none;white-space:nowrap}.brand i{font-style:normal;color:var(--ochre)}.nav-links{display:flex;gap:25px;align-items:center;margin-left:auto}.nav-links a{font-size:14px;font-weight:700;letter-spacing:.035em;text-decoration:none}.nav-links a:not(.nav-cta){opacity:.75}.nav-links a[aria-current="page"]{color:var(--ochre);opacity:1}.nav-cta,.button{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:46px;padding:10px 21px;border:1px solid var(--pine);border-radius:100px;background:var(--pine);color:var(--paper);font-weight:800;font-size:14px;text-decoration:none;transition:transform .25s var(--ease),background .25s var(--ease),color .25s var(--ease)}.button:hover,.nav-cta:hover{transform:translateY(-2px);background:var(--ochre);border-color:var(--ochre)}.button.ghost{background:transparent;color:var(--pine)}.button.ghost:hover{color:var(--paper)}.menu-button{display:none;margin-left:auto;padding:8px;border:0;background:transparent}.menu-button span{display:block;width:25px;height:2px;margin:5px;background:var(--ink);transition:transform .2s var(--ease),opacity .2s var(--ease)}
.hero{padding:clamp(74px,10vw,140px) 0 64px;overflow:hidden}.hero-grid{display:grid;grid-template-columns:1.07fr .93fr;gap:clamp(35px,6vw,86px);align-items:end}.kicker,.eyebrow{display:flex;gap:12px;align-items:center;color:var(--ochre);font-family:var(--sans);font-size:12px;font-weight:850;letter-spacing:.14em;text-transform:uppercase}.kicker:before{content:"";width:30px;height:1px;background:currentColor}.hero h1,.page-hero h1{max-width:10ch;margin:22px 0 25px;font-family:var(--display);font-size:clamp(46px,6.5vw,86px);font-weight:900;letter-spacing:-.05em;line-height:1.15}.hero h1 em{font-style:normal;color:var(--pine-2);text-decoration:underline;text-decoration-color:var(--ochre);text-decoration-thickness:.12em;text-underline-offset:.05em}.lead{max-width:48ch;color:var(--muted);font-size:clamp(16px,1.5vw,18px);line-height:2.05}.actions{display:flex;gap:13px;flex-wrap:wrap;margin-top:36px}.hero-photo{position:relative;padding:0 0 30px 30px}.hero-photo:before{content:"";position:absolute;inset:32px 24px 0 0;border:1px solid var(--ochre);z-index:-1}.hero-photo img{width:100%;height:min(52vw,550px);object-fit:cover;filter:saturate(.85)}.hero-note{margin:22px 0 0;color:var(--pine);font-family:var(--display);font-size:20px;font-weight:800;line-height:1.55}.intro-band{background:var(--pine);color:var(--paper);padding:42px 0}.intro-band p{max-width:900px;margin:0;font-family:var(--display);font-size:clamp(23px,3vw,39px);font-weight:800;line-height:1.5}.intro-band span{color:#e4c486}
section{padding:clamp(70px,10vw,130px) 0}.section-heading{max-width:710px}.section-heading h2{margin:14px 0 0;font-family:var(--display);font-size:clamp(34px,4.3vw,58px);line-height:1.28;letter-spacing:-.045em}.section-heading p{margin:20px 0 0;color:var(--muted);font-size:17px;line-height:2}.problem-list{display:grid;grid-template-columns:repeat(3,1fr);margin-top:58px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.problem{min-height:245px;padding:32px 32px 28px;border-right:1px solid var(--line)}.problem:last-child{border:0}.number{font-family:var(--sans);font-size:12px;font-weight:900;letter-spacing:.14em;color:var(--ochre)}.problem h3{margin:35px 0 12px;font-family:var(--display);font-size:23px;line-height:1.45}.problem p{margin:0;color:var(--muted);font-size:15px;line-height:1.9}.method{background:var(--paper);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.method-list{counter-reset:method;display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:54px}.method-item{position:relative;padding-top:72px}.method-item:before{counter-increment:method;content:"0" counter(method);position:absolute;top:0;color:var(--ochre);font-family:var(--sans);font-size:14px;font-weight:900;letter-spacing:.15em}.method-item:not(:last-child):after{content:"";position:absolute;top:9px;right:0;width:calc(100% - 52px);height:1px;background:var(--line)}.method-item h3{margin:0;font-family:var(--display);font-size:27px}.method-item p{color:var(--muted);font-size:15px}.method-note{max-width:850px;margin:45px 0 0;padding-top:22px;border-top:1px solid var(--line);font-size:15px;color:var(--muted)}
.process{display:grid;grid-template-columns:.7fr 1.3fr;gap:60px;align-items:start}.process-list{border-top:2px solid var(--pine)}.process-item{display:grid;grid-template-columns:65px 1fr;gap:20px;padding:26px 0;border-bottom:1px solid var(--line)}.process-item h3{margin:0;font-family:var(--display);font-size:24px}.process-item p{grid-column:2;margin:8px 0 0;color:var(--muted);font-size:15px}.process-ai{margin:25px 0 0;color:var(--pine);font-weight:700}.case-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:2px;margin-top:55px;background:var(--line);border:1px solid var(--line)}.case-card{min-height:370px;padding:clamp(28px,4vw,53px);background:var(--pine);color:var(--paper);display:flex;flex-direction:column}.case-card.alt{background:#31584f}.case-type{color:#e4c486;font-family:var(--sans);font-size:12px;font-weight:900;letter-spacing:.14em}.case-card h3{margin:24px 0 16px;font-family:var(--display);font-size:clamp(29px,3.3vw,43px);line-height:1.28}.case-card p{max-width:35ch;margin:0;color:#e8eee9;font-size:15px;line-height:1.9}.text-link{margin-top:auto;padding-top:25px;color:#e4c486;font-weight:800;text-decoration:none}.text-link:hover{text-decoration:underline}.cta-panel{background:#cfe0d7;padding:clamp(38px,6vw,76px);display:grid;grid-template-columns:1.3fr .7fr;gap:40px;align-items:end}.cta-panel h2{max-width:12ch;margin:0;font-family:var(--display);font-size:clamp(34px,4.5vw,60px);line-height:1.25}.cta-panel p{max-width:48ch;margin:18px 0 0;color:var(--pine-2)}.cta-panel .actions{justify-content:flex-end}.site-footer{padding:42px 0;background:var(--ink);color:#e4e9e4}.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr;gap:28px}.site-footer .brand{color:var(--paper)}.site-footer p,.site-footer a{font-size:14px;color:#bdc6c0}.site-footer a{display:block;margin:5px 0}.footer-bottom{display:flex;justify-content:space-between;gap:20px;margin-top:40px;padding-top:20px;border-top:1px solid #445049;color:#a8b3ac;font-family:var(--sans);font-size:12px}
.page-hero{padding:90px 0 72px;background:var(--paper);border-bottom:1px solid var(--line)}.page-hero h1{max-width:14ch;font-size:clamp(42px,5.8vw,76px)}.page-hero .lead{max-width:57ch}.service-list{margin-top:60px;border-top:1px solid var(--line)}.service{display:grid;grid-template-columns:110px 1fr .95fr;gap:30px;padding:48px 0;border-bottom:1px solid var(--line)}.service .number{padding-top:7px}.service h2{margin:0;font-family:var(--display);font-size:clamp(29px,3vw,42px);line-height:1.3}.service h2 small{display:block;margin-top:14px;color:var(--ochre);font-family:var(--body);font-size:15px;font-weight:700;line-height:1.7}.service-copy{color:var(--muted);font-size:15px}.service-copy p:first-child{margin-top:0}.price{display:inline-block;margin-top:16px;color:var(--pine);font-family:var(--display);font-weight:900;font-size:21px}.scope{margin-top:21px;padding-top:18px;border-top:1px solid var(--line);font-size:14px}.scope strong{color:var(--pine)}.service-extra{margin-top:64px;padding:36px;background:#e9dfcd}.service-extra h2{font-family:var(--display);font-size:30px}.faq{max-width:850px;margin:52px 0 0;border-top:1px solid var(--line)}details{border-bottom:1px solid var(--line)}summary{padding:23px 32px 23px 0;cursor:pointer;font-family:var(--display);font-size:21px;font-weight:800}details p{max-width:65ch;margin:0;padding:0 20px 26px 0;color:var(--muted);font-size:15px}
.case-detail{display:grid;grid-template-columns:.9fr 1.1fr;gap:60px;padding:56px 0;border-top:1px solid var(--line)}.case-detail:last-of-type{border-bottom:1px solid var(--line)}.case-detail h2{margin:15px 0;font-family:var(--display);font-size:clamp(32px,4vw,51px);line-height:1.2}.case-detail p{color:var(--muted);font-size:15px}.case-detail dl{margin:0}.case-detail dt{margin-top:20px;color:var(--pine);font-weight:900}.case-detail dd{margin:4px 0;color:var(--muted);font-size:15px}.note{margin-top:42px;padding:25px 28px;background:#e9dfcd;color:#5d5139;font-size:14px}.about-story{display:grid;grid-template-columns:.8fr 1.2fr;gap:70px;align-items:start}.portrait{position:sticky;top:110px}.portrait img{height:590px;width:100%;object-fit:cover}.story p{max-width:64ch;margin:0 0 23px;font-size:17px;line-height:2}.story blockquote{margin:44px 0;padding:30px 0;border-top:2px solid var(--pine);border-bottom:1px solid var(--line);font-family:var(--display);font-size:clamp(25px,3vw,39px);font-weight:800;line-height:1.55}.principles{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin-top:52px}.principle{padding:30px;background:var(--paper)}.principle h3{margin:0;font-family:var(--display);font-size:25px}.principle p{margin:10px 0 0!important;color:var(--muted);font-size:15px!important}.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:2px;margin-top:58px;background:var(--line);border:1px solid var(--line)}.contact-option{padding:clamp(28px,5vw,58px);background:var(--paper)}.contact-option.featured{background:var(--pine);color:var(--paper)}.contact-option h2{margin:20px 0 14px;font-family:var(--display);font-size:clamp(30px,3.6vw,45px);line-height:1.3}.contact-option p{max-width:38ch;color:var(--muted);font-size:15px}.contact-option.featured p{color:#e4ece6}.contact-option .button{margin-top:25px}.contact-option.featured .button{background:#e4c486;border-color:#e4c486;color:var(--pine)}.contact-option.featured .button:hover{background:var(--paper)}.contact-hints{margin-top:50px;padding:36px;border-top:2px solid var(--pine);background:#e9dfcd}.contact-hints h2{font-family:var(--display);font-size:31px}.contact-hints ol{padding-left:1.3em}.contact-hints li{padding-left:8px;margin:10px 0;color:#504936}.contact-info{margin-top:40px;font-size:17px}.contact-info a{color:var(--pine);font-weight:800}html.js .reveal{opacity:0;transform:translateY(18px);transition:opacity .7s var(--ease),transform .7s var(--ease)}html.js .reveal.is-visible{opacity:1;transform:none}
@media(max-width:850px){.shell{padding:0 24px}.site-header{position:sticky}.nav{height:68px}.menu-button{display:block}.nav-links{position:absolute;left:0;right:0;top:68px;display:grid;gap:0;background:var(--paper);border-bottom:1px solid var(--line);padding:14px 24px 22px;transform:translateY(-120%);opacity:0;pointer-events:none;transition:transform .3s var(--ease),opacity .3s var(--ease)}.site-header.menu-open .nav-links{transform:none;opacity:1;pointer-events:auto}.nav-links a{padding:11px 0}.nav-cta{margin-top:8px;text-align:center}.site-header.menu-open .menu-button span:first-child{transform:translateY(7px) rotate(45deg)}.site-header.menu-open .menu-button span:nth-child(2){opacity:0}.site-header.menu-open .menu-button span:last-child{transform:translateY(-7px) rotate(-45deg)}.hero{padding-top:60px}.hero-grid,.process,.about-story{grid-template-columns:1fr}.hero-photo{max-width:600px;margin:12px auto 0}.hero-photo img{height:min(110vw,540px)}.problem-list,.method-list{grid-template-columns:1fr}.problem{min-height:auto;border-right:0;border-bottom:1px solid var(--line);padding:30px 0}.problem:last-child{border-bottom:0}.method-item:not(:last-child):after{left:0;right:auto;top:auto;bottom:-13px;width:80px}.method-item{padding-top:52px}.case-grid,.contact-grid{grid-template-columns:1fr}.case-card{min-height:310px}.cta-panel{grid-template-columns:1fr}.cta-panel .actions{justify-content:flex-start}.footer-grid{grid-template-columns:1fr 1fr}.footer-grid>div:first-child{grid-column:1/-1}.service{grid-template-columns:70px 1fr}.service-copy{grid-column:2}.case-detail{grid-template-columns:1fr;gap:12px}.portrait{position:static}.portrait img{height:auto;max-height:540px}.principles{grid-template-columns:1fr}.footer-bottom{display:block}.footer-bottom span{display:block;margin:6px 0}}
@media(max-width:430px){.shell{padding:0 18px}.hero h1,.page-hero h1{font-size:43px}.actions .button{width:100%}.contact-option,.cta-panel{padding:30px 24px}.footer-grid{grid-template-columns:1fr}.footer-grid>div:first-child{grid-column:auto}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.button,.nav-cta{transition:none}}

/* ---------- motion and visual polish ---------- */
.scroll-progress{position:absolute;right:0;bottom:-2px;left:0;height:2px;overflow:hidden;pointer-events:none}.scroll-progress::before{content:"";display:block;width:100%;height:100%;background:var(--ochre);transform:scaleX(var(--scroll-progress,0));transform-origin:left center}.site-header{transition:background .35s var(--ease),box-shadow .35s var(--ease)}.site-header.is-scrolled{background:color-mix(in srgb,var(--cream) 96%,transparent);box-shadow:0 8px 24px rgba(27,38,34,.06)}.button:active,.nav-cta:active{transform:translateY(0) scale(.97)}.hero-photo{overflow:hidden}.hero-photo:after{content:"";position:absolute;inset:0 0 30px 30px;pointer-events:none;background:linear-gradient(112deg,transparent 32%,rgba(255,253,248,.34) 48%,transparent 64%);transform:translateX(-125%)}.case-card{position:relative;isolation:isolate;overflow:hidden;transition:transform .45s var(--ease),box-shadow .45s var(--ease),background .45s var(--ease)}.case-card:before{content:"";position:absolute;inset:auto -8% -55% 36%;z-index:-1;width:72%;aspect-ratio:1;border-radius:50%;background:rgba(228,196,134,.16);transform:scale(.45);transition:transform .7s var(--ease)}.case-card h3,.case-card p,.case-card .text-link{transition:transform .45s var(--ease)}.case-card:hover{transform:translateY(-8px);box-shadow:0 25px 42px rgba(27,38,34,.18)}.case-card:hover:before{transform:scale(1)}.case-card:hover h3,.case-card:hover p,.case-card:hover .text-link{transform:translateX(7px)}.problem,.principle,.contact-option{transition:background .35s var(--ease),transform .35s var(--ease)}.problem:hover,.principle:hover{background:rgba(255,253,248,.55);transform:translateY(-4px)}details summary{transition:color .25s var(--ease),padding-left .25s var(--ease)}details[open] summary{color:var(--ochre)}details summary:hover{padding-left:8px}.page-hero{position:relative;overflow:hidden}.page-hero:after{content:"";position:absolute;right:-7vw;bottom:-13vw;width:30vw;min-width:250px;aspect-ratio:1;border:1px solid rgba(183,122,44,.42);border-radius:50%;pointer-events:none}.page-hero:before{content:"";position:absolute;right:5vw;bottom:-4vw;width:12vw;min-width:115px;aspect-ratio:1;border-radius:50%;background:rgba(207,224,215,.62);pointer-events:none}
@media(prefers-reduced-motion:no-preference){.page-ready .hero-copy>*{animation:hero-rise .72s both var(--ease)}.page-ready .hero-copy>*:nth-child(1){animation-delay:.04s}.page-ready .hero-copy>*:nth-child(2){animation-delay:.13s}.page-ready .hero-copy>*:nth-child(3){animation-delay:.23s}.page-ready .hero-copy>*:nth-child(4){animation-delay:.31s}.page-ready .hero-copy>*:nth-child(5){animation-delay:.4s}.page-ready .hero-photo{animation:hero-photo-in .9s .2s both var(--ease)}.page-ready .hero-photo:after{animation:hero-light 1.15s .72s both var(--ease)}.page-ready .intro-band{animation:band-in .8s .6s both var(--ease)}@keyframes hero-rise{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}@keyframes hero-photo-in{from{opacity:0;transform:translate3d(22px,18px,0) scale(.97)}to{opacity:1;transform:none}}@keyframes hero-light{from{transform:translateX(-125%)}to{transform:translateX(125%)}}@keyframes band-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:none}}}
@media(max-width:850px){.page-hero:after{right:-22vw;bottom:-28vw;width:66vw}.page-hero:before{right:8vw;bottom:-8vw;width:26vw}.case-card:hover{transform:none;box-shadow:none}.case-card:hover h3,.case-card:hover p,.case-card:hover .text-link{transform:none}}
@media(prefers-reduced-motion:reduce){.scroll-progress::before{transform:scaleX(1)}.site-header,.case-card,.case-card:before,.case-card h3,.case-card p,.case-card .text-link,.problem,.principle,.contact-option,details summary{transition:none}.hero-photo:after{display:none}}

/* ---------- GSAP motion layer and opening film ---------- */
html.motion-ready,html.motion-ready body{overflow-x:clip}
html.motion-ready .reveal{opacity:1;transform:none;transition:none}
html.motion-ready .page-ready .hero-copy>*,html.motion-ready .page-ready .hero-photo,html.motion-ready .page-ready .hero-photo:after,html.motion-ready .page-ready .intro-band{animation:none}
.hero h1 .line{display:block;overflow:hidden;padding-bottom:.06em;margin-bottom:-.06em}
.hero h1 .line-inner{display:inline-block;will-change:transform}
.brandfilm{position:fixed;inset:0;z-index:200;display:none;align-items:center;justify-content:center;background:#16251f;color:var(--paper);overflow:hidden}
.brandfilm.is-on{display:flex}
.brandfilm.is-closing{pointer-events:none}
.brandfilm-video{width:100%;height:100%;object-fit:contain;background:#16251f}
.brandfilm-controls{position:absolute;top:24px;right:24px;z-index:2;display:flex;gap:10px;align-items:center}
.brandfilm-button{min-height:42px;padding:9px 16px;border:1px solid rgba(255,253,248,.3);border-radius:999px;background:rgba(22,37,31,.78);backdrop-filter:blur(6px);color:var(--paper);font-family:var(--sans);font-size:13px;font-weight:800;letter-spacing:.08em;cursor:pointer}
.brandfilm-button:hover,.brandfilm-button:focus-visible{background:rgba(22,37,31,.95);border-color:rgba(255,253,248,.7)}
body.film-open{overflow:hidden}
.marquee{overflow:hidden;background:var(--pine);color:#e4c486;padding:20px 0}
.marquee-track{display:flex;width:max-content;white-space:nowrap;font-family:var(--display);font-weight:900;font-size:clamp(20px,2.6vw,30px)}
.marquee-track span{padding-right:.5em}
.intro-band .ch{font-style:normal;opacity:.16}
@media(prefers-reduced-motion:reduce){.brandfilm{transition:none}.intro-band .ch{opacity:1}}
