:root{
  --sh-fabric:#f4efe6;
  --sh-linen:#eae3d5;
  --sh-gold:#d38c3b;
  --sh-orange:#e26d3c;
  --sh-denim:#2c3a47;
  --sh-denim-light:#3b4c5c;
  --sh-white:#fdfcfa;
  --sh-ink:#25323e;
  --sh-shadow:0 24px 70px rgba(44,58,71,.14);
}
html{scroll-behavior:smooth;max-width:100%;overflow-x:hidden;overflow-x:clip}
body.shenghui-project-presentation{width:100%;max-width:100%;background:var(--sh-fabric);color:var(--sh-denim);overflow-x:hidden;overflow-x:clip}
body.shenghui-project-presentation::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}
.shenghui-home{width:100%;max-width:100%;overflow-x:hidden;overflow-x:clip}
.shenghui-home *{box-sizing:border-box}
.shenghui-home img{display:block;max-width:100%}
.shenghui-home h1,.shenghui-home h2,.shenghui-home h3,.shenghui-home p,.shenghui-home figure{margin:0}
.shenghui-home button,.shenghui-home input,.shenghui-home select,.shenghui-home textarea{font:inherit}
.sh-wrap{width:min(1400px,calc(100% - 48px));max-width:100%;margin-inline:auto}
.sh-hero-grid>*,.sh-about-grid>*,.sh-strengths-grid>*,.sh-contact-grid>*,.sh-service-grid>*,.sh-case-grid>*{min-width:0}
.sh-btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;min-height:52px;padding:13px 24px;border:1px solid transparent;border-radius:2px;text-decoration:none;font-weight:800;cursor:pointer;transition:.25s ease}
.sh-btn:hover{transform:translateY(-2px)}
.sh-btn-gold{background:var(--sh-gold);color:#fff;border:2px dashed rgba(255,255,255,.56)}
.sh-btn-gold:hover{background:var(--sh-orange)}
.sh-btn-dark{background:var(--sh-denim);color:#fff;border-color:var(--sh-denim)}
.sh-btn-outline{background:transparent;color:var(--sh-denim);border-color:rgba(44,58,71,.38)}
.sh-media-placeholder{position:relative;display:flex;width:100%;height:100%;min-height:220px;align-items:center;justify-content:center;background:linear-gradient(135deg,#d9d0c1,#f5f0e8 55%,#d9d0c1);overflow:hidden}
.sh-media-placeholder::before,.sh-media-placeholder::after{content:"";position:absolute;background:repeating-linear-gradient(90deg,transparent 0 12px,rgba(211,140,59,.28) 12px 16px)}
.sh-media-placeholder::before{width:120%;height:2px;transform:rotate(32deg)}
.sh-media-placeholder::after{width:2px;height:120%;transform:rotate(18deg)}
.sh-media-placeholder span{width:42px;height:42px;border:2px dashed rgba(44,58,71,.32);border-radius:50%}

/* Hero */
.sh-hero-stage{position:relative;isolation:isolate;width:100%;max-width:100%;overflow-x:hidden;overflow-x:clip;padding-bottom:64px;margin-bottom:-64px;background-color:var(--sh-fabric);background-image:radial-gradient(circle at 12% 10%,rgba(255,255,255,.72) 0 7%,transparent 28%),radial-gradient(circle at 87% 18%,rgba(210,192,164,.16) 0 7%,transparent 27%),radial-gradient(circle at 72% 78%,rgba(255,255,255,.42) 0 8%,transparent 32%),linear-gradient(120deg,rgba(255,255,255,.23),rgba(220,205,183,.10) 48%,rgba(255,255,255,.18)),repeating-linear-gradient(0deg,rgba(76,67,53,.068) 0 1px,rgba(255,255,255,.07) 1px 2px,transparent 2px 4px),repeating-linear-gradient(90deg,rgba(76,67,53,.038) 0 1px,rgba(255,255,255,.13) 1px 2px,transparent 2px 5px)}
.sh-hero-stage::after{content:"";position:absolute;width:430px;height:430px;right:-110px;top:-80px;border-radius:50%;background:radial-gradient(circle,rgba(214,196,167,.16),rgba(214,196,167,0) 68%);pointer-events:none;z-index:0}
.sh-hero{position:relative;z-index:1;min-height:92vh;padding:150px 0 90px;display:flex;align-items:center;overflow:hidden;background:transparent}
.sh-hero-scissor{position:absolute;right:-130px;top:80px;width:min(48vw,650px);opacity:.46;color:var(--sh-linen);transform:rotate(-12deg);pointer-events:none}
.sh-hero-scissor svg{width:100%;fill:currentColor}
.sh-hero-grid{position:relative;z-index:1;display:grid;grid-template-columns:minmax(0,1fr) minmax(460px,.95fr);gap:clamp(48px,7vw,110px);align-items:center}
.sh-care-label{position:relative;width:max-content;min-width:142px;margin:0 0 28px 18px;padding:19px 22px 16px;background:var(--sh-white);border:1px solid #d9d4ca;box-shadow:2px 6px 20px rgba(0,0,0,.06);transform:rotate(-3deg);text-align:center}
.sh-care-label::before{content:"";position:absolute;top:-11px;left:50%;width:32px;height:16px;transform:translateX(-50%);background:var(--sh-white);border:1px solid #d9d4ca;border-bottom:0;clip-path:polygon(20% 0,80% 0,100% 100%,0 100%)}
.sh-care-icons{display:flex;gap:9px;justify-content:center;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid #e2ddd5;font-size:14px}
.sh-care-label strong{display:block;font:900 12px/1.3 var(--sh-font);letter-spacing:.16em}
.sh-care-label small{display:block;font-size:9px;line-height:1.5;color:#71777d;letter-spacing:.07em}
.sh-hero h1{max-width:700px;margin-top:12px;font-family:var(--sh-font);font-size:clamp(46px,5.5vw,82px);line-height:1.13;letter-spacing:-.035em;font-weight:900;color:var(--sh-denim)}
.sh-hero h1::after{content:"";display:block;width:min(340px,72%);height:2px;margin-top:16px;background:repeating-linear-gradient(90deg,var(--sh-gold) 0 9px,transparent 9px 16px)}
.sh-hero-lead{max-width:610px;margin-top:28px!important;font-size:clamp(17px,1.35vw,20px);line-height:1.9;color:var(--sh-denim-light);font-weight:500}
.sh-hero-actions{display:flex;align-items:center;gap:32px;margin-top:36px}
.sh-capacity{padding-left:28px;border-left:2px dashed rgba(44,58,71,.22)}
.sh-capacity strong{display:block;font:900 clamp(28px,2.8vw,40px)/1 var(--sh-font)}
.sh-capacity span{display:block;margin-top:5px;font-size:12px;color:var(--sh-gold);font-weight:800;letter-spacing:.08em}
.sh-hero-visual{position:relative;height:clamp(480px,48vw,650px);display:flex;align-items:center;justify-content:center}
.sh-fabric-layer{position:absolute;border-radius:8px}
.sh-fabric-layer--back{width:79%;height:80%;background-color:var(--sh-linen);background-image:repeating-linear-gradient(0deg,rgba(61,48,34,.044) 0 1px,transparent 1px 4px),repeating-linear-gradient(90deg,rgba(255,255,255,.18) 0 1px,transparent 1px 5px),linear-gradient(180deg,rgba(255,255,255,.10),rgba(60,48,34,.035));border:2px dashed rgba(44,58,71,.18);box-shadow:var(--sh-shadow);transform:rotate(6deg);overflow:hidden;background-size:cover;background-position:center;background-repeat:no-repeat}
.sh-fabric-layer--back::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.10),rgba(44,58,71,.06));pointer-events:none}
.sh-fabric-layer--back.has-upload{background-color:#e7dfd1}
.sh-fabric-layer--photo{width:86%;height:77%;padding:12px;background:#fff;border:1px solid #ddd8cf;box-shadow:0 28px 60px rgba(44,58,71,.2);transform:rotate(-3deg);overflow:hidden}
.sh-fabric-layer--photo img,.sh-fabric-layer--photo .sh-media-placeholder{width:100%;height:100%;object-fit:cover;border-radius:3px}
.sh-fabric-swatch{position:absolute;right:1%;bottom:12%;z-index:3;width:130px;height:156px;padding:9px;background:var(--sh-gold);box-shadow:0 16px 28px rgba(44,58,71,.18);transform:rotate(11deg);color:#fff;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px dashed rgba(255,255,255,.68)}
.sh-fabric-swatch span{font-size:30px}.sh-fabric-swatch strong{font:800 13px var(--sh-font);letter-spacing:.14em;margin-top:8px}
.sh-fabric-swatch.has-image{padding:0;background:var(--sh-white);border:4px solid rgba(255,255,255,.92);overflow:hidden}
.sh-fabric-swatch.has-image img,.sh-fabric-swatch.has-image .sh-media-placeholder{width:100%;height:100%;min-height:0;object-fit:cover;border-radius:0}

/* Marquee */
.sh-marquee{position:relative;z-index:4;width:106%;margin-left:-3%;overflow:hidden;padding:12px 0;background:var(--sh-denim);border-block:4px dashed var(--sh-gold);box-shadow:0 13px 28px rgba(44,58,71,.2);transform:rotate(-1.6deg)}
.sh-marquee-track{display:flex;width:max-content;animation:shMarquee 30s linear infinite;animation-play-state:paused}
.sh-marquee.is-running .sh-marquee-track{animation-play-state:running}
.sh-marquee-group{display:flex;align-items:center;gap:48px;padding-right:48px;white-space:nowrap}
.sh-marquee span{display:inline-flex;align-items:center;gap:12px;color:var(--sh-fabric);font:900 clamp(18px,2vw,28px)/1 var(--sh-font);letter-spacing:.04em}
.sh-marquee span.accent{color:var(--sh-gold)}
.sh-marquee i{display:inline-block;width:3px;height:24px;background:currentColor}
@keyframes shMarquee{to{transform:translateX(-50%)}}

/* About */
.sh-about{padding:130px 0 110px;background:var(--sh-fabric)}
.sh-about-grid{display:grid;grid-template-columns:minmax(0,.95fr) minmax(420px,1fr);gap:clamp(50px,7vw,110px);align-items:center}
.sh-about h2,.sh-strengths h2,.sh-section-heading h2,.sh-process h2,.sh-contact h2{font-family:var(--sh-font);font-size:clamp(38px,4.5vw,64px);line-height:1.25;letter-spacing:-.025em;font-weight:900;color:var(--sh-denim)}
.sh-about-copy>p{margin-top:28px!important;font-size:17px;line-height:2;color:var(--sh-denim-light)}
.sh-about-facts{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;margin-top:42px;background:rgba(44,58,71,.16);border:1px solid rgba(44,58,71,.16)}
.sh-about-facts>div{padding:20px 14px;background:var(--sh-fabric)}
.sh-about-facts strong{display:block;font:900 24px/1.1 var(--sh-font)}.sh-about-facts span{display:block;margin-top:7px;font-size:12px;color:#6f777e}
.sh-about-media{position:relative;padding:12px;background:var(--sh-white);border:1px solid #ded8ce;box-shadow:var(--sh-shadow);transform:rotate(1.3deg)}
.sh-stitch-frame{height:clamp(380px,43vw,560px);padding:6px;border:2px dashed var(--sh-gold)}
.sh-stitch-frame img,.sh-stitch-frame .sh-media-placeholder{width:100%;height:100%;object-fit:cover}
.sh-about-media figcaption{padding:14px 4px 2px;font:800 11px var(--sh-font);letter-spacing:.15em;color:#777}

/* Services */
.sh-services{position:relative;padding:125px 0 150px;background:var(--sh-linen)}
.sh-fabric-edge::after{content:"";position:absolute;left:0;right:0;bottom:-26px;height:30px;background:var(--sh-linen);clip-path:polygon(0 0,100% 0,100% 56%,96% 100%,92% 58%,88% 100%,84% 58%,80% 100%,76% 58%,72% 100%,68% 58%,64% 100%,60% 58%,56% 100%,52% 58%,48% 100%,44% 58%,40% 100%,36% 58%,32% 100%,28% 58%,24% 100%,20% 58%,16% 100%,12% 58%,8% 100%,4% 58%,0 100%)}
.sh-section-heading{max-width:760px;margin-bottom:70px}.sh-section-heading--center{text-align:center;margin-inline:auto;margin-bottom:78px}
.sh-section-heading h2{margin-top:0}.sh-section-heading p{margin-top:18px!important;font-size:17px;line-height:1.85;color:var(--sh-denim-light)}
.sh-service-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:54px 32px;align-items:start}
.sh-swatch-card{position:relative;padding:38px 14px 18px;background:var(--sh-white);border:2px dashed #cac4ba;box-shadow:4px 10px 22px rgba(44,58,71,.06);transition:.35s cubic-bezier(.2,.7,.2,1)}
.sh-swatch-card:nth-child(3n+2){margin-top:42px}
.sh-swatch-pin{position:absolute;top:14px;left:50%;width:12px;height:12px;border-radius:50%;transform:translateX(-50%);background:linear-gradient(135deg,#f6f7f7,#82898c);box-shadow:inset -2px -2px 3px rgba(0,0,0,.25),2px 2px 4px rgba(0,0,0,.14)}
.sh-swatch-image{aspect-ratio:1/1;overflow:hidden;background:#dcd7cf}.sh-swatch-image img,.sh-swatch-image .sh-media-placeholder{width:100%;height:100%;object-fit:cover;transition:.5s ease}
.sh-swatch-copy{padding:18px 6px 8px;border-top:1px dashed #d4cec3;margin-top:14px}.sh-swatch-copy small{font:800 10px var(--sh-font);letter-spacing:.15em;color:var(--sh-gold)}
.sh-swatch-copy h3{margin-top:7px;font-size:clamp(20px,2vw,27px);line-height:1.35;font-weight:900}.sh-swatch-copy p{margin-top:10px!important;font-size:14px;line-height:1.8;color:#687079}

/* Process */
.sh-process{padding:150px 0 130px;background-color:var(--sh-fabric);background-image:radial-gradient(rgba(211,140,59,.48) 1px,transparent 1px);background-size:20px 20px}
.sh-process-head{display:flex;align-items:flex-end;justify-content:space-between;gap:50px;margin-bottom:78px}.sh-process-head>div{max-width:700px}
.sh-process-head>p{max-width:430px;padding-left:18px;border-left:4px solid var(--sh-gold);font-size:17px;line-height:1.85;color:var(--sh-denim-light);font-weight:600}
.sh-process-line{position:relative;max-width:1050px;margin:auto}.sh-process-line::before{content:"";position:absolute;left:50%;top:30px;bottom:30px;width:2px;transform:translateX(-50%);background:repeating-linear-gradient(to bottom,var(--sh-gold) 0 8px,transparent 8px 16px)}
.sh-process-step{position:relative;display:grid;grid-template-columns:1fr 92px 1fr;align-items:center;min-height:180px;opacity:0;transform:translateY(24px);transition:.6s ease}.sh-process-step.is-entered{opacity:1;transform:none}
.sh-process-step:nth-child(even) .sh-process-copy{grid-column:3;text-align:left;padding-left:38px}.sh-process-step:nth-child(even) .sh-process-node{grid-column:2}.sh-process-step:nth-child(even) .sh-process-spacer{grid-column:1;grid-row:1}.sh-process-step:nth-child(odd) .sh-process-copy{text-align:right;padding-right:38px}
.sh-process-copy h3{font-size:clamp(23px,2.5vw,34px);font-weight:900}.sh-process-copy p{margin-top:10px!important;line-height:1.8;color:var(--sh-denim-light)}.sh-process-copy small{display:inline-block;margin-bottom:8px;padding:4px 7px;background:var(--sh-gold);color:#fff;font:800 9px var(--sh-font);letter-spacing:.12em;transform:rotate(2deg)}
.sh-process-node{position:relative;z-index:2;grid-column:2;grid-row:1;justify-self:center;width:66px;height:66px;border-radius:50%;display:grid;place-items:center;background:var(--sh-white);border:2px dashed var(--sh-denim);box-shadow:0 8px 20px rgba(44,58,71,.11)}.sh-process-node span{font:900 24px var(--sh-font)}.sh-process-step.is-critical .sh-process-node{width:80px;height:80px;background:var(--sh-gold);color:#fff;border:4px solid var(--sh-white)}.sh-process-step.is-critical h3{color:var(--sh-gold)}

/* Strengths */
.sh-strengths{padding:130px 0;background:var(--sh-denim);color:var(--sh-fabric);overflow:hidden}
.sh-strengths-grid{display:grid;grid-template-columns:1.05fr .85fr;gap:clamp(60px,8vw,120px);align-items:center}.sh-strengths h2{color:#fff;margin-top:0}.sh-strengths-copy>p{margin-top:25px!important;font-size:17px;line-height:1.95;color:#e5dfd5}.sh-strengths-copy ul{display:grid;gap:12px;margin:30px 0 0;padding:0;list-style:none}.sh-strengths-copy li{position:relative;padding:14px 16px 14px 44px;border:1px dashed rgba(244,239,230,.25);background:rgba(255,255,255,.035)}.sh-strengths-copy li::before{content:"✦";position:absolute;left:16px;color:var(--sh-gold)}
.sh-strengths-media{position:relative;height:560px}.sh-strengths-photo{position:absolute;overflow:hidden;border:10px solid var(--sh-fabric);box-shadow:0 30px 60px rgba(0,0,0,.24)}.sh-strengths-photo img,.sh-strengths-photo .sh-media-placeholder{width:100%;height:100%;object-fit:cover}.sh-strengths-photo--one{left:0;top:0;width:69%;height:72%;transform:rotate(-3deg)}.sh-strengths-photo--two{right:0;bottom:0;width:58%;height:55%;transform:rotate(4deg)}

/* Cases */
.sh-cases{padding:130px 0;background:var(--sh-fabric)}
.sh-case-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px}
.sh-case-card{position:relative;display:block;aspect-ratio:4/5;padding:0;border:0;background:#d6d0c7;overflow:hidden;text-align:left;cursor:pointer}.sh-case-media,.sh-case-media img,.sh-case-media .sh-media-placeholder{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}.sh-case-media img{filter:grayscale(1);transition:.55s ease}.sh-case-overlay{position:absolute;inset:0;background:linear-gradient(to top,rgba(24,32,39,.82),rgba(24,32,39,.08) 62%);transition:.35s ease}.sh-case-copy{position:absolute;left:26px;right:26px;bottom:25px;color:#fff;transform:translateY(20px);transition:.4s ease}.sh-case-copy small{display:block;font:800 10px var(--sh-font);letter-spacing:.16em;color:#efb875}.sh-case-copy strong{display:block;margin-top:6px;font-family:var(--sh-font);font-size:26px;line-height:1.3}.sh-case-copy em{display:block;max-height:0;opacity:0;overflow:hidden;margin-top:8px;font-style:normal;font-size:13px;line-height:1.7;transition:.4s ease}.sh-case-copy b{display:block;margin-top:14px;font:800 10px var(--sh-font);letter-spacing:.13em}.sh-case-card:focus-visible .sh-case-media img,.sh-case-card.is-active .sh-case-media img{filter:none;transform:scale(1.045)}.sh-case-card:focus-visible .sh-case-copy,.sh-case-card.is-active .sh-case-copy{transform:none}.sh-case-card:focus-visible .sh-case-copy em,.sh-case-card.is-active .sh-case-copy em{max-height:80px;opacity:1}

/* Contact */
.sh-contact{padding:130px 0;background:var(--sh-linen)}
.sh-contact-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:clamp(54px,8vw,120px);align-items:start}.sh-contact-copy{position:static}.sh-contact-copy h2{margin-top:10px}.sh-contact-copy>p{margin-top:24px!important;font-size:17px;line-height:1.95;color:var(--sh-denim-light)}.sh-contact-note{margin-top:28px;padding:18px;border-left:4px solid var(--sh-gold);background:rgba(253,252,250,.55);font-size:14px;line-height:1.75}
.sh-contact-form-wrap{padding:28px;background:var(--sh-white);border:2px dashed rgba(44,58,71,.22);box-shadow:var(--sh-shadow)}.sh-contact-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.sh-honeypot{position:absolute!important;left:-9999px!important}.sh-field{display:grid;gap:8px}.sh-field--full,.sh-consent,.cf-turnstile,.sh-form-message,.sh-form-actions{grid-column:1/-1}.sh-field label{font-size:12px;font-weight:800;letter-spacing:.04em}.sh-field input,.sh-field select,.sh-field textarea{width:100%;min-height:48px;padding:11px 13px;border:1px solid #d4cec5;border-radius:0;background:#fff;color:var(--sh-denim);outline:none;transition:.2s ease}.sh-field textarea{min-height:130px;resize:vertical}.sh-field input:focus,.sh-field select:focus,.sh-field textarea:focus{border-color:var(--sh-gold);box-shadow:0 0 0 3px rgba(211,140,59,.12)}.sh-field.is-invalid input,.sh-field.is-invalid select,.sh-field.is-invalid textarea{border-color:#b94e48}.sh-consent{display:flex;align-items:flex-start;gap:10px;padding-top:4px;font-size:12px;line-height:1.6;color:#6c7379}.sh-consent input{margin-top:3px;accent-color:var(--sh-gold)}.sh-consent.is-invalid{color:#a23d39}.sh-form-message{padding:12px 14px;font-size:13px}.sh-form-message.success{background:#eaf5ec;color:#285e34}.sh-form-message.error{background:#f8e9e8;color:#8b3430}.sh-form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:4px}
.sh-upload-field{position:relative}.sh-upload-field>label span{margin-left:8px;color:#7b8288;font-weight:500;letter-spacing:0}.sh-upload-field input[type=file]{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}.sh-upload-dropcopy{min-height:76px;display:flex;align-items:center;justify-content:center;padding:16px 20px;border:2px dashed rgba(44,58,71,.24);background:rgba(244,239,230,.56);cursor:pointer;text-align:center;transition:border-color .2s ease,background .2s ease,transform .2s ease}.sh-upload-field:focus-within .sh-upload-dropcopy,.sh-upload-dropcopy:hover{border-color:var(--sh-gold);background:rgba(211,140,59,.08);transform:translateY(-1px)}.sh-upload-dropcopy strong{font-size:14px}.sh-upload-preview{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:10px}.sh-upload-preview[hidden]{display:none}.sh-upload-preview-item{position:relative;aspect-ratio:1/1;overflow:hidden;background:#e8e1d5;border:1px solid rgba(44,58,71,.12)}.sh-upload-preview-item img{width:100%;height:100%;object-fit:cover}.sh-upload-preview-item span{position:absolute;left:5px;right:5px;bottom:5px;padding:3px 5px;background:rgba(24,31,38,.72);color:#fff;font-size:9px;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sh-upload-field.is-invalid .sh-upload-dropcopy{border-color:#b94e48;background:#f8e9e8}

@media (max-width:1100px){
  .sh-hero-grid{grid-template-columns:1fr 1fr;gap:40px}.sh-service-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sh-swatch-card:nth-child(3n+2){margin-top:0}.sh-swatch-card:nth-child(even){margin-top:34px}.sh-case-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sh-about-grid,.sh-strengths-grid{gap:50px}.sh-contact-grid{grid-template-columns:1fr 1.2fr;gap:45px}
}
@media (max-width:820px){
  .sh-wrap{width:min(100% - 32px,1400px)}
  .sh-hero{padding:125px 0 75px;min-height:auto}.sh-hero-grid,.sh-about-grid,.sh-strengths-grid,.sh-contact-grid{grid-template-columns:1fr}.sh-hero-copy{order:1}.sh-hero-visual{order:2;height:500px}.sh-care-label{margin-left:8px}.sh-hero-actions{flex-wrap:wrap}.sh-about,.sh-services,.sh-process,.sh-strengths,.sh-cases,.sh-contact{padding-block:92px}.sh-about-media{max-width:620px;margin:auto}.sh-process-head{display:grid;gap:24px}.sh-process-head>p{max-width:640px}.sh-strengths-media{height:500px;max-width:650px;width:100%;margin:auto}.sh-contact-copy{position:static}.sh-case-grid{grid-template-columns:1fr 1fr}.sh-modal-panel{inset:3vh 3vw}
}
@media (max-width:620px){
  .sh-hero h1{font-size:clamp(42px,13vw,60px)}.sh-hero-visual{height:390px}.sh-fabric-layer--back{width:85%;height:78%}.sh-fabric-layer--photo{width:90%;height:75%}.sh-fabric-swatch{width:92px;height:116px;right:0}.sh-hero-actions{align-items:flex-start;gap:20px}.sh-capacity{padding-left:18px}.sh-marquee{width:110%;margin-left:-5%}.sh-marquee-group{gap:28px;padding-right:28px}.sh-about-facts{grid-template-columns:1fr}.sh-service-grid,.sh-case-grid{grid-template-columns:1fr}.sh-swatch-card:nth-child(even){margin-top:0}.sh-process-line::before{left:30px}.sh-process-step{grid-template-columns:60px 1fr;gap:18px;min-height:0;margin-bottom:38px}.sh-process-step .sh-process-node{grid-column:1!important;grid-row:1!important;width:58px;height:58px}.sh-process-step.is-critical .sh-process-node{width:64px;height:64px}.sh-process-step .sh-process-copy{grid-column:2!important;grid-row:1!important;text-align:left!important;padding:0!important}.sh-process-spacer{display:none}.sh-strengths-media{height:420px}.sh-strengths-photo--one{width:76%;height:70%}.sh-strengths-photo--two{width:64%;height:55%}.sh-contact-form{grid-template-columns:1fr}.sh-form-actions{flex-direction:column}.sh-form-actions .sh-btn{width:100%}.sh-modal-grid{columns:1}.sh-modal-head{padding:18px}.sh-care-label{animation:none}
}

/* =========================================================
   responsive / hover interaction base
   ========================================================= */
.sh-btn span{transition:transform .25s ease}.sh-btn:hover span{transform:translateX(3px)}
.sh-fabric-layer,.sh-fabric-swatch{transition:transform .32s cubic-bezier(.2,.7,.2,1),box-shadow .32s ease}
.sh-about-media,.sh-about-media img,.sh-strengths-photo,.sh-strengths-photo img{transition:transform .45s cubic-bezier(.2,.7,.2,1),box-shadow .45s ease,filter .45s ease}
.sh-swatch-card{isolation:isolate;overflow:hidden}.sh-swatch-card::after{content:"";position:absolute;inset:-30% auto -30% -55%;z-index:0;width:42%;background:linear-gradient(100deg,transparent,rgba(255,255,255,.48),transparent);transform:skewX(-16deg);transition:left .55s ease;pointer-events:none}.sh-swatch-card>*{position:relative;z-index:1}
.sh-process-node{transition:transform .25s ease,border-color .25s ease,background .25s ease}
.sh-strengths-copy li{transition:transform .25s ease,border-color .25s ease,background .25s ease}
.sh-case-card{outline:0}.sh-case-card:focus-visible{box-shadow:0 0 0 4px rgba(211,140,59,.32)}


/* Tablet: this is a real layout switch, not only smaller typography. */
@media (max-width:1180px){
  .sh-wrap{width:min(100% - 44px,1400px)}
  .sh-hero-grid{grid-template-columns:minmax(0,1fr) minmax(400px,.92fr);gap:44px}
  .sh-hero h1{font-size:clamp(48px,6vw,72px)}
  .sh-service-grid{gap:44px 24px}
  .sh-case-copy{left:22px;right:22px;bottom:22px}.sh-case-copy strong{font-size:23px}
}

@media (max-width:980px){
  .sh-wrap{width:min(100% - 40px,880px)}
  .sh-hero{min-height:auto;padding:126px 0 72px}
  .sh-hero-grid,.sh-about-grid,.sh-strengths-grid,.sh-contact-grid{grid-template-columns:1fr!important}
  .sh-hero-grid{gap:36px}.sh-hero-copy{max-width:760px}.sh-hero-visual{height:min(68vw,560px);width:min(720px,100%);margin-inline:auto}
  .sh-about,.sh-services,.sh-process,.sh-strengths,.sh-cases,.sh-contact{padding-block:90px}
  .sh-about-grid,.sh-strengths-grid{gap:48px}.sh-about-media{width:min(680px,100%);margin-inline:auto}.sh-stitch-frame{height:min(68vw,520px)}
  .sh-service-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:34px 22px}.sh-swatch-card:nth-child(n){margin-top:0}.sh-swatch-card:nth-child(even){margin-top:26px}
  .sh-process-head{display:grid;gap:22px}.sh-process-head>p{max-width:700px}.sh-process-line{max-width:850px}
  .sh-strengths-media{height:min(70vw,530px);max-width:700px;width:100%;margin-inline:auto}.sh-strengths-copy{max-width:720px}
  .sh-case-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.sh-case-card{aspect-ratio:5/6}
  .sh-contact-copy{position:static}.sh-contact-grid{gap:38px}.sh-contact-copy{max-width:720px}.sh-contact-form-wrap{padding:24px}
  .sh-modal-panel{width:calc(100vw - 32px);height:calc(100vh - 32px);height:calc(100dvh - 32px)}
  
}

@media (max-width:760px){
  .sh-wrap{width:min(100% - 32px,700px)}
  .sh-about h2,.sh-strengths h2,.sh-section-heading h2,.sh-process h2,.sh-contact h2{font-size:clamp(34px,9.5vw,48px)}
  .sh-hero{padding:112px 0 62px}.sh-hero h1{font-size:clamp(42px,11.6vw,60px);line-height:1.15}.sh-hero-lead{font-size:16px;line-height:1.85}.sh-care-label{margin-bottom:24px}.sh-hero-actions{gap:18px}.sh-btn{min-height:50px;padding:12px 19px}.sh-capacity strong{font-size:30px}
  .sh-hero-visual{height:min(92vw,500px)}.sh-fabric-layer--back{width:82%;height:78%}.sh-fabric-layer--photo{width:88%;height:76%}.sh-fabric-swatch{right:0;bottom:9%;width:104px;height:128px}
  .sh-marquee{padding:10px 0}.sh-marquee-group{gap:30px;padding-right:30px}.sh-marquee span{font-size:18px}
  .sh-about,.sh-services,.sh-process,.sh-strengths,.sh-cases,.sh-contact{padding-block:72px}.sh-section-heading,.sh-section-heading--center{margin-bottom:44px}.sh-section-heading p{font-size:15px}.sh-about-copy>p,.sh-strengths-copy>p,.sh-contact-copy>p{font-size:15.5px}
  .sh-service-grid,.sh-case-grid{grid-template-columns:1fr!important;gap:22px}.sh-swatch-card:nth-child(n){margin-top:0}.sh-swatch-card{max-width:560px;width:100%;margin-inline:auto}.sh-swatch-image{aspect-ratio:4/3}.sh-case-card{aspect-ratio:4/3;min-height:340px}.sh-case-media img{filter:none}.sh-case-copy{transform:none}.sh-case-copy em{max-height:80px;opacity:1}
  .sh-process-line::before{left:28px!important}.sh-process-step{grid-template-columns:56px minmax(0,1fr)!important;gap:17px;min-height:0;margin-bottom:34px}.sh-process-step .sh-process-node{grid-column:1!important;grid-row:1!important;width:56px!important;height:56px!important}.sh-process-step.is-critical .sh-process-node{width:60px!important;height:60px!important}.sh-process-step .sh-process-copy{grid-column:2!important;grid-row:1!important;text-align:left!important;padding:0!important}.sh-process-spacer{display:none}.sh-process-copy h3{font-size:24px}.sh-process-copy p{font-size:14px}
  .sh-strengths-media{height:min(94vw,480px)}.sh-strengths-copy li{padding:13px 14px 13px 40px}
  .sh-contact-form{grid-template-columns:1fr!important}.sh-field--full,.sh-consent,.cf-turnstile,.sh-form-message,.sh-form-actions{grid-column:auto}.sh-contact-form-wrap{padding:20px}.sh-form-actions{display:grid;grid-template-columns:1fr 1fr}.sh-form-actions .sh-btn{width:100%}
  
}

@media (max-width:540px){
  .sh-wrap{width:calc(100% - 28px)}
  .sh-hero{padding-top:104px}.sh-care-label{margin-left:4px;min-width:132px;padding:16px 18px 14px}.sh-hero h1{font-size:clamp(39px,12.5vw,52px)}.sh-hero h1::after{width:68%}.sh-hero-actions{display:grid;grid-template-columns:1fr;align-items:start}.sh-hero-actions .sh-btn{width:100%}.sh-capacity{border-left:0;border-top:2px dashed rgba(44,58,71,.18);padding:16px 0 0;display:flex;align-items:end;gap:11px}.sh-capacity span{margin-bottom:3px}
  .sh-hero-visual{height:min(105vw,430px)}.sh-fabric-layer--back{width:84%;height:75%}.sh-fabric-layer--photo{width:90%;height:74%;padding:8px}.sh-fabric-swatch{width:86px;height:108px}.sh-fabric-swatch span{font-size:24px}.sh-fabric-swatch strong{font-size:10px}
  .sh-about-facts{grid-template-columns:1fr!important}.sh-about-facts>div{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:16px}.sh-about-facts span{margin-top:0;text-align:right}.sh-stitch-frame{height:min(98vw,430px)}
  .sh-service-grid{gap:18px}.sh-swatch-card{padding:34px 12px 16px}.sh-swatch-copy h3{font-size:22px}
  .sh-case-card{min-height:300px;aspect-ratio:1/1.03}.sh-case-copy{left:20px;right:20px;bottom:20px}.sh-case-copy strong{font-size:23px}.sh-case-copy em{font-size:12px}
  .sh-strengths-media{height:min(105vw,430px)}.sh-strengths-photo{border-width:7px}.sh-strengths-photo--one{width:78%;height:70%}.sh-strengths-photo--two{width:66%;height:54%}
  .sh-form-actions{grid-template-columns:1fr}.sh-field input,.sh-field select,.sh-field textarea{font-size:16px}
  
}

@media (max-width:390px){
  .sh-wrap{width:calc(100% - 24px)}
  .sh-hero h1{font-size:38px}.sh-hero-lead{font-size:15px}.sh-hero-visual{height:390px}.sh-fabric-swatch{right:-4px}
  .sh-about,.sh-services,.sh-process,.sh-strengths,.sh-cases,.sh-contact{padding-block:62px}
  .sh-contact-form-wrap{padding:16px}.sh-case-card{min-height:280px}
}



/* =========================================================
   Typography + Chengen-style masonry lightbox
   ========================================================= */
:root{
  --sh-font:"Microsoft JhengHei","PingFang TC","Noto Sans TC",Arial,sans-serif;
  --sh-ease-silk:cubic-bezier(.16,1,.3,1);
}
body.shenghui-project-presentation,
body.shenghui-project-presentation *{
  font-family:var(--sh-font)!important;
}

/* Typography: keep hierarchy, remove the heavy serif feeling. */
.sh-hero h1,
.sh-about h2,.sh-strengths h2,.sh-section-heading h2,.sh-process h2,.sh-contact h2,
.sh-swatch-copy h3,.sh-process-copy h3,.sh-case-copy strong{
  font-weight:700!important;
  letter-spacing:-.02em;
}
.sh-hero h1{letter-spacing:-.025em}
.sh-hero-lead,.sh-about-copy>p,.sh-strengths-copy>p,.sh-contact-copy>p{font-weight:400}
.sh-swatch-copy small,.sh-case-copy small,.sh-case-copy b{font-weight:700!important}
.sh-capacity strong,.sh-about-facts strong,.sh-process-node span{font-weight:700!important}


/* Contact introduction stays in normal document flow instead of following the user. */
.sh-contact-copy{position:static!important;top:auto!important}

/* Chengen-style expanded waterfall gallery. */
.sh-project-modal{
  position:fixed!important;
  inset:0!important;
  z-index:99999!important;
  display:flex!important;
  align-items:center;
  justify-content:center;
  padding:7vh 7vw;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  transition:opacity .34s ease,visibility 0s linear .34s;
}
.sh-project-modal.is-open{
  opacity:1;
  visibility:visible;
  pointer-events:auto;
  transition:opacity .34s ease,visibility 0s linear 0s;
}
.sh-modal-backdrop{
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
  border:0!important;
  background:rgba(10,15,19,.79)!important;
  -webkit-backdrop-filter:blur(6px);
  backdrop-filter:blur(6px);
  opacity:0;
  cursor:pointer;
  transition:opacity .38s ease;
}
.sh-project-modal.is-open .sh-modal-backdrop{opacity:1}
.sh-modal-panel{
  position:relative!important;
  inset:auto!important;
  top:auto!important;
  left:auto!important;
  width:min(82vw,1320px)!important;
  height:auto!important;
  max-height:84vh!important;
  display:block!important;
  overflow:auto!important;
  padding:34px 36px 46px!important;
  background:var(--sh-fabric)!important;
  border:0!important;
  box-shadow:0 34px 100px rgba(0,0,0,.34)!important;
  opacity:0;
  transform:translate3d(0,28px,0) scale(.975)!important;
  transform-origin:center center;
  transition:opacity .34s ease,transform .46s var(--sh-ease-silk)!important;
  scrollbar-width:thin;
  scrollbar-color:var(--sh-gold) transparent;
}
.sh-project-modal.is-open .sh-modal-panel{
  opacity:1;
  transform:translate3d(0,0,0) scale(1)!important;
}
.sh-modal-head{
  position:sticky!important;
  top:-34px!important;
  z-index:4;
  display:flex!important;
  align-items:flex-start!important;
  justify-content:space-between!important;
  gap:24px;
  min-height:0!important;
  margin:-34px -36px 30px!important;
  padding:26px 36px 21px!important;
  background:rgba(244,239,230,.95)!important;
  -webkit-backdrop-filter:blur(12px);
  backdrop-filter:blur(12px);
  border-bottom:1px solid rgba(44,58,71,.10)!important;
}
.sh-modal-heading{min-width:0;max-width:calc(100% - 70px)}
.sh-modal-head small{display:block;margin-bottom:6px;font-size:11px!important;line-height:1.4;letter-spacing:.14em;color:var(--sh-gold)}
.sh-project-modal-title{margin:0!important;font-size:30px!important;line-height:1.28;font-weight:700!important;color:var(--sh-denim);white-space:normal!important;overflow:visible!important;text-overflow:clip!important}
.sh-modal-head p{margin:7px 0 0!important;color:#72787e;font-size:13px!important;line-height:1.65;letter-spacing:.02em}
.sh-modal-summary{max-width:760px;color:var(--sh-denim-light)!important}
.sh-modal-head p[hidden]{display:none}
.sh-modal-close{
  flex:0 0 46px!important;
  width:46px!important;
  height:46px!important;
  display:grid!important;
  place-items:center;
  padding:0!important;
  border:1px solid rgba(44,58,71,.18)!important;
  border-radius:50%!important;
  background:#fff!important;
  color:var(--sh-denim)!important;
  font-size:28px!important;
  font-weight:400!important;
  line-height:1!important;
  cursor:pointer;
  transition:transform .3s ease,background .3s ease,border-color .3s ease!important;
}
.sh-modal-close:hover,.sh-modal-close:focus-visible{transform:rotate(8deg) scale(1.04)!important;background:var(--sh-linen)!important;border-color:var(--sh-gold)!important;outline:0}
.sh-modal-grid{
  display:block!important;
  columns:3 280px!important;
  column-gap:14px!important;
  padding:0!important;
}
.sh-modal-grid-item{
  break-inside:avoid;
  margin:0 0 14px;
  overflow:hidden;
  background:#e5ded3;
  opacity:0;
  transform:translate3d(0,28px,0) scale(.994);
  transition:opacity .7s var(--sh-ease-silk),transform .82s var(--sh-ease-silk);
}
.sh-modal-grid-item.is-visible{opacity:1;transform:translate3d(0,0,0) scale(1)}
.sh-modal-grid-item img{display:block;width:100%;height:auto;transition:transform .5s var(--sh-ease-silk)}
.sh-modal-grid-item:hover img{transform:scale(1.02)}
.sh-modal-empty{column-span:all;display:grid;gap:8px;place-items:center;min-height:240px;padding:42px 24px;text-align:center;border:1px dashed rgba(44,58,71,.24);background:rgba(255,255,255,.42);color:var(--sh-denim)}
.sh-modal-empty strong{font-size:22px;line-height:1.4;font-weight:700}
.sh-modal-empty span{max-width:560px;font-size:14px;line-height:1.8;color:var(--sh-denim-light)}
.sh-modal-open{overflow:hidden!important;overscroll-behavior:none}

@media(max-width:980px){
  .sh-project-modal{padding:4vh 22px}
  .sh-modal-panel{width:100%!important;max-height:92vh!important}
  .sh-modal-grid{columns:2 240px!important}
}

@media(max-width:760px){
  .sh-project-modal{padding:3vh 12px}
  .sh-modal-panel{width:100%!important;max-height:94vh!important;padding:24px 18px 30px!important}
  .sh-modal-head{top:-24px!important;margin:-24px -18px 24px!important;padding:20px 18px 16px!important}
  .sh-project-modal-title{font-size:24px!important}
  .sh-modal-heading{max-width:calc(100% - 58px)}
  .sh-modal-close{width:44px!important;height:44px!important;flex-basis:44px!important}
  .sh-modal-grid{columns:1!important;column-gap:0!important}
  .sh-modal-grid-item{margin-bottom:12px}
}

@media(max-width:540px){
  .sh-upload-preview{grid-template-columns:repeat(3,minmax(0,1fr))}
  .sh-project-modal{padding:12px}
  .sh-modal-panel{max-height:calc(100dvh - 24px)!important;padding:20px 14px 24px!important}
  .sh-modal-head{top:-20px!important;margin:-20px -14px 18px!important;padding:16px 14px 13px!important;gap:14px}
  .sh-modal-head small{font-size:10px!important}
  .sh-project-modal-title{font-size:21px!important}
  .sh-modal-head p{font-size:12px!important}
}


/* High-impact entrance motion: obvious travel, blur, scale and stagger.
   No pointer-follow, parallax or continuous decorative floating. */
:root{
  --sh-ease-impact:cubic-bezier(.16,1,.3,1);
  --sh-ease-pop:cubic-bezier(.2,1.28,.28,1);
}

/* Generic reveal is already strong; directional classes below make each composition read clearly. */
[data-reveal]{
  opacity:0;
  filter:blur(12px);
  transform:translate3d(0,100px,0) scale(.945);
  transition:
    opacity .78s ease-out var(--sh-reveal-delay,0ms),
    transform 1.18s var(--sh-ease-impact) var(--sh-reveal-delay,0ms),
    filter .28s ease-out var(--sh-reveal-delay,0ms);
}
[data-reveal].sh-reveal-from-left{
  transform:translate3d(-105px,55px,0) rotate(-2deg) scale(.95);
  transform-origin:left center;
}
[data-reveal].sh-reveal-from-right{
  transform:translate3d(105px,55px,0) rotate(2deg) scale(.95);
  transform-origin:right center;
}
[data-reveal].sh-reveal-from-up{
  transform:translate3d(0,92px,0) scale(.94);
}
[data-reveal].sh-reveal-card-left{
  transform:translate3d(-72px,95px,0) rotate(-2.3deg) scale(.92);
}
[data-reveal].sh-reveal-card-right{
  transform:translate3d(72px,95px,0) rotate(2.3deg) scale(.92);
}
[data-reveal].is-visible,
[data-reveal].is-visible.sh-reveal-from-left,
[data-reveal].is-visible.sh-reveal-from-right,
[data-reveal].is-visible.sh-reveal-from-up,
[data-reveal].is-visible.sh-reveal-card-left,
[data-reveal].is-visible.sh-reveal-card-right{
  opacity:1;
  filter:blur(0);
  transform:translate3d(0,0,0) rotate(0deg) scale(1);
}

/* Copy inside a revealed block lands in a clearly readable cascade. */
.sh-reveal-child{
  opacity:0;
  filter:blur(6px);
  transform:translate3d(0,42px,0) scale(.975);
  transition:
    opacity .62s ease-out var(--sh-child-delay,150ms),
    transform .9s var(--sh-ease-impact) var(--sh-child-delay,150ms),
    filter .22s ease-out var(--sh-child-delay,150ms);
}
[data-reveal].is-visible .sh-reveal-child{
  opacity:1;
  filter:blur(0);
  transform:translate3d(0,0,0) scale(1);
}

/* Process: alternating side entrance + stronger node landing. */
.sh-process-step{
  opacity:0;
  filter:blur(10px);
  transition:
    opacity .72s ease-out,
    transform 1.05s var(--sh-ease-impact),
    filter .26s ease-out;
}
.sh-process-step:nth-child(odd){transform:translate3d(-95px,70px,0) rotate(-1.5deg) scale(.95)}
.sh-process-step:nth-child(even){transform:translate3d(95px,70px,0) rotate(1.5deg) scale(.95)}
.sh-process-step.is-entered{
  opacity:1;
  filter:blur(0);
  transform:translate3d(0,0,0) rotate(0) scale(1);
}
.sh-process-step.is-entered .sh-process-node{animation:shNodeLand .72s var(--sh-ease-pop) both}
@keyframes shNodeLand{
  0%{transform:scale(.7) rotate(-8deg)}
  62%{transform:scale(1.18) rotate(3deg)}
  100%{transform:scale(1) rotate(0)}
}

/* Much more visible desktop hover language. */
@media (hover:hover) and (pointer:fine){
  .sh-btn{transition:transform .34s var(--sh-ease-pop),box-shadow .34s ease,background .3s ease,border-color .3s ease!important}
  .sh-btn:hover{transform:translateY(-6px) scale(1.025)!important;box-shadow:0 16px 30px rgba(44,58,71,.18)}
  .sh-btn:hover span{transform:translateX(8px)!important}

  .sh-swatch-card{transition:transform .48s var(--sh-ease-pop),box-shadow .48s ease!important}
  .sh-swatch-card:hover{
    transform:translateY(-18px) rotate(2.4deg) scale(1.025)!important;
    box-shadow:14px 34px 55px rgba(44,58,71,.22)!important;
  }
  .sh-swatch-card:nth-child(even):hover{transform:translateY(-18px) rotate(-2.4deg) scale(1.025)!important}
  .sh-swatch-card:hover .sh-swatch-image img{transform:scale(1.11) rotate(-.8deg)!important}
  .sh-swatch-card:hover::after{left:125%!important}

  .sh-about-media:hover{transform:rotate(-1deg) translateY(-14px) scale(1.02)!important;box-shadow:0 38px 85px rgba(44,58,71,.25)!important}
  .sh-about-media:hover img{transform:scale(1.06)!important}

  .sh-strengths-photo--one:hover{transform:rotate(0deg) translateY(-14px) scale(1.04)!important;z-index:4}
  .sh-strengths-photo--two:hover{transform:rotate(0deg) translateY(-14px) scale(1.04)!important;z-index:4}
  .sh-strengths-photo:hover img{transform:scale(1.085)!important}
  .sh-strengths-copy li:hover{transform:translateX(12px) scale(1.015)!important;border-color:rgba(211,140,59,.85)!important;background:rgba(255,255,255,.1)!important}

  .sh-process-step:hover .sh-process-node{transform:scale(1.16) rotate(4deg)!important;border-color:var(--sh-gold)!important;box-shadow:0 16px 30px rgba(211,140,59,.22)}
  .sh-process-step:hover .sh-process-copy{transform:translateY(-7px)}
  .sh-process-copy{transition:transform .36s var(--sh-ease-pop)}

  .sh-case-card{transition:transform .45s var(--sh-ease-pop),box-shadow .45s ease!important}
  .sh-case-card:hover,.sh-case-card:focus-visible{
    transform:translateY(-14px) scale(1.025)!important;
    box-shadow:0 32px 62px rgba(20,28,34,.3)!important;
    z-index:3;
  }
  .sh-case-card:hover .sh-case-media img,.sh-case-card:focus-visible .sh-case-media img{transform:scale(1.115)!important;filter:none!important}
  .sh-case-card:hover .sh-case-copy,.sh-case-card:focus-visible .sh-case-copy{transform:translateY(-8px)!important}
  .sh-case-card:hover .sh-case-overlay,.sh-case-card:focus-visible .sh-case-overlay{background:linear-gradient(to top,rgba(24,32,39,.9),rgba(24,32,39,.02) 68%)}

  .sh-modal-grid-item:hover img{transform:scale(1.065)!important}
}

/* Tablet / phone: keep the entrance obvious, but never travel horizontally outside the viewport. */
@media(max-width:980px){
  [data-reveal],
  [data-reveal].sh-reveal-from-left,
  [data-reveal].sh-reveal-from-right,
  [data-reveal].sh-reveal-from-up{transform:translate3d(0,78px,0) scale(.95);transform-origin:center center}
  [data-reveal].sh-reveal-card-left,
  [data-reveal].sh-reveal-card-right{transform:translate3d(0,72px,0) rotate(0) scale(.94);transform-origin:center center}
  [data-reveal].is-visible,
  [data-reveal].is-visible.sh-reveal-from-left,
  [data-reveal].is-visible.sh-reveal-from-right,
  [data-reveal].is-visible.sh-reveal-from-up,
  [data-reveal].is-visible.sh-reveal-card-left,
  [data-reveal].is-visible.sh-reveal-card-right{transform:translate3d(0,0,0) rotate(0) scale(1)}
  .sh-process-step:nth-child(odd),.sh-process-step:nth-child(even){transform:translate3d(0,72px,0) scale(.95)}
  .sh-process-step.is-entered{transform:translate3d(0,0,0) scale(1)}
}


/* Accessibility: reduced-motion overrides all entrance and modal transitions. */
@media(prefers-reduced-motion:reduce){
  [data-reveal],
  [data-reveal].sh-reveal-from-left,
  [data-reveal].sh-reveal-from-right,
  [data-reveal].sh-reveal-from-up,
  [data-reveal].sh-reveal-card-left,
  [data-reveal].sh-reveal-card-right,
  [data-reveal].is-visible,
  .sh-reveal-child,
  [data-reveal].is-visible .sh-reveal-child,
  .sh-process-step,
  .sh-process-step:nth-child(odd),
  .sh-process-step:nth-child(even),
  .sh-process-step.is-entered,
  .sh-modal-grid-item,
  .sh-project-modal,
  .sh-modal-panel,
  .sh-modal-backdrop{
    opacity:1!important;
    filter:none!important;
    transform:none!important;
    transition:none!important;
  }
  .sh-process-step.is-entered .sh-process-node{animation:none!important}
  .sh-marquee-track{animation:none!important}
}

