@font-face{font-family:Noto;src:url('assets/noto-sans-tc.ttf') format('truetype');font-display:swap}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:#f8faf9;color:#101b22;font:16px/1.7 Noto,sans-serif}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}button,a{-webkit-tap-highlight-color:transparent}button{cursor:pointer}img{max-width:100%;display:block;height:auto}button{color:inherit}p{color:#657078;margin:12px 0 24px}h1,h2,h3{line-height:1.4;margin:0;font-weight:750}h2{font-size:36px;letter-spacing:-1px}h3{font-size:23px}a:focus-visible,button:focus-visible,summary:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid #497666;outline-offset:5px}.container{width:min(1200px,calc(100% - 96px));margin:auto}.header{position:sticky;top:0;background:#f8faf9f5;z-index:10}.nav-wrap{width:min(1200px,calc(100% - 96px));height:96px;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{display:flex;gap:10px;align-items:center;font-size:23px;font-weight:700;white-space:nowrap;letter-spacing:2px}.brand img{width:52px;height:52px;object-fit:cover;mix-blend-mode:multiply}.brand small{display:block;font-size:9px;letter-spacing:2.3px;color:#507265;line-height:1.4}nav{display:flex;gap:36px;font-size:15px;font-weight:600}nav a:hover,.text-link:hover{color:#3b6b59}.button{border:0;display:inline-flex;justify-content:center;align-items:center;gap:28px;min-height:56px;padding:13px 28px;border-radius:50px;background:#101b22;color:white;font-weight:650;font-size:16px;transition:transform .2s,background .2s}.button:hover{background:#325a4d;transform:translateY(-3px)}.nav-cta{min-height:44px;font-size:14px;padding:10px 22px}.secondary{background:transparent;color:#172329;border:1px solid #bbc4c7;gap:12px}.secondary:hover{background:#e5eeea}.menu-toggle{display:none}.hero{display:grid;grid-template-columns:1.06fr 1fr;align-items:center;min-height:530px;padding:48px 0 40px;gap:12px}.hero-copy{position:relative;z-index:1}.pill,.tag{display:inline-block;background:#e9f1ee;color:#416359;padding:5px 14px;border-radius:30px;font-size:14px;font-weight:600}.pill{margin:0 0 20px}i{font-style:normal;color:#92a99f;margin:0 8px}h1{font-size:clamp(36px,3.65vw,54px);line-height:1.45;letter-spacing:1px;white-space:nowrap}h1 span{color:#487362}.intro{font-size:20px;line-height:1.8;margin-top:20px}.actions{display:flex;gap:16px;flex-wrap:wrap;margin-top:30px}.hero-visual{position:relative;margin-right:-35px;align-self:stretch;display:flex;align-items:center}.hero-visual>img{width:112%;max-width:112%;margin-left:-4%;mix-blend-mode:multiply}.visual-label{position:absolute;top:35px;right:5px;border-radius:14px;padding:10px 18px;background:#fff;font-size:14px;color:#507164;font-weight:650}.visual-note{position:absolute;top:28px;left:15px;background:white;padding:20px 18px;border-radius:14px;display:grid;gap:4px}.visual-note strong{font-size:16px}.visual-note small{font-size:12px;color:#687277}.bars{height:34px;display:flex;align-items:flex-end;gap:5px;margin-bottom:5px}.bars b{width:8px;height:55%;background:#bdd9cb}.bars b:nth-child(2){height:75%}.bars b:nth-child(3){height:65%}.bars b:nth-child(4){height:100%}.expertise{display:flex;align-items:center;justify-content:space-between;gap:24px;padding:32px 0;color:#737e80}.expertise>span{font-size:13px}.expertise>div{font-size:20px;font-weight:600;letter-spacing:3px}.expertise b{color:#9babaa;font-weight:400}.section{padding-top:80px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:28px}.section-head p{margin-bottom:0}.text-link{display:inline-flex;align-items:center;gap:16px;font-size:15px;font-weight:600;background:none;padding:0 0 5px;border:0;border-bottom:1px solid #c6d8d0}.works{display:grid;grid-template-columns:1fr 1fr;gap:20px}.work{background:#f0f4f3;border:1px solid #e3eae7;border-radius:14px;overflow:hidden;display:grid;grid-template-columns:1.08fr 1fr;align-items:center;min-height:290px}.work.featured{grid-column:1/-1;grid-template-columns:.85fr 1.15fr;min-height:330px}.work-copy{padding:28px}.work h3{margin:14px 0 12px}.featured h3{font-size:31px}.work p{font-size:15px;line-height:1.8}.work>img{height:100%;width:100%;object-fit:cover;transition:transform .5s}.work:hover>img{transform:scale(1.025)}.sample-note{font-size:12px;margin:12px 0 0}.center{text-align:center}.center p{margin-bottom:36px}.service-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:42px}.service-grid h3{font-size:23px;margin:15px 0 10px}.service-grid p{font-size:16px;margin:0}.service-icon{height:78px;width:78px;background:#e9f1ee;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:38px;color:#1d3f36;line-height:.4}.code{font-size:42px}.solutions{margin-top:80px;background:#edf2ef;display:grid;grid-template-columns:1.1fr 1fr;align-items:center;border-radius:16px;overflow:hidden}.solutions>div{padding:40px}.solutions h2{font-size:29px;margin-top:16px}.solutions p{font-size:15px}.solutions img{width:100%;height:100%;object-fit:cover}.faq{display:grid;grid-template-columns:1fr 2fr;gap:48px;padding-bottom:40px}.faq details{background:#edf1f1;border-radius:5px;margin-bottom:8px}.faq summary{list-style:none;cursor:pointer;padding:12px 20px;display:flex;gap:22px;align-items:center}.faq summary::-webkit-details-marker{display:none}.faq summary:before{content:'+';font-size:26px;font-weight:300;line-height:1}.faq details[open] summary:before{content:'−'}.faq details p{padding:0 24px 20px 60px;margin:0;font-size:15px}.contact-banner{display:flex;align-items:center;justify-content:space-between;gap:32px;background:#111f23;color:white;padding:36px;border-radius:20px}.contact-banner p{color:#a4d1b9;margin:0 0 8px}.contact-banner h2{font-size:27px;margin-bottom:8px}.contact-banner span{font-size:15px;color:#d3ddda}.light{background:white;color:#142128;white-space:nowrap}.light span{color:inherit}.light:hover{color:white}.footer{display:flex;align-items:center;justify-content:space-between;padding-top:40px;padding-bottom:36px;gap:28px}.footer p{margin:0;font-size:14px;color:#34463e}.footer small{font-size:11px;color:#68746e}.footer .brand{font-size:20px}.skip{position:fixed;top:-100px;background:white;padding:16px;z-index:30}.skip:focus{top:0}dialog{border:0;border-radius:20px;background:#f8faf9;padding:38px;width:min(650px,calc(100% - 32px));max-height:90dvh;overflow:auto;color:#142128}dialog::backdrop{background:#0c1d26a8}dialog h2{font-size:28px;margin:12px 0 20px}dialog img{border-radius:8px;width:100%;max-height:280px;object-fit:cover}.close{position:absolute;right:16px;top:10px;font-size:30px;border:0;background:none;width:44px;height:44px}form{display:grid;gap:16px}label{display:grid;gap:6px;font-size:15px;font-weight:600}input,select,textarea{width:100%;padding:11px;border:1px solid #a5b6ae;border-radius:6px;background:white;color:#142128}textarea{resize:vertical}.form-note{background:#e7eeea;padding:12px;font-size:14px}#form-status{margin:0;font-size:14px}.reveal{animation:arrive .6s both}@keyframes arrive{from{transform:translateY(18px);opacity:.3}to{transform:translateY(0);opacity:1}}
@media(min-width:1500px){.hero{min-height:600px}.hero-visual>img{width:120%;max-width:120%}}@media(max-width:1050px){.container,.nav-wrap{width:calc(100% - 64px)}nav{gap:20px}.hero{min-height:490px}h1{font-size:38px}.intro{font-size:17px}.visual-note{left:0;top:45px;padding:12px}.visual-label{top:10px;right:8px}.work{grid-template-columns:1fr}.work>img{max-height:240px}.work.featured{grid-template-columns:1fr 1fr}.service-grid{gap:24px}.service-grid h3{font-size:20px}.contact-banner h2{font-size:23px}}@media(max-width:900px){html{scroll-padding-top:85px}.container,.nav-wrap{width:calc(100% - 40px)}.nav-wrap{height:78px;gap:12px}.brand{font-size:19px;gap:4px}.brand img{width:42px;height:42px}.brand small{font-size:8px}.nav-cta{margin-left:auto;padding:8px 16px;font-size:12px;min-height:38px;gap:12px}.menu-toggle{display:block;background:none;border:0;font-size:23px;order:3;width:40px;height:44px}nav{display:none;position:absolute;top:78px;left:0;right:0;background:#f8faf9;padding:24px;box-shadow:0 15px 20px #14212815}nav.open{display:grid;gap:20px}.hero{display:flex;flex-direction:column;align-items:stretch;padding:30px 0 0;gap:16px;min-height:0}h1{font-size:clamp(28px,6.6vw,46px);letter-spacing:0;line-height:1.6}.pill{font-size:12px;margin-bottom:14px}.intro{font-size:16px;margin:16px 0 22px}.actions{gap:10px;margin:0}.actions .button{padding:11px 20px;gap:12px;min-height:50px;font-size:14px}.hero-visual{margin:0 -12px;min-height:270px}.hero-visual>img{width:100%;max-width:100%;margin:0}.visual-note{top:18px;left:5px;font-size:12px;padding:10px}.visual-note strong{font-size:12px}.visual-note small{font-size:10px}.bars{height:24px}.visual-label{top:12px;right:8px;font-size:11px;padding:7px 10px}.expertise{flex-wrap:wrap;justify-content:center;gap:12px;padding:24px 0}.expertise>span{width:100%;text-align:center}.expertise>div{font-size:13px;letter-spacing:1px}.expertise b{font-size:12px}.section{padding-top:56px}h2{font-size:30px}.section-head{align-items:flex-start;flex-direction:column;gap:12px}.section-head p{font-size:15px}.works{grid-template-columns:1fr;gap:16px}.work,.work.featured{grid-template-columns:1fr;min-height:0}.work-copy{padding:24px}.work h3,.featured h3{font-size:24px}.work>img{height:220px;max-height:none}.sample-note{font-size:11px}.center{text-align:left}.center p{font-size:15px}.service-grid{grid-template-columns:1fr 1fr;gap:28px 22px}.service-icon{width:60px;height:60px;font-size:32px}.service-grid h3{font-size:19px}.service-grid p{font-size:14px}.solutions{grid-template-columns:1fr;margin-top:56px}.solutions>div{padding:24px}.solutions h2{font-size:25px}.solutions img{height:220px}.faq{grid-template-columns:1fr;gap:12px;padding-bottom:32px}.faq>div>p{font-size:15px}.faq summary{padding:12px;font-size:14px;gap:12px}.faq details p{padding-left:38px;font-size:14px}.contact-banner{padding:28px 24px;flex-direction:column;align-items:flex-start;gap:24px}.contact-banner h2{font-size:24px}.contact-banner>div>span{font-size:14px}.footer{flex-wrap:wrap;padding:32px 0;gap:20px}.footer>div{order:3;width:100%}.footer .text-link{font-size:13px}dialog{padding:28px 22px}dialog h2{font-size:25px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}}

h1,h2,h3{text-wrap:balance}dialog{overscroll-behavior:contain}a,button,summary{touch-action:manipulation}

.portfolio-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.portfolio-card{min-width:0;background:#eef3f0;border-radius:14px;overflow:hidden}.portfolio-card>a{display:block;height:100%}.portfolio-card img{width:100%;aspect-ratio:3/2;object-fit:cover;object-position:top;transition:transform .3s}.portfolio-card>a:hover img{transform:scale(1.025)}.portfolio-copy{padding:24px}.portfolio-copy h3{font-size:23px;margin:16px 0 24px}.portfolio-copy .tag{font-size:12px}.browser-top{display:flex;justify-content:space-between;background:#e4ebe7;color:#63736c;padding:10px 14px;font-size:11px;gap:12px}.page-intro{padding:56px 0 64px}.page-intro h1{font-size:46px;white-space:normal;margin-top:24px}.page-intro>p{font-size:19px}.portfolio-section{padding-top:16px}.sample-preview{aspect-ratio:3/2;background:#e7ede9;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#52695c}.sample-preview>span{font-size:48px}.sample-preview p{color:inherit;margin:8px 0;font-size:16px}.sample-preview small{font-size:13px}.sample-slot h3{font-size:20px;margin-bottom:8px}.sample-slot .portfolio-copy>p{font-size:14px;margin:0}.page-contact{padding-top:80px}.page-intro+.solutions{margin-top:0}.project-directions .service-grid{margin-top:40px}nav a[aria-current=page]{color:#487362;text-decoration:underline;text-underline-offset:8px}@media(max-width:1050px){.portfolio-grid{gap:16px}.portfolio-copy{padding:18px}.portfolio-copy h3{font-size:20px}}@media(max-width:900px){.portfolio-grid{grid-template-columns:1fr 1fr}.page-intro h1{font-size:34px}.page-intro{padding:32px 0 40px}.page-intro>p{font-size:16px}.page-contact{padding-top:56px}}@media(max-width:540px){.portfolio-grid{grid-template-columns:1fr}.page-intro h1{font-size:30px}.portfolio-copy{padding:24px}.portfolio-copy h3{font-size:23px}.browser-top{font-size:12px}}
.system-projects{grid-template-columns:repeat(2,minmax(0,1fr))}.system-projects .portfolio-copy>p{font-size:16px;margin:0 0 24px}.system-projects .portfolio-copy h3{margin-bottom:12px}@media(max-width:760px){.system-projects{grid-template-columns:1fr}}
/* Homepage hero: supplied composition and analytics artwork. */
.hero-growth{width:min(1520px,calc(100% - 96px));grid-template-columns:48% 52%;gap:0;min-height:710px;padding:48px 0 56px;position:relative}.hero-growth .hero-copy{z-index:2;padding-bottom:20px}.hero-growth h1{font-size:clamp(38px,4.25vw,68px);letter-spacing:-.035em;line-height:1.45}.hero-growth .pill{font-size:16px;padding:6px 18px;margin-bottom:22px}.hero-growth .intro{font-size:clamp(17px,1.65vw,25px);line-height:1.65;margin:24px 0 38px;white-space:nowrap;letter-spacing:-.03em}.hero-growth .actions{gap:24px;margin:0}.hero-growth .button{min-height:66px;padding:16px 36px;font-size:18px;gap:24px}.hero-growth .hero-visual{align-self:center;margin:0 0 0 -60px;aspect-ratio:1.29;display:block;mask:url('assets/hero-mask.svg') center/100% 100% no-repeat;-webkit-mask:url('assets/hero-mask.svg') center/100% 100% no-repeat}.hero-growth .hero-visual>img{width:100%;max-width:100%;height:100%;margin:0;object-fit:cover;object-position:68% center;mix-blend-mode:normal}.hero-growth .play{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;background:#101b22;border-radius:50%;font-size:15px;color:white}.hero-growth .secondary{gap:12px}@media(min-width:1700px){.hero-growth{min-height:790px}}@media(min-width:901px) and (max-width:1200px){.hero-growth{min-height:610px;grid-template-columns:50% 50%}.hero-growth h1{font-size:4.15vw}.hero-growth .intro{font-size:1.6vw}.hero-growth .hero-visual{margin-left:-38px}.hero-growth .button{font-size:15px;padding:13px 24px;min-height:56px}.hero-growth .actions{gap:12px}.hero-growth .pill{font-size:13px}}@media(max-width:900px){.hero-growth{width:calc(100% - 40px);min-height:0;padding:32px 0 12px;gap:24px}.hero-growth .hero-copy{padding:0}.hero-growth h1{font-size:clamp(28px,6.7vw,54px);line-height:1.55;letter-spacing:-.035em}.hero-growth .pill{font-size:12px;padding:5px 12px;margin-bottom:16px}.hero-growth .intro{font-size:clamp(14px,3.8vw,20px);white-space:normal;margin:18px 0 26px;line-height:1.8}.hero-growth .actions{gap:12px}.hero-growth .button{min-height:52px;padding:12px 20px;font-size:14px;gap:14px}.hero-growth .secondary{gap:10px}.hero-growth .hero-visual{align-self:stretch;min-height:0;aspect-ratio:1.4;margin:0;mask:none;-webkit-mask:none;border-radius:28px;overflow:hidden}.hero-growth .hero-visual>img{object-position:center}.hero-growth .play{width:18px;height:18px;font-size:12px}}

.sample-card[hidden],.sample-more button[hidden]{display:none}.sample-more{display:flex;justify-content:center}.sample-more:has(button:not([hidden])){margin-top:32px}
