/* Homepage compositions: local living / industrial / editorial. */
.home-hero {
    min-height: 650px;
    display: grid;
    grid-template-columns: 46% 54%;
    position: relative;
    overflow: hidden;
}
.hero-copy {
    padding: 82px 35px 50px var(--pad);
    align-self: center;
    position: relative;
    z-index: 2;
}
.hero-copy h1 {
    margin: 22px 0;
    font-size: clamp(37px, 4.05vw, 66px);
    line-height: 1.45;
    letter-spacing: .045em;
}
.hero-copy > p {
    font-size: 18px;
    line-height: 2;
    color: var(--muted);
    margin-bottom: 32px;
}
.hero-photo {
    position: relative;
    min-width: 0;
}
.hero-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.photo-caption {
    position: absolute;
    right: 28px;
    bottom: 24px;
    color: white;
    font-size: 13px;
    letter-spacing: .22em;
    text-shadow: 0 1px 8px #000;
}
.hero-note {
    display: flex;
    gap: 20px;
    align-items: center;
    margin-top: 58px;
    font-size: 13px;
}
.hero-note span:first-child {
    padding: 8px 0;
    border-top: 1px solid;
    border-bottom: 1px solid;
    letter-spacing: .12em;
}
.hero-stamp {
    position: absolute;
    left: 41.7%;
    bottom: 42px;
    z-index: 3;
    width: 122px;
    height: 122px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    background: var(--accent);
    border: 7px solid var(--paper);
    color: white;
    font-size: 13px;
    line-height: 1.65;
    text-align: center;
    transform: rotate(-12deg);
}
.hero-stamp b {
    font-size: 18px;
    font-weight: 500;
}
.trust-strip {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr 1.15fr;
    padding: 24px var(--pad);
    gap: 25px;
    border-bottom: 1px solid var(--line);
    font-size: 13px;
}
.trust-strip b {
    display: block;
    font-size: 16px;
    font-weight: 500;
}
.trust-strip > a {
    align-self: center;
    text-align: right;
    font-size: 15px;
}
.about-teaser {
    display: grid;
    grid-template-columns: 1fr 1fr;
    background: var(--soft);
}
.about-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    min-height: 440px;
}
.about-copy {
    padding: 70px var(--pad);
}
.about-copy p {
    color: var(--muted);
}
.cases-section {
    background: var(--paper);
}
.news-section {
    background: var(--soft);
}
.news-grid .card-copy {
    padding-bottom: 0;
}
.home-faq {
    max-width: 1280px;
    margin: auto;
}
.pro .home-hero {
    min-height: 680px;
    display: block;
    color: white;
}
.pro .hero-photo {
    position: absolute;
    inset: 0;
}
.pro .hero-photo::after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(90deg,#0c2035ee 0%,#0c2035bb 37%,#0c203510 100%);
}
.pro .hero-copy {
    padding-top: 82px;
    padding-bottom: 80px;
    max-width: 810px;
}
.pro .hero-copy h1 {
    font-size: clamp(40px,4.7vw,74px);
}
.pro .hero-copy > p {
    color: #f3f6f9;
}
.pro .hero-copy .button {
    background: #99501e;
    border-color: #99501e;
}
.pro .hero-copy .button.secondary {
    color: white;
    background: transparent;
    border-color: #fff8;
}
.pro .hero-stamp {
    left: auto;
    right: var(--pad);
    bottom: 45px;
    border-radius: 0;
    border: 1px solid #ffffff78;
    background: #102333c9;
    transform: none;
}
.pro .hero-note {
    margin-top: 42px;
}
.pro .trust-strip {
    background: var(--dark);
    color: white;
    border: none;
}
.pro .service-grid {
    gap: 1px;
    background: var(--line);
}
.pro .service-grid .card {
    background: var(--paper);
}
.pro .service-grid .card-copy {
    padding: 28px;
}
.pro .case-grid {
    grid-template-columns: 1.3fr 1fr 1fr;
}
.pro .about-teaser {
    background: var(--dark);
    color: white;
}
.pro .about-copy p {
    color: #d5dfe7;
}
.pro .about-copy .button {
    border-color: #d5dfe7;
}
.warm .home-hero {
    grid-template-columns: 52% 48%;
    padding: 45px var(--pad) 65px;
    gap: 45px;
    align-items: center;
}
.warm .hero-copy {
    order: 2;
    padding: 15px 0 15px 15px;
}
.warm .hero-copy h1 {
    font-size: clamp(36px,3.8vw,62px);
}
.warm .hero-photo {
    height: 585px;
    border-radius: 46% 46% 3px 3px;
    overflow: hidden;
}
.warm .hero-stamp {
    left: 43%;
    bottom: 70px;
    background: #974b35;
}
.warm .hero-note {
    margin-top: 32px;
}
.warm .trust-strip {
    background: var(--soft);
}
.warm .about-teaser {
    display: block;
    text-align: center;
    padding: 62px var(--pad);
    background: var(--paper);
}
.warm .about-teaser .about-photo {
    display: none;
}
.warm .about-copy {
    max-width: 860px;
    margin: auto;
    padding: 0;
}
.warm .services-section {
    background: var(--soft);
}
.warm .service-grid .card:nth-child(2) {
    margin-top: 60px;
}
.warm .service-grid .card:nth-child(3) {
    margin-top: 120px;
}
.warm .service-grid .card-image img {
    aspect-ratio: .95;
}
.warm .process-section {
    background: var(--paper);
}
.warm .news-grid {
    display: block;
}
.warm .news-grid .card {
    display: grid;
    grid-template-columns: 28% 1fr;
    gap: 40px;
    border-bottom: 1px solid var(--line);
    padding: 25px 0;
}
.warm .news-grid .card-image {
    border-radius: 0;
}
.warm .news-grid .card-copy {
    padding: 10px 0;
}
@media (max-width: 960px) {
    .home-hero {
        min-height: 570px;
        grid-template-columns: 50% 50%;
    }
    .hero-copy {
        padding-top: 50px;
        padding-bottom: 35px;
    }
    .hero-copy h1 {
        font-size: 38px;
    }
    .hero-copy > p {
        font-size: 16px;
    }
    .hero-stamp {
        left: 43%;
        width: 105px;
        height: 105px;
    }
    .hero-note {
        flex-wrap: wrap;
        gap: 10px;
        margin-top: 28px;
    }
    .trust-strip {
        grid-template-columns: repeat(3,1fr);
    }
    .trust-strip > a {
        display: none;
    }
    .about-copy {
        padding: 45px 28px;
    }
    .warm .home-hero {
        gap: 22px;
        grid-template-columns: 48% 52%;
    }
    .warm .hero-copy {
        padding-left: 0;
    }
    .warm .hero-photo {
        height: 500px;
    }
    .warm .hero-copy h1 {
        font-size: 36px;
    }
    .warm .hero-stamp {
        left: 36%;
    }
}
@media (max-width: 680px) {
    .home-hero {
        display: flex;
        flex-direction: column;
    }
    .hero-copy {
        padding: 40px var(--pad) 35px;
        width: 100%;
    }
    .hero-copy h1 {
        font-size: clamp(34px,8.5vw,45px);
        margin-top: 16px;
    }
    .hero-copy > p {
        font-size: 16px;
    }
    .hero-photo {
        height: 330px;
        width: 100%;
    }
    .hero-note {
        margin-top: 28px;
        font-size: 13px;
    }
    .hero-stamp {
        left: auto;
        right: 22px;
        bottom: 24px;
    }
    .trust-strip {
        gap: 14px;
        padding: 22px var(--pad);
    }
    .trust-strip b {
        font-size: 14px;
    }
    .about-teaser {
        grid-template-columns: 1fr;
    }
    .about-photo img {
        min-height: 0;
        height: 280px;
    }
    .about-copy {
        padding: 42px var(--pad);
    }
    .pro .home-hero {
        min-height: 650px;
    }
    .pro .hero-copy {
        padding: 58px var(--pad) 160px;
    }
    .pro .hero-copy h1 {
        font-size: 40px;
    }
    .pro .hero-photo {
        height: 100%;
    }
    .pro .hero-photo::after {
        background: linear-gradient(90deg,#0c2035ee,#0c20357a);
    }
    .pro .hero-stamp {
        bottom: 25px;
    }
    .pro .case-grid {
        grid-template-columns: 1fr;
    }
    .warm .home-hero {
        display: flex;
        padding: 32px var(--pad) 42px;
        gap: 20px;
    }
    .warm .hero-copy {
        order: 0;
        padding: 0;
    }
    .warm .hero-copy h1 {
        font-size: 38px;
    }
    .warm .hero-photo {
        height: 380px;
        border-radius: 43% 43% 3px 3px;
    }
    .warm .hero-stamp {
        left: auto;
        right: 12px;
        bottom: 70px;
    }
    .warm .service-grid .card:nth-child(n) {
        margin-top: 0;
    }
    .warm .service-grid .card-image img {
        aspect-ratio: 1.3;
    }
    .warm .news-grid .card {
        grid-template-columns: 1fr;
        gap: 16px;
    }
    .warm .news-grid .card-image img {
        aspect-ratio: 1.6;
    }
}
.photo-caption {
    left: 25px;
    right: auto;
}
@media (max-width: 680px) {
    .photo-caption {
        display: none;
    }
    .trust-strip b {
        font-size: 13px;
    }
}
/* Homepage revision: photographic depth, material textures and closer spacing. */
.page-index .section {
    padding-top: 64px;
    padding-bottom: 64px;
}
.page-index .section-heading {
    margin-bottom: 32px;
}
.parallax-section {
    position: relative;
    isolation: isolate;
    overflow: hidden;
}
.parallax-media {
    position: absolute;
    inset: -100px 0;
    z-index: -2;
    pointer-events: none;
    transform: translate3d(0, 0, 0);
}
.parallax-media img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.parallax-section::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: -1;
    background: linear-gradient(110deg, rgba(13, 32, 27, .91), rgba(13, 32, 27, .51));
}
.page-index .process-section {
    padding-top: 74px;
    padding-bottom: 74px;
    background: none;
    color: #fff;
}
.page-index .process-section .eyebrow {
    color: #efcf9b;
}
.page-index .process-section .steps {
    gap: 22px;
}
.page-index .process-section .step,
.page-index .process-section .step:first-child {
    border: 1px solid rgba(255, 255, 255, .28);
    padding: 28px 30px;
    background: rgba(12, 31, 27, .6);
}
.page-index .process-section .step-no {
    font-family: "Noto Sans TC", "Microsoft JhengHei", sans-serif;
    color: #edc386;
    font-size: 45px;
    margin-bottom: 18px;
}
.page-index .process-section p {
    color: #f1f3ee;
    margin-bottom: 0;
}
.page-index .cases-section {
    background-color: var(--paper);
    background-image: linear-gradient(90deg, transparent 99%, rgba(85, 105, 89, .06) 99%), linear-gradient(0deg, transparent 99%, rgba(85, 105, 89, .06) 99%);
    background-size: 96px 96px;
}
.page-index .case-grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 30px;
}
.page-index .case-grid .card {
    background: var(--paper);
    border: 1px solid var(--line);
    box-shadow: 0 9px 26px rgba(26, 47, 36, .045);
}
.page-index .case-grid .card-copy {
    padding: 24px;
}
.page-index .news-section {
    background: linear-gradient(rgba(248, 246, 237, .87), rgba(248, 246, 237, .9)), url('../images/background.jpg') center / cover;
}
.page-index .news-grid .card-copy {
    padding: 24px;
    background: var(--paper);
    border-bottom: 3px solid var(--highlight);
}
.page-index .home-faq {
    max-width: none;
    display: grid;
    grid-template-columns: .8fr 1.2fr;
    gap: 65px;
    background: linear-gradient(135deg, var(--paper) 55%, var(--soft) 55%);
}
.page-index .home-faq .section-heading {
    display: block;
    align-self: center;
    margin-bottom: 0;
}
.page-index .home-faq .section-heading .text-link {
    margin-top: 24px;
}
.page-index .home-faq .faq-list {
    background: rgba(255, 255, 255, .72);
    padding: 0 25px;
    border: 1px solid var(--line);
}
.page-index .closing-cta.parallax-section {
    background: none;
    color: white;
    min-height: 300px;
}
.page-index .closing-cta.parallax-section::before {
    background: linear-gradient(90deg, rgba(21, 52, 40, .94), rgba(21, 52, 40, .48));
}
.page-index .closing-cta.parallax-section .button {
    background: #fff8e8;
    border-color: #fff8e8;
    color: #233e34;
}
.local.page-index .services-section {
    background: linear-gradient(100deg, rgba(251, 250, 245, .92), rgba(237, 239, 223, .83)), url('../images/background.jpg') center / cover;
}
.local.page-index .service-grid .card {
    background: #fffdf8;
    border-bottom: 3px solid #b19762;
}
.local.page-index .service-grid .card-copy {
    padding: 25px;
}
.local.page-index .about-copy {
    padding-top: 55px;
    padding-bottom: 55px;
    background: linear-gradient(rgba(237, 235, 219, .88), rgba(237, 235, 219, .88)), url('../images/background.jpg') center / cover;
}
.pro.page-index .process-section::before {
    background: linear-gradient(110deg, rgba(12, 31, 48, .96), rgba(12, 31, 48, .62));
}
.pro.page-index .process-section .step {
    background: rgba(11, 31, 48, .72);
    border-top: 3px solid #e2a15c;
}
.pro.page-index .services-section {
    background: linear-gradient(rgba(16, 35, 51, .7), rgba(16, 35, 51, .9)), url('../images/background.jpg') center / cover;
    color: white;
}
.pro.page-index .service-grid {
    gap: 24px;
    background: transparent;
}
.pro.page-index .service-grid .card {
    color: var(--ink);
}
.pro.page-index .news-section {
    background-color: #e6edf2;
    background-image: repeating-linear-gradient(135deg, transparent, transparent 30px, rgba(40, 65, 85, .035) 30px, rgba(40, 65, 85, .035) 31px);
}
.pro.page-index .closing-cta.parallax-section::before {
    background: linear-gradient(90deg, rgba(9, 30, 47, .95), rgba(9, 30, 47, .55));
}
.warm.page-index .about-teaser {
    display: flex;
    text-align: left;
    align-items: center;
    justify-content: flex-end;
    min-height: 500px;
    padding: 55px var(--pad);
    background: none;
}
.warm.page-index .about-teaser::before {
    background: linear-gradient(90deg, rgba(74, 40, 27, .15), rgba(74, 40, 27, .42));
}
.warm.page-index .about-copy {
    max-width: 650px;
    margin: 0;
    padding: 38px 42px;
    background: rgba(255, 250, 242, .96);
    border-left: 4px solid var(--accent);
}
.warm.page-index .services-section {
    background: linear-gradient(rgba(251, 239, 222, .8), rgba(251, 239, 222, .89)), url('../images/background.jpg') center / cover;
}
.warm.page-index .service-grid .card {
    background: #fffaf3;
}
.warm.page-index .service-grid .card-copy {
    padding: 24px;
}
.warm.page-index .service-grid .card:nth-child(2) {
    margin-top: 24px;
}
.warm.page-index .service-grid .card:nth-child(3) {
    margin-top: 48px;
}
.warm.page-index .process-section::before {
    background: linear-gradient(100deg, rgba(70, 34, 23, .93), rgba(70, 34, 23, .6));
}
.warm.page-index .process-section .step {
    background: rgba(64, 29, 20, .6);
}
.warm.page-index .news-section {
    background: linear-gradient(rgba(255, 250, 243, .91), rgba(255, 250, 243, .94)), url('../images/background.jpg') center / cover;
}
.warm.page-index .news-grid .card {
    align-items: center;
    gap: 0;
    margin-bottom: 22px;
    padding: 0;
    background: #fffaf3;
    border: 1px solid var(--line);
}
.warm.page-index .news-grid .card-copy {
    padding: 24px 32px;
    border-bottom: none;
    background: transparent;
}
@media (max-width: 960px) {
    .page-index .section {
        padding-top: 50px;
        padding-bottom: 50px;
    }
    .page-index .case-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .page-index .home-faq {
        gap: 30px;
    }
    .page-index .process-section .step,
    .page-index .process-section .step:first-child {
        padding: 24px 20px;
    }
}
@media (max-width: 680px) {
    .page-index .section {
        padding-top: 42px;
        padding-bottom: 42px;
    }
    .page-index .case-grid,
    .page-index .home-faq {
        grid-template-columns: 1fr;
    }
    .page-index .home-faq .section-heading {
        margin-bottom: 0;
    }
    .page-index .process-section .steps {
        gap: 16px;
    }
    .page-index .closing-cta.parallax-section {
        min-height: 280px;
    }
    .warm.page-index .about-teaser {
        min-height: 0;
        padding: 42px var(--pad);
    }
    .warm.page-index .about-copy {
        padding: 27px 24px;
    }
    .warm.page-index .service-grid .card:nth-child(n) {
        margin-top: 0;
    }
    .warm.page-index .news-grid .card-copy {
        padding: 24px;
    }
}
@media (prefers-reduced-motion: reduce), (max-width: 760px), (pointer: coarse) {
    .parallax-media {
        transform: none !important;
    }
}

