/* SS生活販賣機 — 前台樣式（品牌淺藍 SIMPLE & SMART） */
:root {
  --brand: #1E93BE;        /* 主按鈕、連結（白字對比足夠） */
  --brand-dark: #16759A;
  --sky: #56C0D1;          /* 原網站品牌淺藍 */
  --sky-2: #8CCFDB;
  --sky-soft: #E4F4F8;
  --navy: #1F5A8F;         /* Logo 深藍 */
  --navy-dark: #173F63;
  --bg: #F4FAFC;
  --paper: #FFFFFF;
  --ink: #2F3E4E;
  --muted: #66788A;
  --line: #D8EAF1;
  --radius: 18px;
  --shadow: 0 14px 36px rgba(31, 90, 143, .12);
  --shadow-sm: 0 4px 16px rgba(31, 90, 143, .08);
  --font: "PingFang TC", "Noto Sans TC", "Microsoft JhengHei", "Heiti TC", system-ui, -apple-system, "Segoe UI", sans-serif;
}

html { scroll-behavior: smooth; }
body { font-family: var(--font); color: var(--ink); background: var(--bg); line-height: 1.8; letter-spacing: .02em; -webkit-font-smoothing: antialiased; }
a { color: var(--brand); text-decoration: none; }
a:hover { color: var(--brand-dark); }
img, video { max-width: 100%; }
.text-brand { color: var(--brand) !important; }
.text-sky { color: var(--sky) !important; }
.text-navy { color: var(--navy) !important; }
.text-muted2 { color: var(--muted) !important; }
.bg-paper { background: var(--paper); }
.bg-sky-soft { background: var(--sky-soft); }
.skip-link { position: absolute; left: 1rem; top: .5rem; z-index: 2000; background: #fff; padding: .5rem 1rem; border-radius: 8px; }

/* Buttons */
.btn { font-weight: 600; letter-spacing: .04em; }
.btn-brand { background: var(--brand); border-color: var(--brand); color: #fff; }
.btn-brand:hover, .btn-brand:focus { background: var(--brand-dark); border-color: var(--brand-dark); color: #fff; }
.btn-navy { background: var(--navy); border-color: var(--navy); color: #fff; }
.btn-navy:hover, .btn-navy:focus { background: var(--navy-dark); border-color: var(--navy-dark); color: #fff; }
.btn-soft { background: #fff; border: 1px solid var(--line); color: var(--ink); }
.btn-soft:hover { border-color: var(--brand); color: var(--brand); }
.btn-ghost { background: rgba(255, 255, 255, .14); border: 1px solid rgba(255, 255, 255, .7); color: #fff; backdrop-filter: blur(4px); }
.btn-ghost:hover { background: #fff; color: var(--navy); }
.btn-lg { padding: .8rem 1.8rem; border-radius: 999px; }

/* Topbar & header */
.topbar { background: var(--navy-dark); color: #d6e8f3; font-size: .82rem; padding: .35rem 0; }
.topbar a { color: #d6e8f3; }
.topbar a:hover { color: #fff; }
.site-header { background: rgba(255, 255, 255, .96); backdrop-filter: saturate(160%) blur(10px); border-bottom: 1px solid var(--line); }
.navbar { padding: .6rem 0; }
.navbar-brand img { height: 42px; width: auto; }
.navbar .nav-link { color: var(--ink); font-weight: 600; padding: .5rem .9rem !important; position: relative; }
.navbar .nav-link::after { content: ""; position: absolute; left: .9rem; right: .9rem; bottom: .2rem; height: 2px; background: var(--sky); transform: scaleX(0); transition: transform .2s; border: 0; margin: 0; }
.navbar .nav-link:hover, .navbar .nav-link.active, .navbar .nav-link.show { color: var(--brand); }
.navbar .nav-link:hover::after, .navbar .nav-link.active::after { transform: scaleX(1); }
.navbar-toggler { border: 0; font-size: 1.8rem; color: var(--ink); }
.navbar-toggler:focus { box-shadow: none; }
.dropdown-menu { border: 0; border-radius: 12px; box-shadow: var(--shadow); padding: .5rem; border-top: 3px solid var(--sky); }
.dropdown-item { border-radius: 8px; padding: .5rem 1rem; }
.dropdown-item:hover, .dropdown-item:focus { background: var(--sky-soft); color: var(--brand-dark); }
@media (min-width: 992px) {
  .navbar .dropdown:hover > .dropdown-menu { display: block; margin-top: 0; }
  .navbar .dropdown-toggle::after { display: none; }
}

/* Sections */
.section { padding: 96px 0; }
.section-sm { padding: 60px 0; }
.eyebrow { display: inline-block; font-size: .78rem; font-weight: 700; letter-spacing: .25em; color: var(--sky); text-transform: uppercase; margin-bottom: .6rem; }
.eyebrow::before { content: ""; display: inline-block; width: 28px; height: 2px; background: var(--sky); vertical-align: middle; margin-right: .6rem; }
.section-title { font-size: clamp(1.6rem, 3vw, 2.3rem); font-weight: 800; line-height: 1.4; margin-bottom: .8rem; color: var(--ink); }
.section-lead { color: var(--muted); font-size: 1.05rem; max-width: 680px; }
.text-center .eyebrow::after { content: ""; display: inline-block; width: 28px; height: 2px; background: var(--sky); vertical-align: middle; margin-left: .6rem; }

/* Hero (video) */
.hero { position: relative; overflow: hidden; color: #fff; min-height: min(86vh, 760px); display: flex; align-items: center; background: var(--navy) center/cover no-repeat; }
.hero-video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.hero::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(100deg, rgba(23, 63, 99, .88) 0%, rgba(30, 147, 190, .62) 52%, rgba(86, 192, 209, .25) 100%); }
.hero .container { position: relative; z-index: 2; padding-top: 60px; padding-bottom: 90px; }
.hero .slogan { font-size: .9rem; letter-spacing: .5em; font-weight: 700; color: #bfe9f2; margin-bottom: 1rem; }
.hero h1 { font-size: clamp(2.2rem, 5vw, 3.8rem); font-weight: 900; line-height: 1.3; letter-spacing: .06em; text-shadow: 0 2px 20px rgba(0, 0, 0, .15); }
.hero h1 .hl { color: #9BE3EE; }
.hero p.lead { color: rgba(255, 255, 255, .9); font-size: 1.12rem; max-width: 560px; }
.hero-scroll { position: absolute; left: 50%; bottom: 22px; z-index: 2; transform: translateX(-50%); color: #fff; font-size: 1.6rem; animation: bob 2s infinite; }
@keyframes bob { 0%, 100% { transform: translate(-50%, 0); } 50% { transform: translate(-50%, 8px); } }
@media (prefers-reduced-motion: reduce) { .hero-scroll { animation: none; } html { scroll-behavior: auto; } }

/* Banner slides */
.banner-wrap { margin-top: -70px; position: relative; z-index: 3; }
.banner-card { background: #fff; border-radius: 24px; box-shadow: var(--shadow); overflow: hidden; }
.banner-card .img { background: var(--sky-soft); min-height: 320px; height: 100%; }
.banner-card .img img { width: 100%; height: 100%; object-fit: cover; display: block; min-height: 320px; }
.banner-card .txt { padding: clamp(1.8rem, 4vw, 3rem); }
.banner-card h2 { font-weight: 900; font-size: clamp(1.5rem, 3vw, 2.2rem); color: var(--navy); }
.carousel-indicators.static { position: static; margin: 1rem 0 0; justify-content: center; }
.carousel-indicators [data-bs-target] { width: 28px; height: 4px; border-radius: 2px; background: var(--sky); border: 0; }

/* Stats */
.stats { background: #fff; border-radius: var(--radius); box-shadow: var(--shadow-sm); }
.stat { text-align: center; padding: 1.6rem 1rem; }
.stat .num { font-size: 2.2rem; font-weight: 900; color: var(--brand); line-height: 1.1; font-family: "Helvetica Neue", Arial, var(--font); }
.stat .lbl { color: var(--muted); font-size: .9rem; }
.stats .col + .col .stat { border-left: 1px solid var(--line); }
@media (max-width: 767px) { .stats .col:nth-child(3) .stat { border-left: 0; } .stats .col:nth-child(n+3) .stat { border-top: 1px solid var(--line); } }

/* Brand film */
.film { position: relative; border-radius: 24px; overflow: hidden; box-shadow: var(--shadow); background: #000; aspect-ratio: 16 / 9; }
.film video, .film iframe { width: 100%; height: 100%; display: block; border: 0; object-fit: cover; }
.film-play { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; background: linear-gradient(0deg, rgba(23, 63, 99, .55), rgba(23, 63, 99, .1)); border: 0; width: 100%; color: #fff; cursor: pointer; }
.film-play .circle { width: 86px; height: 86px; border-radius: 50%; background: rgba(255, 255, 255, .95); color: var(--brand); display: flex; align-items: center; justify-content: center; font-size: 2.4rem; box-shadow: 0 0 0 12px rgba(255, 255, 255, .25); transition: transform .2s; }
.film-play:hover .circle { transform: scale(1.08); }
.film-play .cap { position: absolute; left: 24px; bottom: 18px; font-weight: 700; letter-spacing: .1em; text-shadow: 0 1px 8px rgba(0, 0, 0, .4); }

/* Service tiles (原網站色塊風格) */
.svc-tile { border-radius: 14px; color: #fff; padding: 1.6rem 1.4rem; height: 100%; display: flex; flex-direction: column; transition: transform .25s, box-shadow .25s; }
.svc-tile:hover { transform: translateY(-4px); box-shadow: var(--shadow); }
.svc-tile i { font-size: 2rem; opacity: .9; margin-bottom: .8rem; }
.svc-tile h3 { font-size: 1.35rem; font-weight: 900; letter-spacing: .12em; margin-bottom: .5rem; }
.svc-tile p { font-size: .9rem; margin: 0; opacity: .92; }
.svc:nth-child(5n+1) .svc-tile { background: #3FA4B3; }
.svc:nth-child(5n+2) .svc-tile { background: #6EC3D3; }
.svc:nth-child(5n+3) .svc-tile { background: #5E9FC3; }
.svc:nth-child(5n+4) .svc-tile { background: #7DB4CE; }
.svc:nth-child(5n+5) .svc-tile { background: #2F86B5; }
.svc-tile.img { padding: 0; overflow: hidden; background: none !important; }
.svc-tile.img img { width: 100%; display: block; }

/* About split */
.photo-stack { position: relative; padding: 0 0 40px 40px; }
.photo-stack .p1 { border-radius: 20px; box-shadow: var(--shadow); width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.photo-stack .p2 { position: absolute; left: 0; bottom: 0; width: 46%; border-radius: 16px; border: 6px solid #fff; box-shadow: var(--shadow); aspect-ratio: 4 / 3; object-fit: cover; }
.photo-stack::before { content: ""; position: absolute; right: -16px; top: -16px; width: 120px; height: 120px; background: radial-gradient(var(--sky) 2px, transparent 2.5px) 0 0 / 14px 14px; opacity: .5; }
.check-list { list-style: none; padding: 0; }
.check-list li { position: relative; padding-left: 2rem; margin-bottom: .6rem; }
.check-list li::before { content: "\F26E"; font-family: bootstrap-icons; position: absolute; left: 0; top: 0; color: var(--sky); font-size: 1.2rem; }

/* Payment logos */
.pay-logos { display: flex; flex-wrap: wrap; gap: .8rem; align-items: center; }
.pay-logos .pl { background: #fff; border-radius: 12px; height: 64px; min-width: 64px; padding: 8px 10px; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow-sm); }
.pay-logos .pl img { max-height: 46px; max-width: 90px; object-fit: contain; }
.pay-logos .pl span { font-weight: 700; font-size: .85rem; }

/* Gallery */
.gallery { columns: 3 260px; column-gap: 14px; }
.gallery a { display: block; margin-bottom: 14px; border-radius: 14px; overflow: hidden; position: relative; break-inside: avoid; box-shadow: var(--shadow-sm); }
.gallery img { width: 100%; display: block; transition: transform .4s; }
.gallery a:hover img { transform: scale(1.04); }
.gallery a .cap { position: absolute; left: 0; right: 0; bottom: 0; padding: 1.4rem .9rem .6rem; color: #fff; font-size: .85rem; font-weight: 600; background: linear-gradient(transparent, rgba(23, 63, 99, .8)); opacity: 0; transition: opacity .3s; }
.gallery a:hover .cap, .gallery a:focus .cap { opacity: 1; }
.lightbox .modal-content { background: transparent; border: 0; }
.lightbox img { border-radius: 12px; max-height: 82vh; width: auto; margin: 0 auto; display: block; }
.lightbox .btn-close { position: absolute; right: 0; top: -40px; }

/* Coop */
.coop-card { padding: 2rem; border-top: 4px solid var(--sky); }
.coop-card .tag { font-size: .78rem; font-weight: 700; color: var(--brand); letter-spacing: .15em; }
.coop-card .num { font-size: 2.6rem; font-weight: 900; color: var(--sky-soft); line-height: 1; float: right; }

/* Cards */
.card-soft { background: #fff; border: 0; border-radius: var(--radius); box-shadow: var(--shadow-sm); transition: transform .25s ease, box-shadow .25s ease; height: 100%; }
.card-soft:hover { transform: translateY(-4px); box-shadow: var(--shadow); }

/* Machines */
.machine-card { overflow: hidden; }
.machine-card .thumb { aspect-ratio: 1 / 1; background: linear-gradient(180deg, #fff, var(--sky-soft)); overflow: hidden; display: flex; align-items: center; justify-content: center; }
.machine-card .thumb img { width: 100%; height: 100%; object-fit: contain; padding: 1rem; transition: transform .4s ease; }
.machine-card:hover .thumb img { transform: scale(1.04); }
.machine-hero-img { background: linear-gradient(180deg, #fff, var(--sky-soft)); border-radius: var(--radius); padding: 1.5rem; }
.machine-hero-img img { width: 100%; aspect-ratio: 1 / 1; object-fit: contain; }
.spec-table th { color: var(--muted); font-weight: 600; width: 38%; white-space: nowrap; }
.spec-table td, .spec-table th { padding: .65rem .5rem; border-color: var(--line); }

/* News */
.news-card { overflow: hidden; display: flex; flex-direction: column; }
.news-card .thumb { aspect-ratio: 16 / 10; background: var(--sky-soft); overflow: hidden; display: block; }
.news-card .thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.news-card:hover .thumb img { transform: scale(1.04); }
.news-card .body { padding: 1.3rem 1.4rem 1.5rem; flex: 1; display: flex; flex-direction: column; }
.news-card h3 { font-size: 1.05rem; font-weight: 800; line-height: 1.55; }
.news-card h3 a { color: var(--ink); }
.news-card h3 a:hover { color: var(--brand); }
.news-meta { font-size: .82rem; color: var(--muted); display: flex; gap: .8rem; flex-wrap: wrap; align-items: center; }
.cat-badge { font-size: .75rem; font-weight: 700; padding: .15rem .6rem; border-radius: 4px; }
.cat-media { background: var(--sky-soft); color: var(--brand-dark); }
.cat-event { background: #E3EDF7; color: var(--navy); }
.cat-discount { background: #E0F3F1; color: #217D78; }
.thumb-art { width: 100%; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: .3rem; color: #fff; background: linear-gradient(135deg, var(--sky), var(--navy)); }
.thumb-art i { font-size: 2.8rem; }
.thumb-art span { font-weight: 800; letter-spacing: .15em; font-size: .9rem; opacity: .85; }
.filter-pills { display: flex; flex-wrap: wrap; gap: .5rem; }
.filter-pills a, .filter-pills button { padding: .45rem 1.2rem; border-radius: 999px; background: #fff; color: var(--ink); font-weight: 600; border: 1px solid var(--line); }
.filter-pills a.active, .filter-pills a:hover, .filter-pills button.active, .filter-pills button:hover { background: var(--brand); color: #fff; border-color: var(--brand); }

/* Page head (photo banner) */
.page-head { padding: 72px 0 60px; background: var(--navy) center/cover no-repeat; position: relative; color: #fff; }
.page-head::before { content: ""; position: absolute; inset: 0; background: linear-gradient(100deg, rgba(23, 63, 99, .9), rgba(30, 147, 190, .65)); }
.page-head .container { position: relative; z-index: 1; }
.page-head h1 { font-weight: 900; font-size: clamp(1.8rem, 4vw, 2.6rem); letter-spacing: .08em; }
.page-head p { color: rgba(255, 255, 255, .85); margin: 0; }
.breadcrumb { font-size: .85rem; margin-bottom: .6rem; --bs-breadcrumb-divider-color: rgba(255, 255, 255, .6); --bs-breadcrumb-item-active-color: #fff; }
.breadcrumb a { color: rgba(255, 255, 255, .75); }
.breadcrumb a:hover { color: #fff; }

/* Rich content */
.prose { background: #fff; border-radius: var(--radius); box-shadow: var(--shadow-sm); padding: clamp(1.5rem, 4vw, 3rem); }
.prose h2 { font-weight: 800; font-size: 1.5rem; margin: 2.2rem 0 1rem; padding-left: .9rem; border-left: 5px solid var(--sky); color: var(--navy); }
.prose h2:first-child { margin-top: 0; }
.prose h3 { font-weight: 800; font-size: 1.15rem; margin: 1.6rem 0 .6rem; color: var(--brand); }
.prose p, .prose li { color: #44515F; }
.prose img { border-radius: 14px; height: auto; }
.prose figure { margin: 1.5rem 0; }
.prose figcaption { font-size: .85rem; color: var(--muted); text-align: center; margin-top: .5rem; }
.prose video { width: 100%; border-radius: 14px; background: #000; }
.prose .img-row { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; margin: 1.2rem 0; }
.prose .img-row img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; }
.prose table { width: 100%; border-collapse: separate; border-spacing: 0; margin: 1rem 0 2rem; border-radius: 12px; overflow: hidden; border: 1px solid var(--line); }
.prose th { background: var(--brand); color: #fff; padding: .8rem 1rem; font-weight: 700; }
.prose td { padding: .8rem 1rem; border-top: 1px solid var(--line); vertical-align: top; }
.prose tr:nth-child(even) td { background: #F7FBFD; }
.prose td:first-child { font-weight: 700; white-space: nowrap; }
.prose blockquote { background: var(--sky-soft); border-radius: 12px; padding: 1rem 1.4rem; color: var(--brand-dark); }
@media (max-width: 575px) { .prose table { display: block; overflow-x: auto; } }

/* Locations */
.loc-item { cursor: pointer; padding: 1.1rem 1.2rem; border-radius: 14px; background: #fff; border: 2px solid transparent; box-shadow: var(--shadow-sm); margin-bottom: .8rem; transition: border-color .2s; }
.loc-item:hover, .loc-item.active { border-color: var(--sky); }
.loc-item h3 { font-size: 1.02rem; font-weight: 800; margin-bottom: .2rem; }
.loc-item .meta { font-size: .85rem; color: var(--muted); }
.map-box { border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow-sm); background: #fff; height: 100%; min-height: 420px; }
.map-box iframe { width: 100%; height: 100%; min-height: 420px; border: 0; display: block; }
.loc-list { max-height: 560px; overflow-y: auto; padding-right: .3rem; }

/* Partners */
.partner { background: #fff; border-radius: 14px; padding: 1rem; text-align: center; box-shadow: var(--shadow-sm); height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; min-height: 120px; transition: transform .2s; }
.partner:hover { transform: translateY(-3px); }
.partner img { max-height: 70px; max-width: 100%; object-fit: contain; margin-bottom: .3rem; opacity: .75; transition: opacity .3s; }
.partner:hover img { opacity: 1; }
.partner .ph { width: 52px; height: 52px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-weight: 900; font-size: 1.2rem; margin-bottom: .4rem; background: var(--sky-soft); color: var(--brand-dark); }
.partner span { font-size: .85rem; font-weight: 600; color: var(--muted); }
.logo-marquee { overflow: hidden; mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); -webkit-mask-image: linear-gradient(90deg, transparent, #000 8%, #000 92%, transparent); }
.logo-track { display: flex; gap: 1rem; width: max-content; animation: marquee 50s linear infinite; }
.logo-track .lg { width: 150px; height: 100px; background: #fff; border-radius: 12px; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow-sm); flex-shrink: 0; }
.logo-track .lg img { max-width: 110px; max-height: 64px; opacity: .8; }
.logo-track .lg span { font-weight: 700; color: var(--muted); }
@keyframes marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .logo-track { animation: none; flex-wrap: wrap; width: auto; justify-content: center; } }

/* CTA */
.cta { color: #fff; border-radius: 24px; padding: clamp(2rem, 5vw, 3.5rem); position: relative; overflow: hidden; background: var(--navy) center/cover no-repeat; }
.cta::before { content: ""; position: absolute; inset: 0; background: linear-gradient(100deg, rgba(23, 63, 99, .92), rgba(30, 147, 190, .75)); }
.cta > * { position: relative; z-index: 1; }
.cta h2 { font-weight: 900; }
.cta .btn-light { color: var(--navy); }

/* Forms */
.form-card { background: #fff; border-radius: var(--radius); box-shadow: var(--shadow-sm); padding: clamp(1.5rem, 4vw, 2.5rem); }
.form-control, .form-select { border-radius: 10px; border: 1px solid var(--line); padding: .7rem 1rem; }
.form-control:focus, .form-select:focus { border-color: var(--sky); box-shadow: 0 0 0 .25rem rgba(86, 192, 209, .2); }
.form-label { font-weight: 700; font-size: .92rem; }
.form-check-input:checked { background-color: var(--brand); border-color: var(--brand); }
.type-pick { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: .6rem; }
.type-pick input { position: absolute; opacity: 0; pointer-events: none; }
.type-pick label { display: block; border: 1px solid var(--line); border-radius: 10px; padding: .65rem .8rem; cursor: pointer; font-weight: 600; font-size: .92rem; text-align: center; background: #fff; transition: all .15s; }
.type-pick input:checked + label { border-color: var(--brand); background: var(--sky-soft); color: var(--brand-dark); box-shadow: inset 0 0 0 1px var(--brand); }
.type-pick input:focus-visible + label { outline: 3px solid rgba(86, 192, 209, .5); }
.hp-field { position: absolute !important; left: -9999px !important; }
.info-tile { display: flex; gap: 1rem; align-items: flex-start; padding: 1.1rem 0; border-bottom: 1px solid var(--line); }
.info-tile:last-child { border-bottom: 0; }
.info-tile .ib { width: 46px; height: 46px; border-radius: 12px; flex-shrink: 0; background: var(--sky-soft); color: var(--brand); display: flex; align-items: center; justify-content: center; font-size: 1.2rem; }
.qr-box { text-align: center; }
.qr-box img { width: 110px; height: 110px; border-radius: 8px; background: #fff; padding: 6px; }
.qr-box div { font-size: .8rem; margin-top: .3rem; }

/* Footer */
.site-footer { background: var(--navy-dark); color: #d3e3ee; padding: 64px 0 24px; margin-top: 96px; position: relative; }
.site-footer::before { content: ""; position: absolute; left: 0; right: 0; top: 0; height: 4px; background: linear-gradient(90deg, var(--sky), var(--brand), var(--navy)); }
.site-footer h6 { color: var(--sky); font-weight: 800; margin-bottom: 1rem; letter-spacing: .15em; }
.site-footer a { color: #d3e3ee; }
.site-footer a:hover { color: #fff; }
.site-footer li { margin-bottom: .45rem; font-size: .93rem; }
.footer-logo { height: 44px; width: auto; }
.footer-group { height: 30px; width: auto; opacity: .85; }
.contact-list i { color: var(--sky); margin-right: .5rem; }
.social a { width: 38px; height: 38px; border-radius: 50%; background: rgba(255, 255, 255, .1); display: inline-flex; align-items: center; justify-content: center; }
.social a:hover { background: var(--sky); color: #fff; }
.footer-bottom { border-top: 1px solid rgba(255, 255, 255, .12); margin-top: 40px; padding-top: 20px; font-size: .82rem; opacity: .7; }
.to-top { position: fixed; right: 18px; bottom: 18px; width: 46px; height: 46px; border-radius: 50%; background: var(--brand); color: #fff; display: flex; align-items: center; justify-content: center; box-shadow: var(--shadow); opacity: 0; pointer-events: none; transition: opacity .3s; z-index: 1000; }
.to-top.show { opacity: 1; pointer-events: auto; }
.to-top:hover { color: #fff; background: var(--brand-dark); }

/* Reveal */
.reveal { opacity: 0; transform: translateY(18px); transition: opacity .6s ease, transform .6s ease; }
.reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .reveal { opacity: 1; transform: none; } }

.empty-state { text-align: center; padding: 4rem 1rem; color: var(--muted); }
.empty-state i { font-size: 3rem; color: var(--line); }
.pagination .page-link { border-radius: 8px !important; margin: 0 .2rem; border: 0; color: var(--ink); font-weight: 700; }
.pagination .page-item.active .page-link { background: var(--brand); color: #fff; }

/* ===== 2024 簡報內容元件 ===== */
.prose .badge-row { display: flex; flex-wrap: wrap; gap: .6rem; margin: 1rem 0 1.4rem; }
.prose .badge-row span { background: var(--navy); color: #fff; border-radius: 999px; padding: .45rem 1.1rem; font-weight: 700; font-size: .92rem; }
.prose .badge-row i { margin-right: .4rem; color: #9BE3EE; }
.prose .chain { display: flex; flex-wrap: wrap; gap: 0; margin: .8rem 0 1.6rem; counter-reset: c; }
.prose .chain span { flex: 1 1 120px; text-align: center; padding: .8rem .6rem; background: var(--sky-soft); color: var(--navy); font-weight: 800; position: relative; border-right: 3px solid #fff; }
.prose .chain span:nth-child(even) { background: #D3EDF4; }
.prose .chain span:first-child { border-radius: 10px 0 0 10px; }
.prose .chain span:last-child { border-radius: 0 10px 10px 0; border-right: 0; }
.prose .timeline { position: relative; margin: 1rem 0 2rem; padding-left: 1.6rem; }
.prose .timeline::before { content: ""; position: absolute; left: 6px; top: 6px; bottom: 6px; width: 3px; background: linear-gradient(var(--sky), var(--navy)); border-radius: 3px; }
.prose .tl-item { position: relative; padding: 0 0 1.4rem 1rem; display: grid; grid-template-columns: 140px 1fr; gap: 1rem; }
.prose .tl-item::before { content: ""; position: absolute; left: -1.6rem; top: 4px; width: 15px; height: 15px; border-radius: 50%; background: #fff; border: 3px solid var(--brand); }
.prose .tl-date { font-weight: 900; color: var(--brand); white-space: nowrap; }
.prose .tl-body h3 { margin: 0 0 .2rem; font-size: 1.08rem; color: var(--navy); }
.prose .tl-body p { margin: 0; }
@media (max-width: 575px) { .prose .tl-item { grid-template-columns: 1fr; gap: .2rem; } }
.prose .feat-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; margin: 1rem 0 1.8rem; }
.prose .feat-grid.two { grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); }
.prose .feat { background: var(--sky-soft); border-radius: 14px; padding: 1.1rem 1rem; position: relative; display: flex; flex-direction: column; gap: .3rem; }
.prose .feat i { font-size: 1.6rem; color: var(--brand); }
.prose .feat strong { color: var(--navy); font-size: 1.02rem; }
.prose .feat span { font-size: .88rem; color: var(--muted); }
.prose .feat .n { position: absolute; right: .8rem; top: .5rem; font-weight: 900; font-size: 1.2rem; color: var(--sky-2); }
@media (min-width: 768px) { .prose .feat-grid:not(.two) { grid-template-columns: repeat(5, 1fr); } }
.prose td:first-child { color: var(--navy); }

/* 首頁：十大特色 5 欄、合作客戶 */
@media (min-width: 992px) { .row-cols-lg-5 > .svc { flex: 0 0 auto; width: 20%; } }
.client-card { overflow: hidden; }
.client-card .ph { aspect-ratio: 4 / 3; overflow: hidden; background: var(--sky-soft); }
.client-card .ph img { width: 100%; height: 100%; object-fit: cover; transition: transform .4s; }
.client-card:hover .ph img { transform: scale(1.04); }
.client-card .bd { padding: 1.2rem 1.3rem 1.4rem; }
.client-card h3 { font-size: 1.08rem; font-weight: 800; color: var(--navy); margin-bottom: .4rem; }
.client-card p { font-size: .9rem; color: var(--muted); margin: 0; }
.cert-row { display: flex; flex-wrap: wrap; gap: .5rem; }
.cert-row span { background: var(--sky-soft); color: var(--navy); border-radius: 999px; padding: .35rem .9rem; font-weight: 700; font-size: .85rem; }
.cert-row i { color: var(--brand); margin-right: .3rem; }
