*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,"PingFang SC","Microsoft YaHei",Arial,sans-serif;background:var(--bg);color:var(--text);overflow-x:hidden}
:root{--bg:#080b11;--panel:rgba(15,22,32,.72);--panel-strong:#111925;--text:#eef4f8;--muted:#8895a4;--line:rgba(255,255,255,.11);--primary:#2ab9f3;--accent:#78dfff;--radius:16px;--content:1240px}
html[data-theme="light"]{--bg:#f4f7f9;--panel:rgba(255,255,255,.58);--panel-strong:#fff;--text:#172633;--muted:#607180;--line:rgba(20,55,80,.12);--primary:#168fc6;--accent:#31a9dc}
a{text-decoration:none;color:inherit}button{font:inherit}
.global-tech-bg{position:fixed;inset:0;z-index:-5;pointer-events:none;background:radial-gradient(circle at 20% 20%,rgba(38,165,230,.055),transparent 23%),radial-gradient(circle at 85% 70%,rgba(83,107,255,.045),transparent 25%)}
.tech-grid{position:absolute;inset:0;background-image:linear-gradient(rgba(65,170,230,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(65,170,230,.055) 1px,transparent 1px);background-size:72px 72px;opacity:.35}
#tech-network-canvas{position:absolute;inset:0;width:100%;height:100%}
header{position:fixed;top:0;left:0;right:0;height:72px;z-index:1000;transition:.25s;background:transparent}
header.scrolled{height:64px;background:rgba(8,12,18,.88);backdrop-filter:blur(18px);border-bottom:1px solid var(--line)}
html[data-theme="light"] header.scrolled{background:rgba(255,255,255,.9)}
.nav-shell{width:min(calc(100% - 40px),1500px);height:100%;margin:auto;display:flex;align-items:center;justify-content:space-between;gap:24px}
.logo{display:flex;align-items:center;gap:11px}.logo img{width:38px;height:38px;object-fit:contain}.logo img.theme-svg-logo{filter:brightness(0) invert(1);transition:filter .2s ease}.logo strong{font-size:21px;letter-spacing:2px;color:#fff;transition:color .2s ease}
html[data-theme="light"] .logo img.theme-svg-logo{filter:brightness(0)}html[data-theme="light"] .logo strong{color:#05070a}
#main-nav{display:flex;align-items:center;gap:5px}#main-nav a{padding:8px 14px;border-radius:99px;color:#c8d0d8;font-size:14px;font-weight:550;transition:.2s}
#main-nav a:hover,#main-nav a.active{color:#fff;background:rgba(255,255,255,.08)}
html[data-theme="light"] header:not(.scrolled) #main-nav a{color:#111923;font-weight:650}
html[data-theme="light"] #main-nav a:hover,html[data-theme="light"] #main-nav a.active{color:#0c2230;background:rgba(255,255,255,.45)}
.nav-actions{display:flex;align-items:center;gap:8px}.theme-toggle,.nav-toggle{width:38px;height:38px;border-radius:50%;border:1px solid var(--line);background:rgba(255,255,255,.04);color:var(--text);cursor:pointer}.nav-toggle{display:none}

.hero{height:min(760px,76vw);min-height:560px;position:relative;overflow:hidden;background:#06090e}
.hero-slide{position:absolute;inset:0;opacity:0;pointer-events:none;transition:opacity .25s}.hero-slide.active{opacity:1;pointer-events:auto}
.hero-bg{position:absolute;inset:0;background-size:cover;background-position:center;opacity:0;transform:scale(1.025);transition:opacity 1s ease,transform 5.8s ease}
.hero-slide.active .hero-bg{opacity:1;transform:scale(1)}
.hero-inner{position:relative;width:min(calc(100% - 48px),1500px);height:100%;margin:auto;display:grid;grid-template-columns:1.05fr .95fr;align-items:center;padding-top:55px}
.hero-copy{z-index:4;opacity:0;transform:translateY(18px);transition:opacity .65s .16s,transform .65s .16s}.hero-slide.active .hero-copy{opacity:1;transform:none}
.hero-copy *{color:#fff}.hero-copy .eyebrow{font-size:11px;letter-spacing:3px;color:#95e7ff!important}.hero h1{font-size:clamp(42px,6vw,86px);line-height:1.04;margin:14px 0 18px;letter-spacing:-2px}.hero p{font-size:17px;line-height:1.8;color:#d7e0e8!important;max-width:640px}
.hero-art{z-index:5;display:flex;align-items:center;justify-content:center;opacity:0;transform:translateX(55px) scale(.97);transition:opacity .72s .52s,transform .85s cubic-bezier(.16,1,.3,1) .52s}.hero-slide.active .hero-art{opacity:1;transform:none}.hero-art img{width:min(100%,520px);max-height:66%;object-fit:contain}
.hero-actions{display:flex;gap:10px;margin-top:28px}.btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 19px;border-radius:99px;border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.07);backdrop-filter:blur(14px);color:#fff!important}.btn.primary{background:linear-gradient(135deg,#1ca9eb,#2779ef);border-color:transparent}
.hero-controls{position:absolute;z-index:20;bottom:26px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:10px}.hero-controls>button{width:34px;height:34px;border-radius:50%;border:1px solid rgba(255,255,255,.18);background:rgba(0,0,0,.18);color:#fff;font-size:22px;cursor:pointer}#banner-dots{display:flex;gap:6px}#banner-dots button{width:7px;height:7px;border:0;border-radius:99px;padding:0;background:rgba(255,255,255,.35)}#banner-dots button.active{width:22px;background:#55cfff}

.section{padding:58px 24px}.section-wide{padding-left:0;padding-right:0}.section-head{width:min(calc(100% - 48px),var(--content));margin:0 auto 24px}.section-head span,.contact-cta span{font-size:10px;letter-spacing:2px;color:var(--primary)}.section-head h2{font-size:clamp(30px,4vw,52px);margin:9px 0 7px}.section-head p{margin:0;color:var(--muted)}.drag-hint{width:min(calc(100% - 48px),var(--content));margin:0 auto 12px;text-align:right;color:var(--muted);font-size:11px}

.glass-panel,.service-card,.case-card,.news-card,.stat-card,.about-block,.contact-item{position:relative;background:linear-gradient(145deg,rgba(255,255,255,.075),rgba(255,255,255,.025));border:1px solid var(--line);backdrop-filter:blur(18px) saturate(125%);border-radius:var(--radius);overflow:hidden}
html[data-theme="light"] .glass-panel,html[data-theme="light"] .service-card,html[data-theme="light"] .case-card,html[data-theme="light"] .news-card,html[data-theme="light"] .stat-card,html[data-theme="light"] .about-block,html[data-theme="light"] .contact-item{background:linear-gradient(145deg,rgba(255,255,255,.72),rgba(255,255,255,.38));border-color:rgba(255,255,255,.82)}
.border-sweep{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:30}.border-sweep rect{fill:none;stroke-width:.8px;stroke-linecap:round;stroke-dasharray:7 93;animation:borderSweep 11s linear infinite}.border-sweep .base{stroke:rgba(255,255,255,.07);stroke-dasharray:none;animation:none}html[data-theme="light"] .border-sweep{opacity:.55}@keyframes borderSweep{to{stroke-dashoffset:-100}}

.horizontal-zone{overflow-x:auto;scrollbar-width:none;cursor:grab}.horizontal-zone::-webkit-scrollbar,.case-viewport::-webkit-scrollbar{display:none}.horizontal-zone.dragging,.case-viewport.dragging{cursor:grabbing;user-select:none}
.service-track{display:flex;gap:12px;width:max-content;min-width:100%;justify-content:center;padding:0 18px 10px}
.service-card{flex:0 0 245px;width:245px;height:252px;padding:19px}.service-icon{width:46px;height:46px;border-radius:13px;display:grid;place-items:center;background:rgba(42,185,243,.10);font-size:23px;margin-bottom:14px}.service-card h3{font-size:18px;margin:0 0 8px}.service-card p{height:58px;margin:0;color:var(--muted);font-size:12px;line-height:1.6;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.service-features{height:54px;display:flex;flex-wrap:wrap;align-content:flex-start;gap:5px;margin-top:13px;overflow:hidden}.service-features span{font-size:10px;padding:4px 7px;border:1px solid var(--line);border-radius:99px;white-space:nowrap}

.cases-filter{width:min(calc(100% - 48px),var(--content));margin:0 auto 18px;display:flex;justify-content:center;gap:7px;flex-wrap:wrap}.cases-filter button{padding:7px 13px;border-radius:99px;border:1px solid var(--line);background:transparent;color:var(--muted);cursor:pointer}.cases-filter button.active{background:var(--primary);color:#fff;border-color:var(--primary)}
.case-viewport{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;cursor:grab;padding:10px 0 14px}
.case-stage{display:flex;flex-direction:column;justify-content:center;gap:9px;min-width:100%}
.case-row{display:flex;justify-content:center;align-items:center;gap:9px;margin:0 auto}
.case-row:empty{display:none}.case-card{flex:0 0 220px;width:220px;height:124px;cursor:pointer}.case-card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .35s ease}.case-card:hover img{transform:scale(1.025)}
.content-image-empty{display:flex;align-items:center;justify-content:center;background:var(--panel-strong);color:var(--muted);font-size:11px;letter-spacing:.08em}.case-card>.content-image-empty{position:absolute;inset:0}.news-card>.content-image-empty{width:100%;height:108px}.content-image-empty span{padding:6px 10px;border:1px dashed var(--line);border-radius:999px}
.case-info{position:absolute;z-index:10;left:0;right:0;bottom:0;height:66px;padding:23px 11px 8px;background:linear-gradient(180deg,transparent,rgba(5,10,16,.76));overflow:hidden}.case-info .case-tag,.case-date{font-size:9px;color:rgba(255,255,255,.78)}.case-info h3{margin:2px 0;font-size:12px;line-height:1.25;color:#fff;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html[data-theme="light"] .case-info{background:linear-gradient(180deg,rgba(255,255,255,0),rgba(255,255,255,.72))}html[data-theme="light"] .case-info h3{color:#162736}html[data-theme="light"] .case-info .case-tag,html[data-theme="light"] .case-date{color:#566b7b}
.case-hover-detail{position:absolute;inset:0;z-index:18;display:flex;align-items:center;justify-content:center;background:rgba(5,12,20,.56);opacity:0;visibility:hidden;transition:.22s}.case-hover-detail span{padding:9px 15px;border-radius:99px;border:1px solid rgba(255,255,255,.4);background:rgba(0,0,0,.2);color:#fff;font-size:11px;font-weight:700}.case-card:hover .case-hover-detail{opacity:1;visibility:visible}.case-card:hover .case-info{opacity:.08}
html[data-theme="light"] .case-hover-detail{background:rgba(246,250,252,.66)}html[data-theme="light"] .case-hover-detail span{background:rgba(255,255,255,.55);border-color:rgba(25,70,100,.24);color:#173044}
.case-card.edge-soft{opacity:.48}.case-card.edge-fade{opacity:.22}

.stats-section{border:0!important;background:transparent!important}.stats-track{width:min(calc(100% - 48px),var(--content));margin:auto;display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.stat-card{height:210px;padding:23px}.stat-index{font-size:9px;color:var(--primary);letter-spacing:2px}.stat-value{font-size:48px;font-weight:800;margin:26px 0 12px;background:linear-gradient(135deg,#fff,#72dfff);-webkit-background-clip:text;color:transparent}.stat-card h3{font-size:15px;margin:0 0 8px}.stat-card p{height:38px;margin:0;color:var(--muted);font-size:11px;line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}html[data-theme="light"] .stat-value{background:linear-gradient(135deg,#164662,#168fc6);-webkit-background-clip:text}
.stats-source-note{width:min(calc(100% - 48px),var(--content));margin:12px auto 0;color:var(--muted);font-size:11px;line-height:1.6;text-align:right}

.news-viewport{width:min(calc(100% - 48px),var(--content));margin:auto}.news-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.news-card{height:286px;cursor:pointer}.news-card img{width:100%;height:108px;object-fit:cover;display:block}.news-info{height:178px;padding:13px;overflow:hidden}.news-tag{font-size:9px;color:var(--primary)}.news-info h3{height:42px;margin:5px 0 5px;font-size:13px;line-height:1.55;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.news-date{font-size:9px;color:var(--muted)}.news-info p{height:48px;margin:7px 0 0;font-size:10px;line-height:1.55;color:var(--muted);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.news-pagination{width:min(calc(100% - 48px),var(--content));margin:20px auto 0;display:flex;justify-content:center;gap:6px;flex-wrap:wrap}.news-pagination button{min-width:32px;height:32px;padding:0 9px;border-radius:99px;border:1px solid var(--line);background:var(--panel);color:var(--muted);cursor:pointer}.news-pagination button.active{border-color:var(--primary);color:var(--text);background:rgba(42,185,243,.12)}.news-pagination button:disabled{opacity:.25;cursor:default}

.about-layout{width:min(calc(100% - 48px),var(--content));margin:auto;display:grid;grid-template-columns:1fr 1fr;gap:28px;align-items:stretch}.about-text{display:grid;grid-template-rows:repeat(3,1fr);gap:10px;height:390px}.about-block{height:123px;padding:16px 17px}.about-block h3{margin:0 0 7px;font-size:14px;color:var(--primary)}.about-block p{margin:0;color:var(--muted);font-size:12px;line-height:1.65;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.about-video{height:390px;padding:0;border:1px solid var(--line);cursor:pointer}.about-video img{width:100%;height:100%;object-fit:cover}.play-circle{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:68px;height:68px;border-radius:50%;display:grid;place-items:center;background:rgba(42,185,243,.88);color:#fff}.video-label{position:absolute;left:16px;bottom:14px;color:#fff;font-size:10px;letter-spacing:2px}

.contact-section{padding:64px 24px}.contact-cta,.contact-grid{width:min(calc(100% - 48px),var(--content));margin:auto}.contact-cta h2{font-size:clamp(38px,6vw,72px);line-height:1.06;margin:12px 0}.contact-cta p{color:var(--muted);max-width:640px}.contact-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-top:30px}.contact-item{height:104px;padding:18px;overflow:hidden}.contact-item small{display:block;color:var(--primary);font-size:9px;margin-bottom:8px}.contact-item strong{display:block;font-size:13px;line-height:1.45;max-height:40px;overflow:hidden;text-overflow:ellipsis}

footer{padding:26px 24px;border-top:1px solid var(--line);display:flex;justify-content:space-between;gap:20px;color:var(--muted);font-size:11px}.footer-brand strong{color:var(--text);letter-spacing:2px}.footer-brand p{margin:6px 0 0}
.modal-overlay,.video-modal{position:fixed;inset:0;z-index:3000;background:rgba(0,0,0,.74);backdrop-filter:blur(12px);display:none;align-items:center;justify-content:center;padding:20px}.modal-overlay.active,.video-modal.active{display:flex}.content-modal{width:min(900px,94vw);max-height:86vh;overflow:auto;padding:28px}.modal-close{position:absolute;right:14px;top:10px;z-index:10;border:0;background:transparent;color:var(--text);font-size:30px;cursor:pointer}.modal-hero{width:100%;height:360px;object-fit:cover;border-radius:12px}.modal-content h2{font-size:26px}.modal-content p{color:var(--muted);line-height:1.8}.video-box{width:min(1100px,94vw);aspect-ratio:16/9;background:#000}.video-box video,.video-box iframe{width:100%;height:100%;border:0}.back-to-top{position:fixed;right:20px;bottom:20px;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--panel-strong);color:var(--text);opacity:0;pointer-events:none;transition:.2s}.back-to-top.visible{opacity:1;pointer-events:auto}
@media(max-width:1000px){.news-grid{grid-template-columns:repeat(3,1fr)}.stats-track{grid-template-columns:repeat(2,1fr)}.contact-grid{grid-template-columns:repeat(2,1fr)}.about-layout{grid-template-columns:1fr}.about-text,.about-video{height:auto}.about-block{height:120px}.about-video{aspect-ratio:16/9}}
@media(max-width:720px){header{height:62px}.nav-shell{width:calc(100% - 28px)}.logo img{width:34px;height:34px}.logo strong{font-size:18px}#main-nav{display:none;position:absolute;top:62px;left:0;right:0;flex-direction:column;padding:12px;background:var(--panel-strong);border-bottom:1px solid var(--line)}#main-nav.active{display:flex}.nav-toggle{display:block}.hero{height:670px;min-height:620px}.hero-inner{grid-template-columns:1fr;width:calc(100% - 32px);padding-top:100px;align-items:start}.hero h1{font-size:46px}.hero-art{position:absolute;right:-5%;bottom:35px;width:80%;height:300px;opacity:.75}.section{padding:44px 16px}.section-head,.drag-hint{width:calc(100% - 16px)}.service-card{flex-basis:220px;width:220px}.case-card{flex-basis:190px;width:190px;height:107px}.news-grid{grid-template-columns:1fr}.news-card{height:276px}.news-card img{height:105px}.stats-track{grid-template-columns:1fr}.stat-card{height:190px}.about-layout,.contact-cta,.contact-grid,.news-viewport,.news-pagination{width:calc(100% - 16px)}.contact-grid{grid-template-columns:1fr 1fr}footer{flex-direction:column}}

.about-copy{height:72px;overflow:hidden}.about-copy p{margin:0!important;color:var(--muted);font-size:12px;line-height:1.65;display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden}.about-copy ul{margin:0;padding-left:16px;height:72px;overflow:hidden;color:var(--muted);font-size:12px;line-height:1.55}


/* ===== V18 interaction + single-frame liquid glass ===== */

/* 1) Single border only: remove the static SVG base line.
      The card's own CSS border is the only base frame. */
.border-sweep .base{display:none!important}
.border-sweep{opacity:.46!important}
html[data-theme="light"] .border-sweep{opacity:.32!important}

/* 2) Case category buttons use the same liquid-glass language */
.cases-filter button{
  position:relative;
  overflow:hidden;
  padding:8px 15px!important;
  border-radius:999px!important;
  border:1px solid rgba(255,255,255,.12)!important;
  background:linear-gradient(145deg,rgba(255,255,255,.075),rgba(255,255,255,.025))!important;
  -webkit-backdrop-filter:blur(16px) saturate(125%);
  backdrop-filter:blur(16px) saturate(125%);
  color:var(--muted)!important;
  transition:background .22s ease,border-color .22s ease,color .22s ease,transform .22s ease!important;
}
.cases-filter button:hover{
  color:var(--text)!important;
  border-color:rgba(42,185,243,.38)!important;
  background:linear-gradient(145deg,rgba(42,185,243,.10),rgba(255,255,255,.035))!important;
}
.cases-filter button.active{
  color:#fff!important;
  border-color:rgba(80,205,255,.52)!important;
  background:linear-gradient(135deg,rgba(28,169,235,.74),rgba(39,121,239,.62))!important;
}
html[data-theme="light"] .cases-filter button{
  background:linear-gradient(145deg,rgba(255,255,255,.72),rgba(255,255,255,.36))!important;
  border-color:rgba(255,255,255,.82)!important;
  color:#607080!important;
}
html[data-theme="light"] .cases-filter button:hover{
  color:#173044!important;
  border-color:rgba(35,145,195,.28)!important;
  background:linear-gradient(145deg,rgba(255,255,255,.90),rgba(225,244,252,.56))!important;
}
html[data-theme="light"] .cases-filter button.active{
  color:#fff!important;
  background:linear-gradient(135deg,#2398ca,#3b7fd3)!important;
  border-color:rgba(30,130,185,.36)!important;
}

/* 3) Hover/focus interactions for all content cards, without changing fixed size */
.service-card,.news-card,.stat-card,.about-block,.about-video,.contact-item{
  transition:border-color .24s ease,background .24s ease,filter .24s ease!important;
}
.service-card:hover,.service-card:focus-within,
.news-card:hover,.news-card:focus-visible,
.stat-card:hover,.stat-card:focus-within,
.about-block:hover,.about-block:focus-within,
.about-video:hover,.about-video:focus-visible,
.contact-item:hover,.contact-item:focus-within{
  border-color:rgba(54,189,242,.48)!important;
  background:linear-gradient(145deg,rgba(52,187,240,.09),rgba(255,255,255,.035))!important;
}
html[data-theme="light"] .service-card:hover,
html[data-theme="light"] .news-card:hover,
html[data-theme="light"] .stat-card:hover,
html[data-theme="light"] .about-block:hover,
html[data-theme="light"] .about-video:hover,
html[data-theme="light"] .contact-item:hover{
  background:linear-gradient(145deg,rgba(255,255,255,.92),rgba(226,245,252,.55))!important;
  border-color:rgba(34,151,202,.28)!important;
}

/* internal interaction details */
.service-card:hover .service-icon{background:rgba(42,185,243,.18)}
.service-card:hover h3,.news-card:hover h3,.stat-card:hover h3,.about-block:hover h3{color:var(--primary)}
.news-card img{transition:transform .36s ease,filter .28s ease}
.news-card:hover img{transform:scale(1.025);filter:saturate(1.04)}
.stat-value{transition:transform .24s ease}
.stat-card:hover .stat-value{transform:translateY(-2px)}
.about-video img{transition:transform .4s ease,filter .3s ease}
.about-video:hover img{transform:scale(1.018);filter:brightness(1.04)}
.play-circle{transition:transform .25s ease}
.about-video:hover .play-circle{transform:translate(-50%,-50%) scale(1.06)}
.contact-item strong{transition:color .22s ease}
.contact-item:hover strong{color:var(--primary)}

/* 4) Case hover remains internal; card itself never grows */
.case-card{
  transition:border-color .24s ease!important;
}
.case-card:hover,.case-card:focus-visible{
  border-color:rgba(54,189,242,.55)!important;
}
.case-card:focus-visible{outline:none}

/* 5) Make card clicks unambiguous */
.case-card,.news-card{user-select:none;-webkit-user-select:none}
.case-card img,.case-card .case-info,.case-card .case-hover-detail,
.news-card img,.news-card .news-info{pointer-events:none}

/* no unexpected second outline on modal glass */
.content-modal,.video-box{outline:none!important}


/* ===== V19 case scroll range + dedicated detail modal ===== */

/* Case stage no longer keeps half-screen blank padding at both ends.
   It opens centered on newest item, but users can drag all the way until
   the first/last card reaches the corresponding viewport edge. */
.case-stage{
  width:max-content!important;
  min-width:100%!important;
  padding:0!important;
}
.case-row{
  justify-content:center!important;
  min-width:0!important;
}
.case-viewport{
  scroll-snap-type:none!important;
  overscroll-behavior-x:contain;
}

/* Dedicated detail modal */
.content-modal{
  width:min(940px,94vw)!important;
  padding:0!important;
  overflow:hidden!important;
}
#modal-body{max-height:88vh;overflow:auto}
.detail-view{background:transparent;color:var(--text)}
.detail-head{padding:28px 30px 18px}
.detail-kicker{font-size:10px;letter-spacing:2px;color:var(--primary)}
.detail-head h2{font-size:clamp(24px,3vw,34px);line-height:1.25;margin:9px 0 0}
.news-detail-meta{display:flex;gap:18px;flex-wrap:wrap;margin-top:12px;color:var(--muted);font-size:11px}
.detail-view .modal-hero{
  display:block;
  width:100%;
  height:390px;
  object-fit:cover;
  border-radius:0!important;
}
.detail-body{padding:24px 30px 30px}
.detail-body h3{font-size:15px;margin:0 0 10px}
.detail-body p{
  margin:0;
  color:var(--muted);
  font-size:14px;
  line-height:1.9;
  white-space:pre-wrap;
}
.detail-action{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  margin-top:22px;
  padding:11px 19px;
  border-radius:999px;
  background:linear-gradient(135deg,#1ca9eb,#2779ef);
  color:#fff;
  font-size:13px;
  font-weight:700;
}
.detail-action.disabled{
  opacity:.42;
  pointer-events:none;
}
.detail-news .detail-body{padding-top:26px}
html[data-theme="light"] .content-modal{background:rgba(255,255,255,.92)}

@media(max-width:720px){
  .detail-head{padding:22px 18px 14px}
  .detail-view .modal-hero{height:240px}
  .detail-body{padding:18px 18px 24px}
  .news-detail-meta{gap:10px}
}


/* ===== V20 Case click reliability + shorter Banner ===== */

/* Case card click target */
.case-card{
  touch-action:pan-x pan-y;
  cursor:pointer!important;
}
.case-card *{
  pointer-events:none!important;
}
.case-card.pressed{
  border-color:rgba(57,191,244,.62)!important;
}

/* Banner proportion made shorter */
.hero{
  height:min(610px,60vw)!important;
  min-height:470px!important;
}
.hero-inner{
  padding-top:44px!important;
}
.hero h1{
  font-size:clamp(38px,5vw,72px)!important;
}
.hero p{
  font-size:16px!important;
}
.hero-art img{
  max-height:58%!important;
}
.hero-controls{
  bottom:20px!important;
}

@media(max-width:1000px){
  .hero{
    height:min(560px,68vw)!important;
    min-height:450px!important;
  }
}
@media(max-width:720px){
  .hero{
    height:560px!important;
    min-height:520px!important;
  }
  .hero-inner{
    padding-top:86px!important;
  }
  .hero h1{
    font-size:40px!important;
  }
  .hero-art{
    height:240px!important;
    bottom:22px!important;
  }
}


/* ===== V22 footer certificate showcase ===== */
footer{padding:24px!important}
.footer-main{
  width:min(calc(100% - 48px),var(--content));
  margin:auto;
  display:grid;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:24px;
}
.footer-certificates{
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  flex-wrap:wrap;
}
.certificate-btn{
  appearance:none;
  padding:7px 13px;
  border-radius:999px!important;
  color:var(--muted);
  font-size:10px;
  cursor:pointer;
  transition:border-color .2s ease,color .2s ease,background .2s ease;
}
.certificate-btn:hover{
  color:var(--text);
  border-color:rgba(42,185,243,.42)!important;
  background:linear-gradient(145deg,rgba(42,185,243,.09),rgba(255,255,255,.03))!important;
}
html[data-theme="light"] .certificate-btn:hover{
  background:linear-gradient(145deg,rgba(255,255,255,.95),rgba(226,245,252,.58))!important;
  color:#183246;
}
.certificate-modal{
  width:min(780px,92vw);
  max-height:88vh;
  padding:24px;
  overflow:auto;
}
.certificate-view{text-align:center}
.certificate-title{
  padding:0 42px 16px;
  font-size:22px;
  font-weight:700;
}
.certificate-view img{
  display:block;
  width:100%;
  max-height:68vh;
  object-fit:contain;
  border-radius:12px;
  background:rgba(0,0,0,.12);
}
.certificate-view p{
  margin:14px 0 0;
  color:var(--muted);
  font-size:12px;
}
@media(max-width:900px){
  .footer-main{grid-template-columns:1fr;text-align:center}
  .footer-brand,.footer-copy{text-align:center}
}


/* ===== V3 fixed large detail modal ===== */
.content-modal{
  width:min(1080px,94vw)!important;
  height:min(760px,88vh)!important;
  max-width:none!important;
  max-height:none!important;
  padding:0!important;
  overflow:hidden!important;
  display:flex!important;
  flex-direction:column!important;
}
#modal-body{
  flex:1 1 auto!important;
  min-height:0!important;
  max-height:none!important;
  overflow-y:auto!important;
  overflow-x:hidden!important;
  scrollbar-gutter:stable;
}
.detail-view{
  min-height:100%!important;
}
.detail-head{
  padding:30px 34px 20px!important;
}
.detail-head h2{
  font-size:clamp(28px,3vw,40px)!important;
  margin:10px 0 0!important;
}
.detail-view .modal-hero{
  width:100%!important;
  height:420px!important;
  object-fit:cover!important;
  flex:none!important;
}
.detail-body{
  padding:28px 34px 36px!important;
}
.detail-body p{
  font-size:15px!important;
  line-height:1.95!important;
}
.news-detail-meta{
  margin-top:13px!important;
  font-size:12px!important;
}
.modal-close{
  z-index:50!important;
}
@media(max-width:760px){
  .content-modal{
    width:96vw!important;
    height:86vh!important;
  }
  .detail-head{padding:22px 18px 15px!important}
  .detail-head h2{font-size:25px!important}
  .detail-view .modal-hero{height:250px!important}
  .detail-body{padding:20px 18px 26px!important}
}


/* ===== V6 true centered bidirectional case rail ===== */
.case-viewport{
  position:relative;
  overflow-x:auto!important;
  overflow-y:hidden!important;
  scroll-behavior:auto!important;
}
#cases-grid.case-stage,
.case-stage{
  display:flex!important;
  flex-direction:column!important;
  gap:9px!important;
  margin:0!important;
  padding:0!important;
  max-width:none!important;
}
.case-row{
  display:flex!important;
  justify-content:center!important;
  align-items:center!important;
  gap:9px!important;
  margin:0!important;
  max-width:none!important;
  flex:none!important;
}


/* ===== V5.3 Case search ===== */
.cases-tools{
  width:min(calc(100% - 48px),var(--content));
  margin:0 auto 12px;
  display:flex;
  justify-content:center;
  align-items:center;
  gap:10px;
  flex-wrap:wrap;
}
.cases-tools .cases-filter{
  width:auto!important;
  margin:0!important;
  flex:0 1 auto;
}
.case-search{
  width:min(310px,100%);
  height:38px;
  padding:0 9px 0 12px!important;
  border-radius:999px!important;
  display:flex;
  align-items:center;
  gap:8px;
  flex:0 1 310px;
  overflow:hidden;
  transition:border-color .22s ease,background .22s ease,box-shadow .22s ease;
}
.case-search:focus-within{
  border-color:rgba(54,189,242,.5)!important;
  box-shadow:0 0 0 3px rgba(42,185,243,.07);
}
.case-search svg{
  width:15px;
  height:15px;
  flex:0 0 15px;
  fill:none;
  stroke:var(--muted);
  stroke-width:1.8;
  stroke-linecap:round;
}
.case-search input{
  min-width:0;
  flex:1;
  border:0;
  outline:0;
  background:transparent;
  color:var(--text);
  font:inherit;
  font-size:11px;
  letter-spacing:.2px;
}
.case-search input::placeholder{color:var(--muted)}
.case-search input::-webkit-search-cancel-button{display:none}
.case-search button{
  width:24px;
  height:24px;
  padding:0!important;
  border:0!important;
  border-radius:50%!important;
  background:rgba(255,255,255,.05)!important;
  color:var(--muted)!important;
  display:none;
  place-items:center;
  cursor:pointer;
  font-size:17px;
  line-height:1;
}
.case-search button.show{display:grid}
.case-search button:hover{
  color:var(--text)!important;
  background:rgba(42,185,243,.12)!important;
}
.case-search-status{
  min-height:18px;
  width:min(calc(100% - 48px),var(--content));
  margin:0 auto 0;
  text-align:center;
  color:var(--muted);
  font-size:10px;
  opacity:0;
  transition:opacity .2s ease;
}
.case-search-status.show{opacity:1}
.case-search-status strong{color:var(--primary)}
.case-empty{
  width:min(560px,calc(100vw - 48px));
  margin:28px auto 34px;
  padding:32px 24px;
  border:1px dashed var(--line);
  border-radius:18px;
  text-align:center;
  background:rgba(255,255,255,.025);
}
.case-empty span{
  color:var(--primary);
  font-size:9px;
  letter-spacing:2px;
}
.case-empty h3{
  margin:7px 0 5px;
  font-size:18px;
}
.case-empty p{
  margin:0;
  color:var(--muted);
  font-size:11px;
}
html[data-theme="light"] .case-search{
  background:rgba(255,255,255,.72)!important;
}
html[data-theme="light"] .case-empty{
  background:rgba(255,255,255,.48);
}
@media(max-width:720px){
  .cases-tools{
    width:calc(100% - 28px);
    gap:9px;
  }
  .cases-tools .cases-filter{
    width:100%!important;
  }
  .case-search{
    flex-basis:100%;
    width:100%;
  }
  .case-search-status{
    width:calc(100% - 28px);
  }
}

/* V5.5 SEO crawlable detail links */


/* ===== V5.6 SEO front-end rendering fix ===== */
.case-card,.news-card{position:relative}
.seo-detail-link{position:absolute;inset:0;z-index:0;pointer-events:none;color:inherit;text-decoration:none}
.case-card>img{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;object-fit:cover!important;z-index:1}
.case-info{position:absolute!important;left:0!important;right:0!important;bottom:0!important;z-index:3!important}
.case-hover-detail{position:absolute!important;inset:0!important;z-index:4!important}
.news-card>img{position:relative!important;z-index:1!important;width:100%!important;height:108px!important;object-fit:cover!important;display:block!important}
.news-info{position:relative!important;z-index:2!important}

/* V5.7 弹窗标题与16:9图片优化 */
.modal-content h2{font-size:20px!important;line-height:1.35!important}
.modal-hero{width:100%!important;height:auto!important;aspect-ratio:16/9!important;object-fit:contain!important;object-position:center!important;background:rgba(0,0,0,.18)!important;border-radius:12px}


/* ===== V5.9 definitive detail modal fix =====
   This block MUST stay at the end of style.css. */
#modal-overlay .content-modal #modal-body .detail-view .detail-head h2 {
  font-size: 18px !important;
  line-height: 1.42 !important;
  margin: 7px 0 0 !important;
  font-weight: 650 !important;
}

#modal-overlay .content-modal #modal-body .detail-view .modal-hero-frame {
  position: relative !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  width: 100% !important;
  height: auto !important;
  aspect-ratio: 16 / 9 !important;
  overflow: hidden !important;
  background: rgba(0, 0, 0, .22) !important;
}

#modal-overlay .content-modal #modal-body .detail-view .modal-hero-frame > img.modal-hero {
  position: static !important;
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  min-width: 0 !important;
  min-height: 0 !important;
  max-width: 100% !important;
  max-height: 100% !important;
  aspect-ratio: auto !important;
  object-fit: contain !important;
  object-position: center center !important;
  border-radius: 0 !important;
  flex: 0 0 auto !important;
}

@media (max-width: 760px) {
  #modal-overlay .content-modal #modal-body .detail-view .detail-head h2 {
    font-size: 16px !important;
    line-height: 1.45 !important;
  }
  #modal-overlay .content-modal #modal-body .detail-view .modal-hero-frame {
    aspect-ratio: 16 / 9 !important;
    height: auto !important;
  }
  #modal-overlay .content-modal #modal-body .detail-view .modal-hero-frame > img.modal-hero {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain !important;
  }
}

/* V5.10 动态智能折叠页码 */
#news-pagination .page-ellipsis{display:inline-flex;align-items:center;justify-content:center;min-width:24px;padding:0 3px;opacity:.58;user-select:none}


/* ===== V5.11 mobile layout refinement ===== */
@media (max-width: 720px) {
  /* Banner: reduce background zoom and enlarge the product artwork */
  .hero {
    height: 580px !important;
    min-height: 540px !important;
  }
  .hero-bg {
    background-size: auto 84% !important;
    background-position: center 38% !important;
    background-repeat: no-repeat !important;
    background-color: #06090e !important;
  }
  .hero-inner {
    width: calc(100% - 28px) !important;
    padding-top: 78px !important;
  }
  .hero h1 {
    font-size: 38px !important;
    line-height: 1.06 !important;
    margin-top: 10px !important;
    margin-bottom: 12px !important;
  }
  .hero p {
    font-size: 14px !important;
    line-height: 1.6 !important;
    max-width: 92% !important;
  }
  .hero-actions {
    margin-top: 18px !important;
  }
  .hero-art {
    right: -7% !important;
    bottom: 24px !important;
    width: 106% !important;
    height: 292px !important;
    opacity: .94 !important;
  }
  .hero-art img {
    width: 100% !important;
    max-width: none !important;
    max-height: 100% !important;
    object-fit: contain !important;
  }
  .hero-controls {
    bottom: 14px !important;
  }

  /* Capability: keep the proof points but compress them into one row */
  .stats-section {
    padding-top: 32px !important;
    padding-bottom: 32px !important;
  }
  .stats-track {
    width: calc(100% - 16px) !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 7px !important;
  }
  .stat-card {
    height: 94px !important;
    min-height: 94px !important;
    padding: 10px 7px !important;
    border-radius: 12px !important;
    text-align: center !important;
  }
  .stat-index,
  .stat-card p {
    display: none !important;
  }
  .stat-value {
    margin: 7px 0 7px !important;
    font-size: clamp(21px, 6vw, 27px) !important;
    line-height: 1 !important;
    white-space: nowrap !important;
  }
  .stat-card h3 {
    margin: 0 !important;
    font-size: 9px !important;
    line-height: 1.28 !important;
    font-weight: 600 !important;
  }

  /* News: two cards per page on mobile, cards remain vertical */
  .news-grid {
    grid-template-columns: 1fr !important;
    gap: 10px !important;
  }
  .news-card {
    height: 252px !important;
  }
  .news-card > img {
    height: 112px !important;
  }
  .news-info {
    height: 140px !important;
    padding: 11px 12px !important;
  }
  .news-info h3 {
    height: 40px !important;
    margin: 4px 0 !important;
  }
  .news-info p {
    height: 32px !important;
    -webkit-line-clamp: 2 !important;
  }
  .news-pagination {
    margin-top: 14px !important;
  }
}

@media (max-width: 390px) {
  .hero-art {
    width: 112% !important;
    right: -10% !important;
  }
  .stat-card {
    padding-left: 4px !important;
    padding-right: 4px !important;
  }
  .stat-value {
    font-size: 21px !important;
  }
  .stat-card h3 {
    font-size: 8.5px !important;
  }
}


/* ===== V5.12 mobile streamlined homepage =====
   Mobile information order:
   Banner -> Case search & cases -> 2 news list rows -> About video -> Contact row -> Footer
   Desktop layout is unchanged. */
@media (max-width: 720px) {
  /* Mobile nav only keeps sections that actually remain visible */
  #main-nav a[href="#services"],
  #main-nav a[href="#stats"] {
    display: none !important;
  }

  /* Banner: background + copy only, no product artwork */
  .hero {
    height: 410px !important;
    min-height: 410px !important;
  }
  .hero-bg {
    background-size: auto 78% !important;
    background-position: center 45% !important;
    background-repeat: no-repeat !important;
    background-color: #06090e !important;
  }
  .hero-inner {
    display: block !important;
    width: calc(100% - 36px) !important;
    height: 100% !important;
    padding-top: 94px !important;
  }
  .hero-copy {
    width: 100% !important;
    max-width: 520px !important;
  }
  .hero-copy .eyebrow {
    font-size: 9px !important;
    letter-spacing: 2px !important;
  }
  .hero h1 {
    font-size: 32px !important;
    line-height: 1.08 !important;
    letter-spacing: -1px !important;
    margin: 10px 0 10px !important;
  }
  .hero p {
    font-size: 12px !important;
    line-height: 1.55 !important;
    max-width: 92% !important;
    margin: 0 !important;
  }
  .hero-actions {
    gap: 7px !important;
    margin-top: 16px !important;
  }
  .hero-actions .btn {
    padding: 9px 13px !important;
    font-size: 11px !important;
  }
  .hero-art {
    display: none !important;
  }
  .hero-controls {
    bottom: 12px !important;
    gap: 7px !important;
  }
  .hero-controls > button {
    width: 28px !important;
    height: 28px !important;
    font-size: 18px !important;
  }

  /* Remove desktop-only sections entirely */
  #services,
  #stats {
    display: none !important;
  }

  /* Cases become the first content block: search first, no title/category filters */
  #cases {
    padding-top: 20px !important;
    padding-bottom: 30px !important;
  }
  #cases > .section-head,
  #cases .cases-filter {
    display: none !important;
  }
  #cases .cases-tools {
    width: 100% !important;
    margin: 0 !important;
    display: block !important;
  }
  #cases .case-search {
    width: calc(100% - 32px) !important;
    max-width: none !important;
    height: 42px !important;
    margin: 0 auto 8px !important;
    border-radius: 12px !important;
  }
  #cases .case-search input {
    font-size: 13px !important;
  }
  #cases .case-search-status {
    width: calc(100% - 32px) !important;
    margin: 0 auto 6px !important;
    font-size: 10px !important;
    min-height: 14px !important;
  }
  #cases .case-viewport {
    padding-top: 7px !important;
    padding-bottom: 4px !important;
  }
  #cases .case-card {
    flex-basis: 178px !important;
    width: 178px !important;
    height: 100px !important;
  }

  /* News: latest two items only, rendered visually as plain list rows */
  #news {
    padding: 26px 16px 28px !important;
  }
  #news .section-head {
    width: calc(100% - 8px) !important;
    margin: 0 auto 8px !important;
  }
  #news .section-head span,
  #news .section-head p {
    display: none !important;
  }
  #news .section-head h2 {
    margin: 0 !important;
    font-size: 20px !important;
    line-height: 1.25 !important;
  }
  #news .news-viewport {
    width: calc(100% - 8px) !important;
  }
  #news .news-grid {
    display: block !important;
  }
  #news .news-card {
    position: relative !important;
    display: block !important;
    width: 100% !important;
    height: auto !important;
    min-height: 54px !important;
    padding: 0 !important;
    border: 0 !important;
    border-bottom: 1px solid var(--line) !important;
    border-radius: 0 !important;
    background: transparent !important;
    backdrop-filter: none !important;
    box-shadow: none !important;
    overflow: visible !important;
  }
  #news .news-card:first-child {
    border-top: 1px solid var(--line) !important;
  }
  #news .news-card > img,
  #news .news-tag,
  #news .news-info p,
  #news .news-card > .border-sweep {
    display: none !important;
  }
  #news .news-info {
    display: grid !important;
    grid-template-columns: minmax(0,1fr) auto !important;
    grid-template-areas: "title date" !important;
    align-items: center !important;
    gap: 12px !important;
    width: 100% !important;
    height: auto !important;
    min-height: 54px !important;
    padding: 10px 2px !important;
    overflow: visible !important;
  }
  #news .news-info h3 {
    grid-area: title !important;
    height: auto !important;
    min-width: 0 !important;
    margin: 0 !important;
    font-size: 13px !important;
    line-height: 1.45 !important;
    font-weight: 600 !important;
    display: block !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  #news .news-date {
    grid-area: date !important;
    font-size: 9px !important;
    white-space: nowrap !important;
    color: var(--muted) !important;
  }
  #news .news-pagination {
    display: none !important;
  }

  /* About: only the video remains */
  #about {
    padding: 20px 16px 30px !important;
  }
  #about > .section-head,
  #about .about-text {
    display: none !important;
  }
  #about .about-layout {
    display: block !important;
    width: calc(100% - 8px) !important;
    margin: 0 auto !important;
  }
  #about .about-video {
    display: block !important;
    width: 100% !important;
    height: auto !important;
    aspect-ratio: 16 / 9 !important;
    border-radius: 14px !important;
  }
  #about .about-video img {
    width: 100% !important;
    height: 100% !important;
    object-fit: cover !important;
  }
  #about .play-circle {
    width: 52px !important;
    height: 52px !important;
    font-size: 14px !important;
  }
  #about .video-label {
    font-size: 8px !important;
    left: 12px !important;
    bottom: 10px !important;
  }

  /* Contact: MOBILE + EMAIL + ADDRESS in one lightweight horizontal row */
  #contact {
    padding: 18px 16px 22px !important;
  }
  #contact .contact-cta {
    display: none !important;
  }
  #contact .contact-grid {
    display: flex !important;
    align-items: center !important;
    gap: 16px !important;
    width: calc(100% - 8px) !important;
    margin: 0 auto !important;
    overflow-x: auto !important;
    overflow-y: hidden !important;
    scrollbar-width: none !important;
    white-space: nowrap !important;
  }
  #contact .contact-grid::-webkit-scrollbar {
    display: none !important;
  }
  #contact .contact-item[data-kind="PHONE"] {
    display: none !important;
  }
  #contact .contact-item {
    flex: 0 0 auto !important;
    width: auto !important;
    height: auto !important;
    min-height: 0 !important;
    padding: 0 !important;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    backdrop-filter: none !important;
    overflow: visible !important;
  }
  #contact .contact-item > .border-sweep {
    display: none !important;
  }
  #contact .contact-item small {
    display: inline !important;
    margin: 0 5px 0 0 !important;
    font-size: 8px !important;
    letter-spacing: .6px !important;
    color: var(--primary) !important;
  }
  #contact .contact-item strong {
    display: inline !important;
    max-height: none !important;
    font-size: 10px !important;
    line-height: 1.4 !important;
    font-weight: 500 !important;
    overflow: visible !important;
  }

  /* Footer is compact on mobile */
  footer {
    padding: 18px 16px 22px !important;
    gap: 12px !important;
    font-size: 9px !important;
  }
}

@media (max-width: 390px) {
  .hero {
    height: 390px !important;
    min-height: 390px !important;
  }
  .hero-inner {
    padding-top: 88px !important;
  }
  .hero h1 {
    font-size: 29px !important;
  }
  #cases .case-card {
    flex-basis: 164px !important;
    width: 164px !important;
    height: 92px !important;
  }
}

/* ===== V5.13 mobile header + news refinement ===== */
@media (max-width: 720px) {
  /* Keep the initial mobile header as one complete solid bar. */
  #header,
  header#header {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    right: 0 !important;
    width: 100% !important;
    height: 68px !important;
    min-height: 68px !important;
    background: #05070c !important;
    border-bottom: 1px solid rgba(255,255,255,.08) !important;
    overflow: visible !important;
    z-index: 9999 !important;
  }
  #header .nav-shell {
    box-sizing: border-box !important;
    width: 100% !important;
    max-width: none !important;
    height: 68px !important;
    min-height: 68px !important;
    margin: 0 !important;
    padding: 0 18px !important;
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
    overflow: visible !important;
  }
  #header .logo {
    min-width: 0 !important;
    height: 68px !important;
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    overflow: visible !important;
  }
  #header .logo img {
    display: block !important;
    width: 48px !important;
    height: 48px !important;
    flex: 0 0 48px !important;
    object-fit: contain !important;
  }
  #header .logo strong {
    display: block !important;
    font-size: 22px !important;
    line-height: 1 !important;
    letter-spacing: 2.5px !important;
    white-space: nowrap !important;
  }
  #header .nav-actions {
    flex: 0 0 auto !important;
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    height: 68px !important;
  }
  #header .theme-toggle,
  #header .nav-toggle {
    flex: 0 0 46px !important;
    width: 46px !important;
    height: 46px !important;
    min-width: 46px !important;
    min-height: 46px !important;
    margin: 0 !important;
  }

  /* Mobile news is just three rows; remove the whole section heading. */
  #news > .section-head {
    display: none !important;
  }
  #news {
    padding-top: 18px !important;
  }
}

@media (max-width: 390px) {
  #header .nav-shell { padding: 0 14px !important; }
  #header .logo { gap: 8px !important; }
  #header .logo img { width: 44px !important; height: 44px !important; flex-basis: 44px !important; }
  #header .logo strong { font-size: 20px !important; letter-spacing: 2px !important; }
  #header .nav-actions { gap: 8px !important; }
  #header .theme-toggle,
  #header .nav-toggle { width: 44px !important; height: 44px !important; min-width: 44px !important; min-height: 44px !important; flex-basis: 44px !important; }
}

/* ===== V5.14 mobile header: transparent over banner, solid only after scroll ===== */
@media (max-width: 720px) {
  /* Initial state: let the banner image continue behind the navigation. */
  #header,
  header#header {
    background: transparent !important;
    border-bottom-color: transparent !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
    transition: height .25s ease, background .25s ease, border-color .25s ease, backdrop-filter .25s ease !important;
  }

  /* Keep brand and controls readable while they sit directly on the banner. */
  #header:not(.scrolled) .logo strong,
  #header:not(.scrolled) .theme-toggle,
  #header:not(.scrolled) .nav-toggle {
    color: #fff !important;
  }
  #header:not(.scrolled) .theme-toggle,
  #header:not(.scrolled) .nav-toggle {
    border-color: rgba(255,255,255,.24) !important;
    background: rgba(6,10,18,.16) !important;
    backdrop-filter: blur(7px) !important;
    -webkit-backdrop-filter: blur(7px) !important;
  }

  /* After scrolling: return to the same theme-aware glass bar used on desktop. */
  #header.scrolled,
  header#header.scrolled {
    background: rgba(8,12,18,.88) !important;
    border-bottom-color: var(--line) !important;
    backdrop-filter: blur(18px) !important;
    -webkit-backdrop-filter: blur(18px) !important;
  }
  html[data-theme="light"] #header.scrolled,
  html[data-theme="light"] header#header.scrolled {
    background: rgba(255,255,255,.90) !important;
  }
  #header.scrolled .logo strong,
  #header.scrolled .theme-toggle,
  #header.scrolled .nav-toggle {
    color: var(--text) !important;
  }
  #header.scrolled .theme-toggle,
  #header.scrolled .nav-toggle {
    border-color: var(--line) !important;
    background: rgba(255,255,255,.04) !important;
  }
  html[data-theme="light"] #header.scrolled .theme-toggle,
  html[data-theme="light"] #header.scrolled .nav-toggle {
    background: rgba(10,20,30,.035) !important;
  }

  /* Mobile menu remains readable regardless of whether the page has been scrolled. */
  #main-nav.active {
    background: var(--panel-strong) !important;
    border-bottom: 1px solid var(--line) !important;
    backdrop-filter: blur(18px) !important;
    -webkit-backdrop-filter: blur(18px) !important;
  }
}

/* ===== V5.15 mobile banner/header seamless background =====
   At the top of the page the fixed navigation must sit entirely on top of
   the active Banner image.  The previous mobile rule used `auto 78%`, which
   intentionally left a dark empty band above/below the image; that dark band
   was visible through the transparent header. */
@media (max-width: 720px) {
  #banner.hero {
    background: #06090e !important;
  }

  #banner .hero-slide,
  #banner .hero-bg {
    top: 0 !important;
  }

  #banner .hero-bg {
    /* Fill the whole Banner, including the area behind the fixed header. */
    inset: 0 !important;
    background-size: cover !important;
    background-position: center top !important;
    background-repeat: no-repeat !important;
  }

  /* Top state: absolutely no navigation colour layer. */
  #header:not(.scrolled),
  header#header:not(.scrolled) {
    background: transparent !important;
    background-color: transparent !important;
    background-image: none !important;
    border: 0 !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }

  #header:not(.scrolled) .nav-shell {
    background: transparent !important;
    background-image: none !important;
    box-shadow: none !important;
  }

  /* Controls can have their own small translucent circles, but no full-width bar. */
  #header:not(.scrolled) .theme-toggle,
  #header:not(.scrolled) .nav-toggle {
    background: rgba(6,10,18,.16) !important;
    border-color: rgba(255,255,255,.26) !important;
  }
}

/* ===== V5.16 mobile top banner/header definitive fix =====
   The mobile header no longer relies on seeing through to the hero layer.
   While at the top, it paints the CURRENT banner image itself, so there can
   be no black strip behind the logo/title/buttons. After scroll, the normal
   theme-aware glass header takes over. */
@media (max-width: 720px) {
  #header:not(.scrolled),
  header#header:not(.scrolled) {
    background-color: transparent !important;
    background-image: var(--mobile-active-banner-bg, none) !important;
    background-repeat: no-repeat !important;
    background-size: cover !important;
    background-position: center top !important;
    border: 0 !important;
    box-shadow: none !important;
    backdrop-filter: none !important;
    -webkit-backdrop-filter: none !important;
  }

  /* A subtle transparent veil only improves text contrast; it is not a bar. */
  #header:not(.scrolled)::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 0;
    pointer-events: none;
    background: linear-gradient(to bottom, rgba(2,5,10,.10), rgba(2,5,10,.02));
  }
  #header .nav-shell {
    position: relative !important;
    z-index: 1 !important;
  }

  /* Once scrolled, remove the banner image completely and restore glass bar. */
  #header.scrolled,
  header#header.scrolled {
    background-image: none !important;
  }
}

/* ===== V5.17 header scroll seam/flicker fix =====
   The previous header changed background + backdrop-filter + border while the
   fixed layer was also resizing. On some mobile/desktop Chromium/WebView
   compositors that can expose a 1px frame of the page underneath, perceived
   as a white line in dark mode or a black line in light mode.
   Use an immediate opaque theme block, no border, no blur transition, and
   keep the header height stable across the scroll threshold. */
#header,
header#header {
  border: 0 !important;
  border-bottom: 0 !important;
  box-shadow: none !important;
  transition: none !important;
  -webkit-backface-visibility: hidden;
  backface-visibility: hidden;
}

#header.scrolled,
header#header.scrolled {
  height: 72px !important;
  min-height: 72px !important;
  background: #080c12 !important;
  background-image: none !important;
  border: 0 !important;
  border-bottom: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

html[data-theme="light"] #header.scrolled,
html[data-theme="light"] header#header.scrolled {
  background: #ffffff !important;
  background-image: none !important;
  border: 0 !important;
  border-bottom: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* Never create a one-pixel pseudo-element seam at the bottom edge. */
#header.scrolled::before,
header#header.scrolled::before,
#header.scrolled::after,
header#header.scrolled::after {
  border: 0 !important;
  box-shadow: none !important;
}

@media (max-width: 720px) {
  #header.scrolled,
  header#header.scrolled {
    height: 68px !important;
    min-height: 68px !important;
    background: #080c12 !important;
    background-image: none !important;
  }
  html[data-theme="light"] #header.scrolled,
  html[data-theme="light"] header#header.scrolled {
    background: #ffffff !important;
    background-image: none !important;
  }
}

/* ===== V5.18 stable frosted header + smaller mobile controls =====
   Keep one compositor layer alive at all times and only switch its opacity.
   This preserves the transparent/frosted-glass look without the 1px seam
   caused by dynamically adding/removing backdrop-filter, borders or height. */
#header,
header#header {
  position: fixed !important;
  isolation: isolate;
  overflow: visible !important;
  background-color: transparent !important;
  border: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

/* Stable glass compositor layer: present even before scrolling. */
#header::after,
header#header::after {
  content: "";
  position: absolute;
  z-index: 0;
  top: 0;
  left: 0;
  right: 0;
  bottom: -1px; /* overlap the next pixel so no compositing seam can show */
  pointer-events: none;
  opacity: 0;
  background: rgba(8,12,18,.78);
  backdrop-filter: blur(16px) saturate(135%);
  -webkit-backdrop-filter: blur(16px) saturate(135%);
  transform: translateZ(0);
  will-change: opacity;
  transition: none !important;
  border: 0 !important;
  box-shadow: none !important;
}

html[data-theme="light"] #header::after,
html[data-theme="light"] header#header::after {
  background: rgba(255,255,255,.82);
}

#header.scrolled,
header#header.scrolled,
html[data-theme="light"] #header.scrolled,
html[data-theme="light"] header#header.scrolled {
  background: transparent !important;
  background-image: none !important;
  border: 0 !important;
  box-shadow: none !important;
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

#header.scrolled::after,
header#header.scrolled::after {
  opacity: 1 !important;
}

#header .nav-shell {
  position: relative !important;
  z-index: 2 !important;
}

@media (max-width: 720px) {
  /* Keep the mobile header compact in both top and scrolled states. */
  #header,
  header#header,
  #header.scrolled,
  header#header.scrolled {
    height: 62px !important;
    min-height: 62px !important;
  }

  #header .nav-shell {
    height: 62px !important;
    min-height: 62px !important;
    padding: 0 14px !important;
  }

  #header .logo {
    height: 62px !important;
    gap: 7px !important;
  }

  #header .logo img {
    width: 36px !important;
    height: 36px !important;
    min-width: 36px !important;
    min-height: 36px !important;
    flex: 0 0 36px !important;
  }

  #header .logo strong {
    font-size: 18px !important;
    line-height: 1 !important;
    letter-spacing: 1.8px !important;
  }

  #header .nav-actions {
    height: 62px !important;
    gap: 7px !important;
  }

  #header .theme-toggle,
  #header .nav-toggle {
    width: 38px !important;
    height: 38px !important;
    min-width: 38px !important;
    min-height: 38px !important;
    flex: 0 0 38px !important;
    font-size: 17px !important;
  }

  #main-nav {
    top: 62px !important;
  }

  /* V5.16 paints the active banner into the top-state mobile header.
     Keep that behavior; the glass layer above remains fully transparent. */
  #header:not(.scrolled),
  header#header:not(.scrolled) {
    background-image: var(--mobile-active-banner-bg, none) !important;
    background-repeat: no-repeat !important;
    background-size: cover !important;
    background-position: center top !important;
  }
}

@media (max-width: 390px) {
  #header .nav-shell { padding: 0 12px !important; }
  #header .logo { gap: 6px !important; }
  #header .logo img {
    width: 34px !important;
    height: 34px !important;
    min-width: 34px !important;
    min-height: 34px !important;
    flex-basis: 34px !important;
  }
  #header .logo strong {
    font-size: 17px !important;
    letter-spacing: 1.5px !important;
  }
  #header .nav-actions { gap: 6px !important; }
  #header .theme-toggle,
  #header .nav-toggle {
    width: 36px !important;
    height: 36px !important;
    min-width: 36px !important;
    min-height: 36px !important;
    flex-basis: 36px !important;
    font-size: 16px !important;
  }
}


/* ===== V5.19 desktop responsive single-row capability + news =====
   Desktop/tablet only. Mobile <=720px keeps the streamlined V5.12/V5.13 layout. */
@media (min-width: 721px) {
  /* Capability always remains one row of four cards. */
  #stats .stats-track {
    display: grid !important;
    grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
    gap: 12px !important;
  }
  #stats .stat-card {
    min-width: 0 !important;
    width: auto !important;
  }

  /* News is always exactly one row; JS supplies 5 / 4 / 3 items per page. */
  #news .news-grid {
    display: grid !important;
    grid-auto-flow: row !important;
    gap: 12px !important;
  }
}

@media (min-width: 1281px) {
  #news .news-grid { grid-template-columns: repeat(5, minmax(0, 1fr)) !important; }
}

@media (min-width: 1001px) and (max-width: 1280px) {
  #news .news-grid { grid-template-columns: repeat(4, minmax(0, 1fr)) !important; }
  #stats .stat-card { height: 196px !important; padding: 20px !important; }
  #stats .stat-value { font-size: 42px !important; margin: 22px 0 10px !important; }
  #stats .stat-card h3 { font-size: 14px !important; }
  #stats .stat-card p { font-size: 10px !important; }
}

@media (min-width: 721px) and (max-width: 1000px) {
  #news .news-grid { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; }

  /* Shrink capability cards instead of wrapping to two rows. */
  #stats .stats-track { gap: 8px !important; }
  #stats .stat-card {
    height: 168px !important;
    padding: 14px 12px !important;
  }
  #stats .stat-index { font-size: 8px !important; letter-spacing: 1.4px !important; }
  #stats .stat-value {
    font-size: clamp(28px, 4.6vw, 38px) !important;
    margin: 16px 0 8px !important;
    line-height: 1 !important;
  }
  #stats .stat-card h3 {
    font-size: 11px !important;
    line-height: 1.3 !important;
    margin-bottom: 5px !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis !important;
  }
  #stats .stat-card p {
    height: 30px !important;
    font-size: 9px !important;
    line-height: 1.45 !important;
    -webkit-line-clamp: 2 !important;
  }
}

/* ===== V5.20 mobile menu auto-close + smaller detail modal ===== */
@media (max-width: 720px) {
  /* Case/news detail modal: deliberately lighter and smaller on phones. */
  #modal-overlay {
    padding: 12px !important;
  }
  #modal-overlay .content-modal {
    width: min(90vw, 520px) !important;
    height: min(76vh, 620px) !important;
    max-width: 520px !important;
    max-height: 76vh !important;
    border-radius: 16px !important;
  }
  #modal-overlay .content-modal #modal-body .detail-view .detail-head {
    padding: 17px 16px 12px !important;
  }
  #modal-overlay .content-modal #modal-body .detail-view .detail-head h2 {
    font-size: 15px !important;
    line-height: 1.4 !important;
    margin-top: 5px !important;
  }
  #modal-overlay .content-modal #modal-body .detail-view .detail-body {
    padding: 16px 16px 22px !important;
  }
  #modal-overlay .content-modal #modal-body .detail-view .detail-body p {
    font-size: 13px !important;
    line-height: 1.75 !important;
  }
  #modal-overlay .modal-close {
    right: 9px !important;
    top: 6px !important;
    font-size: 26px !important;
  }
}

@media (max-width: 390px) {
  #modal-overlay .content-modal {
    width: 92vw !important;
    height: min(74vh, 580px) !important;
    max-height: 74vh !important;
  }
}

/* ===== V5.21 mobile menu: transparent frosted glass =====
   Keep the menu visually connected to the Banner/page instead of showing a
   solid panel.  A very light translucent tint is retained only so that the
   browser can render a stable backdrop blur in both themes. */
@media (max-width: 720px) {
  #main-nav,
  #main-nav.active {
    background: rgba(8,12,18,.10) !important;
    background-image: none !important;
    border: 0 !important;
    border-bottom: 0 !important;
    box-shadow: none !important;
    -webkit-backdrop-filter: blur(18px) saturate(135%) !important;
    backdrop-filter: blur(18px) saturate(135%) !important;
  }

  html[data-theme="light"] #main-nav,
  html[data-theme="light"] #main-nav.active {
    background: rgba(255,255,255,.10) !important;
  }

  #main-nav a,
  #main-nav.active a {
    background: transparent !important;
    border: 0 !important;
    box-shadow: none !important;
  }

  #main-nav a:hover,
  #main-nav a:focus-visible,
  #main-nav a.active {
    background: rgba(255,255,255,.08) !important;
  }

  html[data-theme="light"] #main-nav a:hover,
  html[data-theme="light"] #main-nav a:focus-visible,
  html[data-theme="light"] #main-nav a.active {
    background: rgba(255,255,255,.16) !important;
  }
}

/* ===== V5.22 PC about/contact single-row + clickable contact actions ===== */
.contact-link{
  color:inherit;
  text-decoration:none;
  cursor:pointer;
}
.contact-link:visited{color:inherit}
.contact-link:focus-visible{
  outline:2px solid color-mix(in srgb,var(--primary) 72%, transparent);
  outline-offset:2px;
}

@media (min-width: 721px){
  /* About: 3 info cards always stay in one row; video sits below them. */
  #about .about-layout{
    display:grid !important;
    grid-template-columns:1fr !important;
    gap:18px !important;
    align-items:start !important;
  }
  #about .about-text{
    display:grid !important;
    grid-template-columns:repeat(3,minmax(0,1fr)) !important;
    grid-template-rows:none !important;
    gap:12px !important;
    width:100% !important;
    height:auto !important;
    min-width:0 !important;
  }
  #about .about-block{
    width:auto !important;
    min-width:0 !important;
    height:118px !important;
    padding:15px 16px !important;
  }
  #about .about-video{
    width:100% !important;
    height:auto !important;
    aspect-ratio:16/7 !important;
    min-height:260px !important;
    max-height:430px !important;
  }

  /* Contact: 4 cards always stay on one row on PC/tablet. */
  #contact .contact-grid{
    display:grid !important;
    grid-template-columns:repeat(4,minmax(0,1fr)) !important;
    gap:12px !important;
  }
  #contact .contact-item{
    min-width:0 !important;
    width:auto !important;
  }
}

@media (min-width:721px) and (max-width:1000px){
  #about .about-text{gap:8px !important}
  #about .about-block{
    height:104px !important;
    padding:12px 12px !important;
  }
  #about .about-block h3{
    font-size:12px !important;
    margin-bottom:5px !important;
    white-space:nowrap !important;
    overflow:hidden !important;
    text-overflow:ellipsis !important;
  }
  #about .about-copy{
    height:58px !important;
  }
  #about .about-copy p,
  #about .about-copy ul{
    font-size:9px !important;
    line-height:1.5 !important;
  }
  #about .about-video{
    min-height:220px !important;
    max-height:340px !important;
  }

  #contact .contact-grid{gap:8px !important}
  #contact .contact-item{
    height:86px !important;
    padding:13px 11px !important;
  }
  #contact .contact-item small{
    font-size:8px !important;
    margin-bottom:6px !important;
  }
  #contact .contact-item strong{
    font-size:10px !important;
    line-height:1.35 !important;
    max-height:34px !important;
    overflow:hidden !important;
    display:-webkit-box !important;
    -webkit-line-clamp:2 !important;
    -webkit-box-orient:vertical !important;
  }
}

@media (min-width:721px) and (max-width:820px){
  #about .about-block{
    height:96px !important;
    padding:10px !important;
  }
  #about .about-block h3{font-size:11px !important}
  #about .about-copy p,
  #about .about-copy ul{font-size:8px !important}
  #contact .contact-item{
    height:78px !important;
    padding:10px 9px !important;
  }
  #contact .contact-item strong{font-size:9px !important}
}


/* ===== V5.23 domestic map chooser: Amap / Baidu ===== */
body.map-choice-open{overflow:hidden}
.map-choice-overlay{
  position:fixed;
  inset:0;
  z-index:12000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:22px;
  background:rgba(2,6,12,.38);
  opacity:0;
  visibility:hidden;
  transition:opacity .18s ease,visibility .18s ease;
  -webkit-backdrop-filter:blur(8px) saturate(120%);
  backdrop-filter:blur(8px) saturate(120%);
}
.map-choice-overlay.show{opacity:1;visibility:visible}
.map-choice-panel{
  position:relative;
  width:min(430px,calc(100vw - 36px));
  padding:24px;
  border-radius:22px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(9,14,22,.82);
  box-shadow:0 24px 80px rgba(0,0,0,.35);
  -webkit-backdrop-filter:blur(22px) saturate(145%);
  backdrop-filter:blur(22px) saturate(145%);
  transform:translateY(8px) scale(.985);
  transition:transform .18s ease;
}
.map-choice-overlay.show .map-choice-panel{transform:translateY(0) scale(1)}
html[data-theme="light"] .map-choice-overlay{background:rgba(235,240,248,.32)}
html[data-theme="light"] .map-choice-panel{
  background:rgba(255,255,255,.86);
  border-color:rgba(20,35,55,.1);
  box-shadow:0 24px 70px rgba(45,60,80,.16);
}
.map-choice-close{
  position:absolute;
  top:14px;
  right:14px;
  width:32px;
  height:32px;
  border:0;
  border-radius:50%;
  background:rgba(255,255,255,.08);
  color:var(--text);
  font-size:22px;
  line-height:1;
  cursor:pointer;
}
html[data-theme="light"] .map-choice-close{background:rgba(10,25,45,.06)}
.map-choice-kicker{font-size:9px;letter-spacing:2px;color:var(--primary);margin-bottom:7px}
.map-choice-panel h3{margin:0 38px 7px 0;font-size:22px;line-height:1.25}
.map-choice-panel>p{margin:0;color:var(--muted);font-size:12px;line-height:1.6}
.map-choice-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:20px}
.map-choice-btn{
  display:flex;
  align-items:center;
  gap:11px;
  min-width:0;
  padding:14px;
  border-radius:15px;
  border:1px solid var(--line);
  color:inherit;
  text-decoration:none;
  background:rgba(255,255,255,.045);
  transition:transform .18s ease,border-color .18s ease,background .18s ease;
}
html[data-theme="light"] .map-choice-btn{background:rgba(10,25,45,.035)}
.map-choice-btn:hover{transform:translateY(-2px);border-color:rgba(79,199,255,.48);background:rgba(79,199,255,.075)}
.map-choice-icon{
  flex:0 0 auto;
  width:34px;
  height:34px;
  display:grid;
  place-items:center;
  border-radius:10px;
  font-size:13px;
  font-weight:800;
  color:#fff;
  background:linear-gradient(145deg,#18b875,#0a8fef);
}
.map-choice-btn.baidu .map-choice-icon{background:linear-gradient(145deg,#3385ff,#6957ff)}
.map-choice-btn span:last-child{min-width:0;display:block}
.map-choice-btn strong{display:block;font-size:13px;line-height:1.3}
.map-choice-btn small{display:block;margin-top:3px;font-size:9px;color:var(--muted);white-space:nowrap}
@media(max-width:720px){
  .map-choice-overlay{align-items:flex-end;padding:14px}
  .map-choice-panel{width:100%;padding:20px 18px calc(20px + env(safe-area-inset-bottom));border-radius:20px}
  .map-choice-panel h3{font-size:19px}
  .map-choice-actions{grid-template-columns:1fr;gap:9px;margin-top:16px}
  .map-choice-btn{padding:12px 13px}
}

/* ===== V5.24 About responsive layout: wide = left stacked cards + right video ===== */
@media (min-width: 1180px){
  #about .about-layout{
    display:grid !important;
    grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr) !important;
    gap:28px !important;
    align-items:stretch !important;
  }
  #about .about-text{
    display:grid !important;
    grid-template-columns:1fr !important;
    grid-template-rows:repeat(3,minmax(0,1fr)) !important;
    gap:10px !important;
    width:auto !important;
    height:390px !important;
    min-width:0 !important;
  }
  #about .about-block{
    width:auto !important;
    min-width:0 !important;
    height:auto !important;
    min-height:0 !important;
    padding:16px 17px !important;
  }
  #about .about-block h3{
    font-size:14px !important;
    margin:0 0 7px !important;
    white-space:normal !important;
    overflow:visible !important;
    text-overflow:clip !important;
  }
  #about .about-copy{
    height:72px !important;
  }
  #about .about-copy p,
  #about .about-copy ul{
    font-size:12px !important;
    line-height:1.65 !important;
  }
  #about .about-video{
    width:100% !important;
    height:390px !important;
    min-height:390px !important;
    max-height:390px !important;
    aspect-ratio:auto !important;
  }
}


/* ===== V5.25 Banner mouse/touch swipe ===== */
#banner{
  touch-action:pan-y pinch-zoom;
  cursor:grab;
}
#banner.banner-dragging{cursor:grabbing}
#banner .hero-slide,#banner .hero-bg,#banner .hero-inner{
  user-select:none;
  -webkit-user-select:none;
}
#banner .hero-art img{
  -webkit-user-drag:none;
  user-drag:none;
  pointer-events:none;
}
#banner .hero-actions a,#banner .hero-controls button{cursor:pointer}
@media (hover:none),(pointer:coarse){#banner{cursor:default}}


/* ===== V5.29 footer links + recruitment ===== */
.footer-middle{display:flex;flex-direction:column;align-items:center;gap:10px;min-width:0}
.footer-links{display:flex;align-items:center;justify-content:center;gap:8px 16px;flex-wrap:wrap}
.footer-links a{color:var(--muted);text-decoration:none;font-size:11px;white-space:nowrap;transition:color .2s ease}
.footer-links a:hover{color:var(--text)}
@media(max-width:900px){.footer-middle{width:100%}.footer-links{gap:8px 14px}}
@media(max-width:720px){.footer-links{gap:7px 12px}.footer-links a{font-size:9px}}
.jobs-page{width:min(calc(100% - 48px),1180px);margin:0 auto;padding:116px 0 84px;position:relative;z-index:2}
.jobs-hero{padding:44px 0 34px;border-bottom:1px solid var(--line)}
.jobs-hero .eyebrow{color:var(--primary);font-size:11px;letter-spacing:2px}.jobs-hero h1{font-size:clamp(36px,6vw,72px);margin:10px 0 14px;line-height:1.08}.jobs-hero p{max-width:760px;color:var(--muted);font-size:16px;line-height:1.85}
.jobs-toolbar{display:flex;justify-content:space-between;align-items:end;gap:20px;margin:38px 0 18px}.jobs-toolbar h2{margin:0;font-size:28px}.jobs-count{color:var(--muted);font-size:12px}
.jobs-list{display:grid;gap:14px}.job-card{border:1px solid var(--line);border-radius:16px;background:var(--panel);padding:22px 24px}.job-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start}.job-card h3{margin:0 0 10px;font-size:22px}.job-meta{display:flex;flex-wrap:wrap;gap:7px 14px;color:var(--muted);font-size:12px}.job-summary{margin:16px 0 0;color:var(--muted);line-height:1.8}.job-detail{margin-top:18px;padding-top:17px;border-top:1px solid var(--line);line-height:1.9}.job-actions{display:flex;gap:10px;margin-top:18px}.job-actions a{display:inline-flex;padding:9px 15px;border:1px solid var(--line);border-radius:999px;text-decoration:none;color:var(--text)}.job-actions a.primary{background:var(--primary);color:#061018;border-color:transparent}.jobs-empty{padding:50px 20px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:16px}
.jobs-back{display:inline-flex;margin-bottom:10px;color:var(--muted);text-decoration:none}.jobs-back:hover{color:var(--text)}
@media(max-width:720px){.jobs-page{width:calc(100% - 32px);padding:88px 0 56px}.jobs-hero{padding:30px 0 26px}.jobs-hero p{font-size:14px}.jobs-toolbar{margin-top:28px}.job-card{padding:18px}.job-head{display:block}.job-card h3{font-size:19px}.job-meta{margin-top:8px}}

/* ===== V5.31 utility center pages ===== */
.utility-header{position:fixed;top:0;left:0;right:0;z-index:40}
.utility-page{width:min(calc(100% - 48px),1180px);margin:0 auto;padding:116px 0 84px;position:relative;z-index:2;min-height:72vh}
.utility-hero{padding:44px 0 34px;border-bottom:1px solid var(--line)}
.utility-hero .eyebrow,.utility-kicker{color:var(--primary);font-size:11px;letter-spacing:2px;text-transform:uppercase}
.utility-hero h1{font-size:clamp(36px,6vw,72px);line-height:1.08;margin:10px 0 14px}
.utility-hero p{max-width:780px;margin:0;color:var(--muted);font-size:16px;line-height:1.85}
.utility-content{padding:34px 0 0}.utility-muted{color:var(--muted);line-height:1.8}.utility-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}
.utility-btn{display:inline-flex;align-items:center;justify-content:center;min-height:42px;padding:10px 18px;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.03);color:var(--text);text-decoration:none;font:inherit;cursor:pointer;transition:.2s ease}
.utility-btn:hover{transform:translateY(-1px);border-color:var(--primary)}.utility-btn.primary{background:var(--primary);color:#061018;border-color:transparent;font-weight:700}
.course-login-wrap{display:flex;justify-content:center}.course-login-card{width:min(100%,540px);padding:30px;border:1px solid var(--line);border-radius:20px;background:var(--panel)}.course-login-card h2{font-size:28px;margin:8px 0 10px}.course-welcome{width:min(100%,680px)}
.public-form{display:grid;gap:16px;margin-top:22px}.public-form label{display:grid;gap:7px;color:var(--muted);font-size:13px}.public-form label span{font-size:11px}.public-form label em{color:#ff8e97;font-style:normal}.public-form input,.public-form textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:12px;background:rgba(0,0,0,.12);color:var(--text);padding:13px 14px;font:inherit;outline:none}.public-form textarea{resize:vertical;min-height:160px;line-height:1.7}.public-form input:focus,.public-form textarea:focus{border-color:var(--primary)}
.form-message{padding:11px 13px;border-radius:10px;margin:14px 0 0;font-size:13px}.form-message.error{background:rgba(255,76,89,.1);border:1px solid rgba(255,76,89,.22);color:#ffb4ba}.success-panel{padding:22px 4px}.success-panel b{font-size:24px}.success-panel p{color:var(--muted);line-height:1.8}.honeypot{position:absolute!important;left:-9999px!important;opacity:0!important;width:1px!important;height:1px!important}
.download-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.download-tabs button{border:1px solid var(--line);border-radius:999px;background:transparent;color:var(--muted);padding:8px 14px;cursor:pointer}.download-tabs button.active{background:var(--primary);border-color:transparent;color:#061018;font-weight:700}
.download-list{display:grid;gap:12px}.download-card{display:grid;grid-template-columns:64px minmax(0,1fr) auto;align-items:center;gap:18px;padding:20px;border:1px solid var(--line);border-radius:16px;background:var(--panel)}.download-card[hidden]{display:none}.download-icon{width:56px;height:56px;border-radius:14px;border:1px solid var(--line);display:grid;place-items:center;font-size:11px;letter-spacing:1px;color:var(--primary);background:rgba(255,255,255,.025)}.download-main{min-width:0}.download-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.download-title-row h3{margin:0;font-size:20px}.download-tag{font-size:10px;border:1px solid var(--line);border-radius:999px;padding:3px 8px;color:var(--muted)}.download-main p{margin:9px 0;color:var(--muted);line-height:1.7}.download-meta{display:flex;gap:7px 14px;flex-wrap:wrap;color:var(--muted);font-size:11px}
.text-notice{padding:30px;border:1px solid var(--line);border-radius:18px;background:var(--panel);font-size:15px;line-height:2;color:var(--muted);white-space:normal}
.report-layout{display:grid;grid-template-columns:minmax(240px,.7fr) minmax(0,1.3fr);gap:18px}.report-side,.report-form-card{padding:26px;border:1px solid var(--line);border-radius:18px;background:var(--panel)}.report-side h2,.report-form-card h2{margin:8px 0 10px;font-size:24px}.report-side p{color:var(--muted);line-height:1.9;margin:0}
@media(max-width:720px){.utility-page{width:calc(100% - 32px);padding:88px 0 56px}.utility-hero{padding:30px 0 26px}.utility-hero p{font-size:14px}.course-login-card{padding:20px}.download-card{grid-template-columns:48px 1fr;gap:13px;padding:16px}.download-icon{width:44px;height:44px;border-radius:12px}.download-card>.utility-btn{grid-column:1/-1;width:100%}.download-title-row h3{font-size:17px}.report-layout{grid-template-columns:1fr}.report-side,.report-form-card{padding:20px}.text-notice{padding:21px;font-size:14px}}

/* ===== V5.32 footer navigation separation + filing management ===== */
footer{
  display:block!important;
  padding:0!important;
  border-top:1px solid var(--line);
  background:linear-gradient(180deg,rgba(8,16,24,.10),rgba(8,16,24,.42));
}
html[data-theme="light"] footer{background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(232,242,247,.54))}
.footer-portal-wrap{
  width:min(calc(100% - 48px),var(--content));
  margin:0 auto;
  padding:30px 0 28px;
  border-bottom:1px solid var(--line);
}
.footer-portal-head{display:flex;align-items:baseline;gap:12px;margin-bottom:14px}
.footer-portal-head span{font-size:9px;letter-spacing:2px;color:var(--primary)}
.footer-portal-head strong{font-size:15px;color:var(--text);letter-spacing:.5px}
.footer-portals{
  display:grid!important;
  grid-template-columns:repeat(5,minmax(0,1fr));
  gap:10px!important;
  width:100%;
}
.footer-portal-link{
  min-width:0;
  min-height:64px;
  padding:12px 13px!important;
  border:1px solid var(--line);
  border-radius:13px;
  background:linear-gradient(145deg,rgba(255,255,255,.045),rgba(42,185,243,.025));
  display:grid!important;
  grid-template-columns:auto 1fr auto;
  align-items:center;
  gap:8px;
  color:var(--text)!important;
  text-decoration:none;
  transition:transform .22s ease,border-color .22s ease,background .22s ease,box-shadow .22s ease;
}
.footer-portal-link:hover{
  transform:translateY(-2px);
  border-color:rgba(42,185,243,.42);
  background:linear-gradient(145deg,rgba(42,185,243,.10),rgba(255,255,255,.04));
  box-shadow:0 9px 24px rgba(0,0,0,.10);
}
html[data-theme="light"] .footer-portal-link{background:rgba(255,255,255,.54)}
html[data-theme="light"] .footer-portal-link:hover{background:rgba(255,255,255,.88)}
.portal-index{font-size:8px;letter-spacing:1px;color:var(--primary);align-self:start;padding-top:2px}
.footer-portal-link strong{font-size:13px;letter-spacing:.4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.portal-arrow{font-size:13px;color:var(--muted);transition:transform .2s ease,color .2s ease}
.footer-portal-link:hover .portal-arrow{transform:translate(2px,-2px);color:var(--primary)}
.footer-main{
  width:min(calc(100% - 48px),var(--content));
  margin:auto;
  padding:24px 0 26px;
  display:grid!important;
  grid-template-columns:minmax(160px,.8fr) minmax(280px,1.4fr) minmax(260px,1fr)!important;
  align-items:start!important;
  gap:30px!important;
}
.footer-brand strong{font-size:13px}.footer-brand p{font-size:10px;line-height:1.6}
.footer-cert-area{min-width:0;text-align:left}
.footer-label{display:block;margin-bottom:9px;font-size:9px;letter-spacing:1.6px;color:var(--muted)}
.footer-certificates{justify-content:flex-start!important;gap:7px!important}
.footer-cert-placeholder p{margin:0;color:var(--muted);font-size:10px;line-height:1.7}
.footer-copy{text-align:right!important;font-size:10px;line-height:1.7;color:var(--muted)}
.footer-other{margin-bottom:5px;white-space:pre-line}
.footer-copyright{margin-bottom:5px}
.footer-records{display:flex;justify-content:flex-end;gap:5px 12px;flex-wrap:wrap}
.footer-record{color:var(--muted);text-decoration:none;transition:color .2s ease}
a.footer-record:hover{color:var(--primary)}
@media(max-width:1080px){
  .footer-portals{grid-template-columns:repeat(3,minmax(0,1fr))}
  .footer-main{grid-template-columns:1fr 1.35fr!important}.footer-copy{grid-column:1/-1;text-align:left!important}.footer-records{justify-content:flex-start}
}
@media(max-width:720px){
  .footer-portal-wrap{width:calc(100% - 32px);padding:22px 0 20px}
  .footer-portal-head{margin-bottom:11px}
  .footer-portals{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px!important}
  .footer-portal-link{min-height:56px;padding:10px!important}.footer-portal-link strong{font-size:11px}.portal-index{font-size:7px}
  .footer-portals .footer-portal-link:nth-child(5):last-child{grid-column:1/-1}
  .footer-main{width:calc(100% - 32px);padding:20px 0 24px;grid-template-columns:1fr!important;gap:17px!important;text-align:left!important}
  .footer-brand,.footer-copy,.footer-cert-area{text-align:left!important}.footer-records{justify-content:flex-start}.footer-certificates{justify-content:flex-start!important}
  .certificate-btn{font-size:9px;padding:6px 10px}
}

/* ===== V5.33 compact integrated footer ===== */
.footer-portal-wrap{display:none!important}
.footer-main.footer-main-integrated{
  width:min(calc(100% - 48px),var(--content));margin:auto;padding:24px 0 26px;
  display:grid!important;grid-template-columns:minmax(145px,.65fr) minmax(390px,1.65fr) minmax(270px,1.15fr) minmax(300px,1.2fr)!important;
  align-items:start!important;gap:28px!important;
}
.footer-quick-area,.footer-cert-area{min-width:0}
.footer-portals{display:flex!important;flex-wrap:wrap;gap:7px!important;width:100%}
.footer-portal-link{display:inline-flex!important;min-width:0;min-height:0;padding:7px 12px!important;border:1px solid var(--line);border-radius:999px;background:rgba(255,255,255,.025);align-items:center;justify-content:center;color:var(--muted)!important;white-space:nowrap}
.footer-portal-link strong{font-size:10px;font-weight:500;letter-spacing:.2px;overflow:visible}
.footer-portal-link:hover{transform:none;color:var(--text)!important;border-color:rgba(42,185,243,.42);background:rgba(42,185,243,.07);box-shadow:none}
.footer-certificates{display:flex!important;flex-wrap:wrap;gap:7px!important}
.certificate-btn{min-width:92px;text-align:center;border:1px solid var(--line)!important;border-radius:999px!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.footer-record{display:inline-flex;align-items:center;gap:5px;color:var(--muted);text-decoration:none}
.record-icon{width:13px;height:13px;display:inline-block;flex:0 0 13px;position:relative;border:1px solid currentColor;opacity:.82}
.record-icon.icp{border-radius:2px;border-top-width:2px}
.record-icon.icp:before{content:'';position:absolute;left:2px;right:2px;top:3px;height:1px;background:currentColor;box-shadow:0 3px 0 currentColor,0 6px 0 currentColor}
.record-icon.police{border-radius:50% 50% 48% 48%;clip-path:polygon(50% 0,95% 18%,86% 72%,50% 100%,14% 72%,5% 18%)}
.record-icon.police:after{content:'';position:absolute;width:3px;height:3px;border-radius:50%;background:currentColor;left:4px;top:4px}
@media(max-width:1180px){.footer-main.footer-main-integrated{grid-template-columns:1fr 2fr!important}.footer-copy{text-align:left!important}.footer-records{justify-content:flex-start}}
@media(max-width:720px){.footer-main.footer-main-integrated{width:calc(100% - 32px);grid-template-columns:1fr!important;gap:16px!important}.footer-portals{gap:6px!important}.footer-portal-link{padding:7px 10px!important}.certificate-btn{min-width:0}}

/* ===== V5.34 footer certificates one-line + minimal course center ===== */
.footer-certificates{
  display:flex!important;
  flex-wrap:nowrap!important;
  gap:7px!important;
  width:100%;
  max-width:100%;
  overflow-x:auto;
  overflow-y:hidden;
  scrollbar-width:none;
  -webkit-overflow-scrolling:touch;
}
.footer-certificates::-webkit-scrollbar{display:none}
.footer-certificates .certificate-btn{
  flex:0 0 auto;
  min-width:0!important;
  max-width:150px;
  padding:7px 11px!important;
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
}
.course-minimal-body{min-height:100vh;display:flex;flex-direction:column}
.course-minimal-body .utility-header{flex:0 0 auto}
.course-minimal-main{
  position:relative;
  z-index:2;
  width:100%;
  min-height:calc(100vh - 250px);
  flex:1 0 auto;
  display:grid;
  place-items:center;
  padding:116px 24px 64px;
}
.course-login-center{width:min(100%,540px);margin:0 auto;display:block}
.course-login-center .course-login-card{width:100%;margin:0 auto}
.course-minimal-body footer{flex:0 0 auto;width:100%}
@media(max-width:720px){
  .course-minimal-main{min-height:calc(100vh - 320px);padding:94px 16px 44px}
  .course-login-center{width:100%}
  .footer-certificates .certificate-btn{max-width:132px}
}


/* ===== V5.35 recruitment center ===== */
.jobs-v535{max-width:1240px}.jobs-hero-v535{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(340px,.75fr);gap:56px;align-items:end;padding:56px 0 44px}.jobs-hero-v535 h1{margin-bottom:8px}.jobs-hero-v535 h2{margin:0 0 16px;font-size:clamp(20px,2.5vw,34px);font-weight:600}.jobs-hero-v535 p{max-width:700px}.jobs-hero-actions{display:flex;gap:10px;margin-top:24px}.jobs-primary,.jobs-secondary{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:0 18px;border-radius:999px;text-decoration:none;font-size:13px}.jobs-primary{background:var(--primary);color:#061018;font-weight:700}.jobs-secondary{border:1px solid var(--line);color:var(--text);background:rgba(255,255,255,.025)}.jobs-overview{display:grid;grid-template-columns:repeat(2,1fr);border:1px solid var(--line);border-radius:18px;overflow:hidden;background:var(--panel)}.jobs-overview>div{min-height:118px;padding:20px;display:flex;flex-direction:column;justify-content:center;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.jobs-overview>div:nth-child(2n){border-right:0}.jobs-overview>div:nth-last-child(-n+2){border-bottom:0}.jobs-overview strong{font-size:34px;line-height:1}.jobs-overview span{margin-top:8px;color:var(--muted);font-size:11px}.jobs-section{padding-top:46px}.jobs-toolbar-v535{align-items:end}.jobs-toolbar-v535 h2{margin:5px 0 0}.jobs-filter{display:flex;gap:8px}.jobs-filter input,.jobs-filter select{height:42px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--text);padding:0 13px;outline:none}.jobs-filter input{width:260px}.jobs-table-head,.job-row-main{display:grid;grid-template-columns:minmax(280px,1.8fr) 100px 80px 130px 34px;gap:18px;align-items:center}.jobs-table-head{padding:0 20px 10px;color:var(--muted);font-size:10px}.jobs-list-v535{gap:8px}.job-row{border:1px solid var(--line);border-radius:14px;background:var(--panel);overflow:hidden}.job-row-main{width:100%;padding:17px 20px;border:0;border-radius:0;background:transparent;text-align:left;color:var(--text);cursor:pointer}.job-row-main:hover{background:rgba(255,255,255,.025)}.job-title-cell{min-width:0}.job-title-cell strong{display:block;font-size:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.job-title-cell small{display:block;color:var(--muted);margin-top:5px;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.job-type-cell,.job-count-cell,.job-salary-cell{font-size:12px}.job-salary-cell{font-weight:650}.job-toggle{font-size:18px;color:var(--muted);transition:.2s}.job-row-main[aria-expanded="true"] .job-toggle{transform:rotate(45deg);color:var(--primary)}.job-expand{display:none;padding:0 20px 22px;border-top:1px solid transparent}.job-expand.open{display:block;border-top-color:var(--line)}.job-facts{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;padding:18px 0}.job-facts>div{border:1px solid var(--line);border-radius:10px;padding:10px 12px}.job-facts span{display:block;color:var(--muted);font-size:9px;margin-bottom:4px}.job-facts b{font-size:12px;font-weight:600}.job-intro{padding:12px 14px;border-left:2px solid var(--primary);background:rgba(42,185,243,.045);border-radius:0 10px 10px 0;color:var(--muted);line-height:1.8;font-size:13px}.job-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:20px}.job-detail-grid section{min-width:0}.job-detail-grid section.wide{grid-column:1/-1}.job-detail-grid h3{font-size:13px;margin:0 0 9px}.job-detail-grid p{margin:0;color:var(--muted);line-height:1.9;font-size:12px;white-space:pre-line}.jobs-apply-note{margin-top:42px;padding:28px 30px;border:1px solid var(--line);border-radius:16px;background:var(--panel);display:grid;grid-template-columns:.65fr 1.35fr;gap:30px}.jobs-apply-note h2{margin:5px 0 0;font-size:22px}.jobs-apply-note p{margin:0 0 8px;color:var(--muted);line-height:1.75}.jobs-apply-note a{display:inline-flex;margin-top:8px;color:var(--text);text-decoration:none;font-weight:700}
@media(max-width:900px){.jobs-hero-v535{grid-template-columns:1fr;gap:28px}.jobs-overview{grid-template-columns:repeat(4,1fr)}.jobs-overview>div{min-height:90px;border-bottom:0}.jobs-overview>div:nth-child(2){border-right:1px solid var(--line)}.jobs-overview strong{font-size:26px}.jobs-table-head{display:none}.job-row-main{grid-template-columns:minmax(0,1fr) 76px 62px 110px 26px}.job-facts{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.jobs-hero-v535{padding-top:34px}.jobs-overview{grid-template-columns:repeat(2,1fr)}.jobs-overview>div:nth-child(2){border-right:0}.jobs-overview>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.jobs-filter{width:100%;display:grid;grid-template-columns:1fr 110px}.jobs-filter input{width:100%}.jobs-toolbar-v535{align-items:stretch;flex-direction:column}.job-row-main{grid-template-columns:minmax(0,1fr) auto auto;gap:9px;padding:15px}.job-type-cell{grid-column:2}.job-count-cell{grid-column:3}.job-salary-cell{grid-column:1;grid-row:2;color:var(--primary)}.job-toggle{grid-column:3;grid-row:2;justify-self:end}.job-expand{padding:0 15px 18px}.job-facts{grid-template-columns:1fr 1fr}.job-detail-grid{grid-template-columns:1fr;gap:16px}.job-detail-grid section.wide{grid-column:auto}.jobs-apply-note{grid-template-columns:1fr;padding:22px;gap:16px}}

/* ===== V5.37 mobile footer + clearer record icons ===== */
/* Mobile: enterprise qualifications are hidden completely. */
@media(max-width:720px){
  .footer-cert-area{display:none!important}
  .footer-main.footer-main-integrated{gap:14px!important}
}

/* Crisp vector-style record icons. Replace the older drawn CSS symbols. */
.record-icon{
  width:15px!important;height:15px!important;flex:0 0 15px!important;
  border:0!important;border-radius:0!important;clip-path:none!important;
  opacity:.9;background-color:currentColor;
  -webkit-mask-repeat:no-repeat;mask-repeat:no-repeat;
  -webkit-mask-position:center;mask-position:center;
  -webkit-mask-size:contain;mask-size:contain;
}
.record-icon::before,.record-icon::after{content:none!important;display:none!important}
.record-icon.icp{
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M5 2h10l4 4v16H5V2zm2 2v16h10V8h-4V4H7zm8 .8V6h1.2L15 4.8zM8.5 10h7v1.8h-7V10zm0 3.5h7v1.8h-7v-1.8zm0 3.5h5v1.8h-5V17z'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M5 2h10l4 4v16H5V2zm2 2v16h10V8h-4V4H7zm8 .8V6h1.2L15 4.8zM8.5 10h7v1.8h-7V10zm0 3.5h7v1.8h-7v-1.8zm0 3.5h5v1.8h-5V17z'/%3E%3C/svg%3E");
}
.record-icon.police{
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 2 20 5v6c0 5.2-3.3 9.2-8 11-4.7-1.8-8-5.8-8-11V5l8-3zm0 3.1L6.5 7.2V11c0 3.7 2.1 6.8 5.5 8.4 3.4-1.6 5.5-4.7 5.5-8.4V7.2L12 5.1zm0 2.2 1.1 2.2 2.4.4-1.8 1.7.4 2.4-2.1-1.1-2.1 1.1.4-2.4-1.8-1.7 2.4-.4L12 7.3z'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23000' d='M12 2 20 5v6c0 5.2-3.3 9.2-8 11-4.7-1.8-8-5.8-8-11V5l8-3zm0 3.1L6.5 7.2V11c0 3.7 2.1 6.8 5.5 8.4 3.4-1.6 5.5-4.7 5.5-8.4V7.2L12 5.1zm0 2.2 1.1 2.2 2.4.4-1.8 1.7.4 2.4-2.1-1.1-2.1 1.1.4-2.4-1.8-1.7 2.4-.4L12 7.3z'/%3E%3C/svg%3E");
}
.footer-record{gap:6px}

/* ===== V5.40: based on V5.37 Footer, hide only section heading text ===== */
.footer-quick-area > .footer-label,
.footer-cert-area > .footer-label{display:none!important}

.job-seq{font-style:normal;font-size:10px;font-weight:700;color:var(--primary);margin-right:9px;letter-spacing:.08em}


/* ===== V5.42 Footer medium-width aligned right stack ===== */
/* At narrower desktop/tablet widths, quick links and qualifications share the same right column. */
@media (min-width:721px) and (max-width:1500px){
  .footer-main.footer-main-integrated{
    grid-template-columns:minmax(235px,.72fr) minmax(520px,1.28fr)!important;
    grid-template-areas:"brand quick" "copy cert"!important;
    align-items:start!important;
    column-gap:42px!important;
    row-gap:12px!important;
  }
  .footer-brand{grid-area:brand!important}
  .footer-copy{grid-area:copy!important;text-align:left!important}
  .footer-quick-area{grid-area:quick!important}
  .footer-cert-area{grid-area:cert!important}
  .footer-quick-area,.footer-cert-area{width:100%!important;justify-self:stretch!important;margin:0!important;padding:0!important}
  .footer-portals,.footer-certificates{justify-content:flex-start!important;margin:0!important;padding:0!important}
  .footer-portals{flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none}
  .footer-portals::-webkit-scrollbar{display:none}
  .footer-records{justify-content:flex-start!important}
}
@media (min-width:721px) and (max-width:900px){
  .footer-main.footer-main-integrated{
    grid-template-columns:minmax(190px,.62fr) minmax(430px,1.38fr)!important;
    column-gap:24px!important;
  }
}

/* ===== V5.43 global liquid-glass visual refinement ===== */
/*
 * Unified glass material for rounded front-end controls/cards.
 * Keep primary actions blue, but always use white text for contrast.
 */
:root{
  --liquid-glass-bg:linear-gradient(145deg,rgba(255,255,255,.085) 0%,rgba(255,255,255,.032) 44%,rgba(42,185,243,.035) 100%);
  --liquid-glass-line:rgba(255,255,255,.13);
  --liquid-glass-shadow:inset 0 1px 0 rgba(255,255,255,.12),inset 0 -1px 0 rgba(255,255,255,.025),0 12px 34px rgba(0,0,0,.16);
  --liquid-glass-hover:linear-gradient(145deg,rgba(255,255,255,.115) 0%,rgba(255,255,255,.045) 46%,rgba(42,185,243,.055) 100%);
}
html[data-theme="light"]{
  --liquid-glass-bg:linear-gradient(145deg,rgba(255,255,255,.78) 0%,rgba(255,255,255,.48) 46%,rgba(85,190,235,.10) 100%);
  --liquid-glass-line:rgba(255,255,255,.86);
  --liquid-glass-shadow:inset 0 1px 0 rgba(255,255,255,.96),inset 0 -1px 0 rgba(18,70,100,.05),0 12px 30px rgba(35,80,105,.10);
  --liquid-glass-hover:linear-gradient(145deg,rgba(255,255,255,.92) 0%,rgba(255,255,255,.60) 46%,rgba(70,180,225,.13) 100%);
}

/* Core rounded cards / panels across the public website. */
.glass-panel,
.service-card,.case-card,.news-card,.stat-card,.about-block,.contact-item,
.course-login-card,.download-card,.text-notice,.report-side,.report-form-card,
.jobs-overview,.job-row,.jobs-apply-note,.job-card,.jobs-empty,
.job-facts>div,.download-icon,
.footer-portal-link,.certificate-btn,.map-choice-panel{
  background:var(--liquid-glass-bg)!important;
  border-color:var(--liquid-glass-line)!important;
  -webkit-backdrop-filter:blur(20px) saturate(138%);
  backdrop-filter:blur(20px) saturate(138%);
  box-shadow:var(--liquid-glass-shadow);
}

/* Smaller rounded controls use the same material, with lighter depth. */
.utility-btn,.jobs-secondary,.job-actions a,
.download-tabs button,.download-tag,
.jobs-filter input,.jobs-filter select,
.public-form input,.public-form textarea,
.cases-filter button,.service-features span,
.theme-toggle,.nav-toggle,.hero-controls>button,.news-pagination button{
  background:var(--liquid-glass-bg);
  border-color:var(--liquid-glass-line);
  -webkit-backdrop-filter:blur(16px) saturate(132%);
  backdrop-filter:blur(16px) saturate(132%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.09),0 7px 20px rgba(0,0,0,.08);
}

/* Subtle hover lift without turning the whole box into a bright block. */
@media (hover:hover){
  .service-card:hover,.news-card:hover,.stat-card:hover,.about-block:hover,.contact-item:hover,
  .download-card:hover,.job-row:hover,.jobs-apply-note:hover,
  .course-login-card:hover,.report-side:hover,.report-form-card:hover,.text-notice:hover{
    background:var(--liquid-glass-hover)!important;
    border-color:rgba(120,223,255,.24)!important;
  }
  .utility-btn:not(.primary):hover,.jobs-secondary:hover,.job-actions a:not(.primary):hover,
  .download-tabs button:not(.active):hover,.cases-filter button:not(.active):hover{
    background:var(--liquid-glass-hover);
  }
}

/* Primary/blue controls: preserve blue identity and force legible white labels. */
.utility-btn.primary,
.jobs-primary,
.job-actions a.primary,
.download-tabs button.active,
.cases-filter button.active,
.btn.primary{
  color:#fff!important;
  background:linear-gradient(135deg,#21b7f2 0%,#2386ee 100%)!important;
  border-color:rgba(120,223,255,.34)!important;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.22),0 8px 22px rgba(27,145,226,.20)!important;
}
.utility-btn.primary:visited,.jobs-primary:visited,.job-actions a.primary:visited{color:#fff!important}

/* Key utility pages: make glass hierarchy explicit and consistent. */
.course-login-card{
  background:var(--liquid-glass-bg)!important;
  border-color:var(--liquid-glass-line)!important;
}
.jobs-overview,.job-row,.jobs-apply-note{
  background:var(--liquid-glass-bg)!important;
}
.job-row-main:hover{background:rgba(255,255,255,.035)}
.job-intro{background:linear-gradient(90deg,rgba(42,185,243,.09),rgba(255,255,255,.025))}
.download-card,.report-side,.report-form-card,.text-notice{
  background:var(--liquid-glass-bg)!important;
}

/* Form fields should read as inset glass rather than opaque dark rectangles. */
.public-form input,.public-form textarea,.jobs-filter input,.jobs-filter select{
  background:linear-gradient(145deg,rgba(0,0,0,.11),rgba(255,255,255,.035));
}
html[data-theme="light"] .public-form input,
html[data-theme="light"] .public-form textarea,
html[data-theme="light"] .jobs-filter input,
html[data-theme="light"] .jobs-filter select{
  background:linear-gradient(145deg,rgba(255,255,255,.72),rgba(255,255,255,.43));
}

/* Keep glass effects lightweight on mobile. */
@media(max-width:720px){
  .glass-panel,.service-card,.case-card,.news-card,.stat-card,.about-block,.contact-item,
  .course-login-card,.download-card,.text-notice,.report-side,.report-form-card,
  .jobs-overview,.job-row,.jobs-apply-note,.job-facts>div{
    -webkit-backdrop-filter:blur(15px) saturate(128%);
    backdrop-filter:blur(15px) saturate(128%);
    box-shadow:inset 0 1px 0 rgba(255,255,255,.09),0 8px 22px rgba(0,0,0,.11);
  }
}


/* ===== V5.44 member / social QR / downloads & jobs pagination ===== */
.member-entry{display:inline-flex;align-items:center;justify-content:center;height:34px;padding:0 13px;border:1px solid rgba(255,255,255,.16);border-radius:999px;color:var(--text);font-size:12px;text-decoration:none;background:linear-gradient(145deg,rgba(255,255,255,.08),rgba(255,255,255,.025));backdrop-filter:blur(16px) saturate(135%);white-space:nowrap;transition:.25s ease}.member-entry:hover{border-color:rgba(69,196,255,.48);background:rgba(69,196,255,.10);transform:translateY(-1px)}html[data-theme="light"] .member-entry{background:rgba(255,255,255,.58);border-color:rgba(40,80,110,.15)}
.footer-social-area{display:flex;align-items:center;justify-content:center;gap:8px;min-width:72px}.social-qr-item{position:relative;display:inline-flex}.footer-social-btn{width:30px;height:30px;border-radius:50%;border:1px solid var(--line);background:linear-gradient(145deg,rgba(255,255,255,.08),rgba(255,255,255,.025));color:var(--text);font-size:11px;cursor:pointer;backdrop-filter:blur(14px);transition:.2s ease}.footer-social-btn svg{width:16px;height:16px;fill:currentColor;display:block;margin:auto}.footer-social-btn:hover{border-color:rgba(69,196,255,.5);transform:translateY(-1px)}.social-qr-pop{position:absolute;left:50%;bottom:calc(100% + 12px);transform:translate(-50%,8px);width:148px;padding:10px;opacity:0;visibility:hidden;pointer-events:none;z-index:50;transition:.2s ease;text-align:center}.social-qr-pop:after{content:"";position:absolute;left:50%;top:100%;transform:translateX(-50%);border:7px solid transparent;border-top-color:rgba(255,255,255,.22)}.social-qr-pop img{display:block;width:126px;height:126px;object-fit:cover;border-radius:10px;background:#fff;padding:5px}.social-qr-pop b{display:block;margin-top:7px;font-size:11px;color:var(--text)}.social-qr-item:hover .social-qr-pop,.social-qr-item:focus-within .social-qr-pop{opacity:1;visibility:visible;transform:translate(-50%,0)}
.footer-main.footer-main-integrated{grid-template-columns:minmax(180px,.9fr) minmax(290px,1.35fr) minmax(250px,1.1fr) auto minmax(280px,1.2fr)}
.member-card{width:min(440px,100%)}.member-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:18px 0}.member-tabs a{padding:10px;border-radius:12px;border:1px solid var(--line);text-align:center;text-decoration:none;color:var(--muted);background:rgba(255,255,255,.025)}.member-tabs a.active{color:#fff;border-color:rgba(69,196,255,.45);background:linear-gradient(135deg,rgba(30,154,220,.72),rgba(53,190,238,.45))}
.download-center-v544{scroll-margin-top:90px}.download-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.download-grid .download-card{display:grid;grid-template-columns:52px minmax(0,1fr);align-items:start;gap:14px;padding:18px;min-height:178px}.download-grid .download-card>.utility-btn{grid-column:1/-1;justify-self:start}.download-grid .download-main p{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.smart-pagination{display:flex;align-items:center;justify-content:center;gap:7px;margin:28px 0 4px;min-height:36px}.smart-pagination:empty{display:none}.smart-pagination button,.smart-pagination .page-ellipsis{min-width:34px;height:34px;padding:0 9px;border-radius:999px;border:1px solid var(--line);background:rgba(255,255,255,.035);color:var(--muted);display:inline-grid;place-items:center}.smart-pagination button{cursor:pointer}.smart-pagination button.active{background:linear-gradient(135deg,rgba(30,154,220,.78),rgba(53,190,238,.55));border-color:rgba(86,201,250,.58);color:#fff}.smart-pagination button:hover{color:var(--text);border-color:rgba(69,196,255,.42)}
.jobs-section{scroll-margin-top:90px}
@media(max-width:1180px){.footer-main.footer-main-integrated{grid-template-columns:minmax(170px,.9fr) minmax(280px,1.45fr) minmax(240px,1.2fr) auto}.footer-copy{grid-column:1/-1}.footer-social-area{justify-content:flex-start}}
@media(max-width:900px){.member-entry{font-size:11px;padding:0 10px}.footer-social-area{display:none}.download-grid{grid-template-columns:1fr}}
@media(max-width:720px){.member-entry{height:30px;padding:0 9px}.download-grid{grid-template-columns:1fr}.download-grid .download-card{min-height:0}.footer-social-area{display:none}}

.social-qr-pop .qr-empty{display:grid;place-items:center;width:126px;height:94px;border-radius:10px;border:1px dashed var(--line);color:var(--muted);font-size:10px;line-height:1.6;padding:12px}
@media(min-width:901px) and (max-width:1500px){
  .footer-main.footer-main-integrated{grid-template-columns:minmax(235px,.68fr) minmax(500px,1.32fr) 72px!important;grid-template-areas:"brand quick social" "copy cert social"!important;column-gap:30px!important;row-gap:12px!important}
  .footer-social-area{grid-area:social!important;align-self:center!important;justify-self:center!important;display:flex!important}
}
.member-tabs.single{grid-template-columns:1fr}

/* ===== V6.4 light theme: pure-white cards and readable public modals ===== */
html[data-theme="light"]{
  --liquid-glass-bg:#fff;
  --liquid-glass-hover:#fff;
  --liquid-glass-line:rgba(25,61,84,.14);
}
html[data-theme="light"] .glass-panel,
html[data-theme="light"] .service-card,
html[data-theme="light"] .case-card,
html[data-theme="light"] .news-card,
html[data-theme="light"] .stat-card,
html[data-theme="light"] .about-block,
html[data-theme="light"] .contact-item,
html[data-theme="light"] .course-login-card,
html[data-theme="light"] .download-card,
html[data-theme="light"] .text-notice,
html[data-theme="light"] .report-side,
html[data-theme="light"] .report-form-card,
html[data-theme="light"] .jobs-overview,
html[data-theme="light"] .job-row,
html[data-theme="light"] .jobs-apply-note,
html[data-theme="light"] .job-card,
html[data-theme="light"] .job-facts>div,
html[data-theme="light"] .download-icon,
html[data-theme="light"] .footer-portal-link,
html[data-theme="light"] .certificate-btn,
html[data-theme="light"] .map-choice-panel{
  background:#fff!important;
  background-image:none!important;
}
@media(hover:hover){html[data-theme="light"] .service-card:hover,html[data-theme="light"] .news-card:hover,html[data-theme="light"] .stat-card:hover,html[data-theme="light"] .about-block:hover,html[data-theme="light"] .contact-item:hover,html[data-theme="light"] .download-card:hover,html[data-theme="light"] .job-row:hover{background:#fff!important;background-image:none!important}}
html[data-theme="light"] #modal-overlay .content-modal,
html[data-theme="light"] .certificate-modal,
html[data-theme="light"] #video-modal .video-box{
  background:#fff!important;
  background-image:none!important;
  color:#142532!important;
  border-color:rgba(25,61,84,.18)!important;
}
html[data-theme="light"] #modal-overlay .detail-head,
html[data-theme="light"] #modal-overlay .detail-body,
html[data-theme="light"] #modal-overlay .detail-view,
html[data-theme="light"] .certificate-view{background:#fff!important;color:#142532!important}
html[data-theme="light"] #modal-overlay .detail-body p,
html[data-theme="light"] #modal-overlay .news-detail-meta,
html[data-theme="light"] #modal-overlay .detail-kicker,
html[data-theme="light"] .certificate-view p{color:#304653!important;opacity:1!important}
html[data-theme="light"] #modal-overlay .detail-head h2,
html[data-theme="light"] .certificate-title,
html[data-theme="light"] .modal-close{color:#102532!important}
html[data-theme="light"] #modal-overlay .modal-hero-frame,
html[data-theme="light"] .certificate-view img{background:#fff!important}


/* ===== V5.45 two-row footer / richer downloads / simpler AI ===== */
.footer-main.footer-main-integrated.footer-v545{
  width:min(calc(100% - 48px),var(--content));
  display:block!important;
  padding:20px 0 24px!important;
}
.footer-v545 .footer-top-row,
.footer-v545 .footer-bottom-row{
  display:grid;
  align-items:center;
  width:100%;
}
.footer-v545 .footer-top-row{
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  gap:24px;
  padding-bottom:18px;
  border-bottom:1px solid var(--line);
}
.footer-v545 .footer-bottom-row{
  grid-template-columns:minmax(180px,.8fr) minmax(0,2.2fr);
  gap:28px;
  padding-top:18px;
}
.footer-v545 .footer-quick-area{justify-self:start;min-width:0}
.footer-v545 .footer-social-area{justify-self:center;display:flex!important}
.footer-v545 .footer-cert-area{justify-self:end;min-width:0}
.footer-v545 .footer-brand{justify-self:start;text-align:left!important}
.footer-v545 .footer-copy{justify-self:end;text-align:right!important;max-width:none}
.footer-v545 .footer-portals,
.footer-v545 .footer-certificates{
  display:flex!important;
  align-items:center;
  flex-wrap:wrap!important;
  gap:7px!important;
}
.footer-v545 .footer-certificates{justify-content:flex-end!important}
.footer-v545 .footer-records{justify-content:flex-end!important}
.footer-v545 .footer-label{display:none!important}
.footer-v545 .footer-social-btn{width:32px;height:32px}
@media(max-width:1100px){
  .footer-v545 .footer-top-row{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:14px}
  .footer-v545 .footer-portal-link{padding:6px 9px!important}
  .footer-v545 .certificate-btn{padding:6px 9px!important;min-width:0!important}
  .footer-v545 .footer-bottom-row{grid-template-columns:minmax(150px,.7fr) minmax(0,2fr)}
}
@media(max-width:820px){
  .footer-v545 .footer-top-row{grid-template-columns:1fr auto;gap:12px}
  .footer-v545 .footer-quick-area{overflow:hidden}
  .footer-v545 .footer-portals{flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none}
  .footer-v545 .footer-portals::-webkit-scrollbar{display:none}
  .footer-v545 .footer-cert-area{display:none!important}
  .footer-v545 .footer-bottom-row{grid-template-columns:1fr;gap:12px}
  .footer-v545 .footer-copy{justify-self:start;text-align:left!important}
  .footer-v545 .footer-records{justify-content:flex-start!important}
}
@media(max-width:520px){
  .footer-main.footer-main-integrated.footer-v545{width:calc(100% - 28px)}
  .footer-v545 .footer-top-row{grid-template-columns:minmax(0,1fr) auto}
  .footer-v545 .footer-brand p{max-width:220px}
}

/* richer download categories */
.download-tabs{display:flex;flex-wrap:wrap;gap:8px}
.download-type-image .download-icon,
.download-card[data-type="image"] .download-icon{font-size:11px}
.download-type-archive .download-icon,
.download-card[data-type="archive"] .download-icon{font-size:10px}
.download-type-media .download-icon,
.download-card[data-type="media"] .download-icon{font-size:10px}
.download-card .download-file-ext{
  display:inline-flex;align-items:center;min-height:20px;padding:2px 7px;border-radius:999px;
  border:1px solid var(--line);font-size:9px;color:var(--muted);letter-spacing:.5px
}
@media(max-width:720px){
  .download-tabs{display:flex!important;overflow-x:auto;flex-wrap:nowrap;padding-bottom:3px;scrollbar-width:none}
  .download-tabs::-webkit-scrollbar{display:none}
  .download-tabs button{white-space:nowrap}
}

/* simpler AI configuration */
.ai-simple-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
.ai-provider-card{padding:14px 16px;border:1px solid var(--line);border-radius:16px;background:rgba(255,255,255,.025)}
.ai-advanced{margin-top:14px;border-top:1px solid var(--line);padding-top:12px}
.ai-advanced summary{cursor:pointer;color:var(--muted);font-size:12px}
.ai-provider-note{margin-top:6px}
@media(max-width:760px){.ai-simple-grid{grid-template-columns:1fr}}

/* ===== V5.45 final footer hierarchy ===== */
.footer-v545 .footer-top-row{grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)!important}
.footer-v545 .footer-quick-area{justify-self:start!important}
.footer-v545 .footer-social-area{justify-self:center!important}
.footer-v545 .footer-cert-area{justify-self:end!important}
.footer-v545 .footer-bottom-row{grid-template-columns:minmax(180px,1fr) minmax(0,2fr)!important}
.footer-v545 .footer-brand{justify-self:start!important}
.footer-v545 .footer-copy{justify-self:end!important;text-align:right!important}
.footer-v545 .footer-records{justify-content:flex-end!important}
@media(max-width:980px){
  .footer-v545 .footer-top-row{grid-template-columns:minmax(0,1fr) auto!important}
  .footer-v545 .footer-cert-area{display:none!important}
  .footer-v545 .footer-portals{flex-wrap:nowrap!important;overflow-x:auto;scrollbar-width:none}
  .footer-v545 .footer-portals::-webkit-scrollbar{display:none}
}
@media(max-width:720px){
  .footer-v545 .footer-top-row{grid-template-columns:minmax(0,1fr) auto!important}
  .footer-v545 .footer-bottom-row{grid-template-columns:1fr!important;gap:10px!important}
  .footer-v545 .footer-copy{justify-self:start!important;text-align:left!important}
  .footer-v545 .footer-records{justify-content:flex-start!important}
  .footer-v545 .footer-social-area{display:flex!important}
}


/* ===== V5.46 compact downloads / footer no divider / 3 social icons ===== */
.footer-v545 .footer-top-row{border-bottom:0!important;padding-bottom:12px!important}
.footer-v545 .footer-bottom-row{padding-top:10px!important}
.footer-v545 .footer-social-area{gap:9px;min-width:112px}
.download-grid{gap:12px!important}
.download-grid .download-card{
  grid-template-columns:44px minmax(0,1fr) auto!important;
  align-items:center!important;
  gap:12px!important;
  padding:12px 14px!important;
  min-height:108px!important;
}
.download-grid .download-icon{width:42px;height:42px;border-radius:12px}
.download-grid .download-main p{margin:5px 0!important;line-height:1.5!important;-webkit-line-clamp:1!important}
.download-grid .download-title-row{gap:7px!important}
.download-grid .download-title-row h3{font-size:16px!important;line-height:1.35!important}
.download-grid .download-meta{gap:5px 10px!important;font-size:10px!important}
.download-grid .download-card>.utility-btn{
  grid-column:auto!important;
  justify-self:end!important;
  align-self:center!important;
  min-width:68px!important;
  padding:9px 14px!important;
  white-space:nowrap!important;
}
@media(max-width:720px){
  .download-grid .download-card{grid-template-columns:40px minmax(0,1fr) auto!important;padding:11px 12px!important;gap:10px!important;min-height:94px!important}
  .download-grid .download-icon{width:38px;height:38px}
  .download-grid .download-card>.utility-btn{grid-column:auto!important;width:auto!important;min-width:58px!important;padding:8px 11px!important}
  .download-grid .download-title-row h3{font-size:15px!important}
  .download-grid .download-tag,.download-grid .download-file-ext{display:none}
}
@media(max-width:460px){
  .download-grid .download-icon{display:none}
  .download-grid .download-card{grid-template-columns:minmax(0,1fr) auto!important}
}

/* ===== V5.47 download viewport footer + responsive footer cleanup ===== */
/* Keep short utility pages visually anchored to the viewport bottom instead of leaving a blank tail. */
body.downloads-page-v547{
  min-height:100vh;
  display:flex;
  flex-direction:column;
}
body.downloads-page-v547 > .global-tech-bg,
body.downloads-page-v547 > header,
body.downloads-page-v547 > footer{flex:0 0 auto}
body.downloads-page-v547 > main.utility-page{
  flex:1 0 auto;
  min-height:0!important;
  width:min(calc(100% - 48px),1180px);
}

/* Medium widths: reduce footer pressure before the items begin to collide. */
@media(max-width:1180px){
  .footer-v545 .footer-top-row{
    grid-template-columns:minmax(0,1fr) auto!important;
    column-gap:16px!important;
    row-gap:10px!important;
  }
  .footer-v545 .footer-cert-area{display:none!important}
  .footer-v545 .footer-quick-area{min-width:0!important;overflow:hidden!important}
  .footer-v545 .footer-portals{
    flex-wrap:nowrap!important;
    overflow-x:auto!important;
    scrollbar-width:none;
  }
  .footer-v545 .footer-portals::-webkit-scrollbar{display:none}
  .footer-v545 .footer-bottom-row{
    grid-template-columns:minmax(150px,.72fr) minmax(0,1.7fr)!important;
    gap:18px!important;
  }
  .footer-v545 .footer-copy{min-width:0!important}
  .footer-v545 .footer-records{gap:5px 9px!important}
}

@media(max-width:820px){
  .footer-main.footer-main-integrated.footer-v545{
    width:calc(100% - 32px)!important;
    padding:16px 0 20px!important;
  }
  .footer-v545 .footer-top-row{
    grid-template-columns:minmax(0,1fr) auto!important;
    gap:10px!important;
    padding-bottom:8px!important;
  }
  .footer-v545 .footer-social-area{min-width:auto!important;gap:7px!important}
  .footer-v545 .footer-social-btn{width:30px!important;height:30px!important}
  .footer-v545 .footer-bottom-row{
    grid-template-columns:1fr!important;
    gap:8px!important;
    padding-top:8px!important;
  }
  .footer-v545 .footer-brand,
  .footer-v545 .footer-copy{justify-self:start!important;text-align:left!important}
  .footer-v545 .footer-records{justify-content:flex-start!important}
}

/* Mobile: hide WeChat/Douyin/Weibo completely and let quick links own the top row. */
@media(max-width:720px){
  .footer-v545 .footer-top-row{display:block!important}
  .footer-v545 .footer-social-area{display:none!important}
  .footer-v545 .footer-cert-area{display:none!important}
  .footer-v545 .footer-quick-area{width:100%!important;overflow:hidden!important}
  .footer-v545 .footer-portals{
    width:100%!important;
    justify-content:flex-start!important;
    flex-wrap:nowrap!important;
    overflow-x:auto!important;
    scrollbar-width:none;
  }
  .footer-v545 .footer-portals::-webkit-scrollbar{display:none}
  .footer-v545 .footer-portal-link{flex:0 0 auto!important;padding:6px 9px!important}
  body.downloads-page-v547 > main.utility-page{
    width:calc(100% - 32px)!important;
  }
}

/* ===== V5.48 footer grid-area conflict reset + responsive hardening ===== */
/*
 * V5.42 used grid-area on direct footer children. Since V5.45 introduced
 * nested .footer-top-row/.footer-bottom-row grids, those old named areas
 * can create implicit tracks inside the new grids and push every block to
 * the right at medium widths. Reset them explicitly for the current footer.
 */
.footer-v545 .footer-quick-area,
.footer-v545 .footer-social-area,
.footer-v545 .footer-cert-area,
.footer-v545 .footer-brand,
.footer-v545 .footer-copy{
  grid-area:auto!important;
}
.footer-main.footer-main-integrated.footer-v545{
  margin-left:auto!important;
  margin-right:auto!important;
}
.footer-v545 .footer-top-row{
  grid-template-columns:minmax(0,1fr) auto minmax(0,1fr)!important;
  width:100%!important;
}
.footer-v545 .footer-quick-area{justify-self:start!important;width:auto!important;max-width:100%!important}
.footer-v545 .footer-social-area{justify-self:center!important}
.footer-v545 .footer-cert-area{justify-self:end!important;width:auto!important;max-width:100%!important}
.footer-v545 .footer-bottom-row{
  grid-template-columns:minmax(180px,1fr) minmax(0,2fr)!important;
  width:100%!important;
}
.footer-v545 .footer-brand{justify-self:start!important;text-align:left!important}
.footer-v545 .footer-copy{justify-self:end!important;text-align:right!important;min-width:0!important}
.footer-v545 .footer-records{justify-content:flex-end!important}

/* Medium desktop/tablet: reduce modules instead of compressing them into the right edge. */
@media (min-width:721px) and (max-width:1180px){
  .footer-v545 .footer-top-row{
    grid-template-columns:minmax(0,1fr) auto!important;
    gap:14px!important;
  }
  .footer-v545 .footer-cert-area{display:none!important}
  .footer-v545 .footer-quick-area{
    justify-self:stretch!important;
    width:100%!important;
    min-width:0!important;
    overflow:hidden!important;
  }
  .footer-v545 .footer-portals{
    justify-content:flex-start!important;
    flex-wrap:nowrap!important;
    overflow-x:auto!important;
    scrollbar-width:none!important;
  }
  .footer-v545 .footer-portals::-webkit-scrollbar{display:none!important}
  .footer-v545 .footer-social-area{justify-self:end!important;display:flex!important}
  .footer-v545 .footer-bottom-row{
    grid-template-columns:minmax(150px,.75fr) minmax(0,1.6fr)!important;
    gap:20px!important;
  }
  .footer-v545 .footer-brand{justify-self:start!important}
  .footer-v545 .footer-copy{justify-self:end!important;text-align:right!important}
  .footer-v545 .footer-records{justify-content:flex-end!important}
}

/* Narrow tablet: stack the second line to prevent brand/filing information from crowding. */
@media (min-width:721px) and (max-width:900px){
  .footer-v545 .footer-bottom-row{
    grid-template-columns:1fr!important;
    gap:8px!important;
  }
  .footer-v545 .footer-brand,
  .footer-v545 .footer-copy{
    justify-self:start!important;
    text-align:left!important;
  }
  .footer-v545 .footer-records{justify-content:flex-start!important}
}

/* Mobile: social icons and qualifications stay hidden; all remaining blocks start from the left. */
@media (max-width:720px){
  .footer-v545 .footer-top-row{display:block!important;width:100%!important}
  .footer-v545 .footer-social-area,
  .footer-v545 .footer-cert-area{display:none!important}
  .footer-v545 .footer-quick-area{width:100%!important;justify-self:start!important}
  .footer-v545 .footer-bottom-row{grid-template-columns:1fr!important;width:100%!important}
  .footer-v545 .footer-brand,
  .footer-v545 .footer-copy{justify-self:start!important;text-align:left!important;width:100%!important}
  .footer-v545 .footer-records{justify-content:flex-start!important}
}

/* ===== V5.49 footer medium-width + news single-row hard fix ===== */
/* Keep all desktop/tablet Footer groups visible. Only true mobile hides social/qualifications. */
@media (min-width:721px) and (max-width:1180px){
  .footer-v545 .footer-top-row{
    display:grid!important;
    grid-template-columns:minmax(0,1.35fr) auto minmax(0,1fr)!important;
    align-items:center!important;
    gap:10px!important;
    width:100%!important;
  }
  .footer-v545 .footer-quick-area,
  .footer-v545 .footer-social-area,
  .footer-v545 .footer-cert-area{display:flex!important;min-width:0!important;width:auto!important;max-width:100%!important}
  .footer-v545 .footer-quick-area{justify-self:start!important;overflow:hidden!important}
  .footer-v545 .footer-social-area{justify-self:center!important;gap:6px!important;min-width:auto!important}
  .footer-v545 .footer-cert-area{justify-self:end!important;overflow:hidden!important}
  .footer-v545 .footer-portals,
  .footer-v545 .footer-certificates{display:flex!important;flex-wrap:nowrap!important;gap:5px!important;min-width:0!important;max-width:100%!important;overflow:hidden!important}
  .footer-v545 .footer-portal-link,
  .footer-v545 .certificate-btn{flex:0 1 auto!important;min-width:0!important;padding:5px 7px!important;font-size:9px!important;line-height:1.15!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .footer-v545 .footer-social-btn{width:27px!important;height:27px!important;flex:0 0 27px!important}
  .footer-v545 .footer-bottom-row{
    display:grid!important;
    grid-template-columns:minmax(150px,.8fr) minmax(0,2fr)!important;
    align-items:center!important;
    gap:14px!important;
    width:100%!important;
  }
  .footer-v545 .footer-brand{justify-self:start!important;text-align:left!important;min-width:0!important}
  .footer-v545 .footer-copy{justify-self:end!important;text-align:right!important;min-width:0!important;max-width:100%!important}
  .footer-v545 .footer-records{justify-content:flex-end!important;flex-wrap:wrap!important;gap:4px 8px!important}
}
@media (max-width:720px){
  .footer-v545 .footer-social-area{display:none!important}
  .footer-v545 .footer-cert-area{display:none!important}
}
/* JS sets --news-cols to exactly the same number of rendered items per page. */
@media (min-width:721px){
  #news .news-grid{
    display:grid!important;
    grid-template-columns:repeat(var(--news-cols,3),minmax(0,1fr))!important;
    grid-auto-flow:row!important;
  }
}

/* ===== V5.50 global viewport flex layout / footer bottom anchoring ===== */
/*
 * All public pages now use the same viewport-flex shell. Short pages expand
 * their <main> area to the viewport, while long pages keep their natural
 * document height. The footer is therefore always the final visual block:
 * no blank page/tail can appear after it.
 */
html{min-height:100%;}
body{
  min-height:100vh;
  min-height:100dvh;
  display:flex;
  flex-direction:column;
}
body > .global-tech-bg{flex:none;}
body > header{flex:0 0 auto;}
body > main{
  flex:1 0 auto;
  min-height:0;
}
body > footer{
  flex:0 0 auto;
  margin-top:auto;
}

/* Utility/detail/member/course pages previously carried their own viewport
 * approximations. Let the common body/main shell own vertical sizing now. */
body > main.utility-page,
body > main.jobs-page,
body > main.seo-page,
body > main.course-minimal-main{
  min-height:0!important;
}

/* Keep the download page compatible with the old V5.47 class while using
 * the same global rule as every other page. */
body.downloads-page-v547{
  min-height:100vh!important;
  min-height:100dvh!important;
  display:flex!important;
  flex-direction:column!important;
}
body.downloads-page-v547 > main.utility-page{
  flex:1 0 auto!important;
  min-height:0!important;
}


/* ===== V6.0.1 unified account UI ===== */
.auth-page-wrap{width:min(100% - 32px,520px);margin-inline:auto;padding:22px 0}
.auth-card{width:100%;box-sizing:border-box;padding:30px;border-radius:24px;border:1px solid rgba(153,210,236,.18);background:linear-gradient(145deg,rgba(18,29,42,.72),rgba(8,15,25,.52));box-shadow:inset 0 1px 0 rgba(255,255,255,.08),0 24px 70px rgba(0,0,0,.22);backdrop-filter:blur(24px) saturate(145%);-webkit-backdrop-filter:blur(24px) saturate(145%);position:relative;overflow:hidden}
.auth-card:before{content:"";position:absolute;inset:0;pointer-events:none;background:linear-gradient(115deg,transparent 12%,rgba(104,218,255,.065) 45%,transparent 68%);transform:translateX(-70%);animation:authGlassSweep 8s ease-in-out infinite}
@keyframes authGlassSweep{0%,55%{transform:translateX(-75%)}75%,100%{transform:translateX(80%)}}
.auth-card-head{position:relative;z-index:1;margin-bottom:18px}.auth-card-head h2{margin:7px 0 7px;font-size:30px;line-height:1.15;letter-spacing:-.02em}.auth-card-head p{margin:0;color:var(--muted);font-size:13px;line-height:1.7}
.auth-tabs{position:relative;z-index:1;margin:16px 0 4px;padding:4px;border-radius:14px;background:rgba(255,255,255,.035);border:1px solid rgba(255,255,255,.07)}
.auth-tabs a{border:0!important;background:transparent!important;border-radius:10px!important;padding:9px 12px!important;transition:.22s ease}.auth-tabs a.active{background:linear-gradient(135deg,rgba(36,159,218,.78),rgba(55,191,236,.52))!important;box-shadow:0 8px 24px rgba(21,149,211,.15);color:#fff!important}
.auth-form{position:relative;z-index:1;gap:14px;margin-top:18px}.auth-form label{gap:8px}.auth-form input{height:46px;border-radius:13px;background:rgba(3,9,15,.24);border-color:rgba(160,208,231,.14);transition:border-color .2s ease,box-shadow .2s ease,background .2s ease}.auth-form input:focus{border-color:rgba(64,192,246,.62);box-shadow:0 0 0 3px rgba(56,181,237,.10);background:rgba(4,12,20,.36)}
.auth-label-row{display:flex!important;align-items:center;justify-content:space-between;gap:14px}.auth-label-row>a{font-size:12px;color:var(--primary);text-decoration:none}.auth-label-row>a:hover{text-decoration:underline}
.auth-submit{width:100%;height:44px;margin-top:2px;border-radius:13px!important}.auth-form-foot{display:flex;align-items:center;justify-content:center;gap:7px;min-height:20px;color:var(--muted);font-size:12px}.auth-form-foot a{color:var(--primary);text-decoration:none}.auth-form-foot a:hover{text-decoration:underline}
.auth-actions{position:relative;z-index:1;margin-top:22px;display:flex;flex-wrap:wrap;gap:10px}.account-status-grid{position:relative;z-index:1;display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:18px}.account-status-grid>div{padding:13px;border:1px solid rgba(153,210,236,.12);border-radius:14px;background:rgba(255,255,255,.025)}.account-status-grid span{display:block;font-size:10px;color:var(--muted);margin-bottom:5px}.account-status-grid b{font-size:13px}
html[data-theme="light"] .auth-card{background:linear-gradient(145deg,rgba(255,255,255,.82),rgba(242,249,252,.66));border-color:rgba(35,91,120,.13);box-shadow:inset 0 1px 0 rgba(255,255,255,.96),0 24px 70px rgba(52,88,105,.10)}html[data-theme="light"] .auth-form input{background:rgba(255,255,255,.64);border-color:rgba(35,91,120,.14)}html[data-theme="light"] .auth-tabs{background:rgba(40,90,115,.035);border-color:rgba(35,91,120,.09)}
@media(max-width:720px){.auth-page-wrap{width:calc(100% - 28px);padding:14px 0}.auth-card{padding:22px;border-radius:20px}.auth-card-head h2{font-size:26px}.account-status-grid{grid-template-columns:1fr}.auth-actions .utility-btn{flex:1 1 auto;text-align:center}}

/* V7.7 unified account center */
.member-account-active .course-login-center{width:min(100%,980px)}
.member-account-active .auth-card{padding:34px}
.account-profile-head{position:relative;z-index:1;display:flex;align-items:center;gap:16px;margin:6px 0 20px}.account-profile-head img{width:76px;height:76px;border-radius:50%;object-fit:cover;border:2px solid rgba(85,190,238,.55);background:var(--panel);box-shadow:0 12px 30px rgba(0,0,0,.18)}.account-profile-head h3{margin:0 0 5px;font-size:22px}.account-profile-head p{margin:0;color:var(--muted)}
.member-account-active .account-status-grid{grid-template-columns:repeat(4,1fr)}
.account-profile-form{position:relative;z-index:1;margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.profile-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.profile-avatar-field{grid-column:1/-1}.profile-avatar-field small,.auth-privacy-note{display:block;margin-top:6px;color:var(--muted);font-size:11px;line-height:1.6}.register-profile-form{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:13px}.register-profile-form .auth-submit,.register-profile-form .auth-privacy-note{grid-column:1/-1}.register-profile-form .auth-privacy-note{margin:0}
html[data-theme="light"] .account-profile-head img{border-color:rgba(18,139,199,.45);box-shadow:0 12px 30px rgba(44,96,120,.12)}
@media(max-width:720px){.member-account-active .auth-card{padding:21px}.member-account-active .account-status-grid,.profile-form-grid,.register-profile-form{grid-template-columns:1fr}.profile-avatar-field,.register-profile-form .auth-submit,.register-profile-form .auth-privacy-note{grid-column:auto}.account-profile-head img{width:64px;height:64px}}

/* V7.7 account center interaction and compact actions */
.member-account-active .account-profile-form{margin-top:0;padding-top:0;border-top:0}
.account-avatar-picker{position:relative;display:block;flex:0 0 auto;width:76px;height:76px;border-radius:50%;cursor:pointer;overflow:hidden}
.account-avatar-picker img{display:block;width:100%!important;height:100%!important}
.account-avatar-picker>span{position:absolute;inset:auto 0 0;padding:5px 2px;background:rgba(2,10,18,.76);color:#fff;text-align:center;font-size:10px;line-height:1;transform:translateY(100%);transition:transform .2s ease}
.account-avatar-picker:hover>span,.account-avatar-picker:focus-within>span{transform:translateY(0)}
.account-avatar-picker input{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}
.account-name-block{min-width:0;flex:1}.account-name-block p{margin:5px 0 0!important;font-size:12px}
.auth-form .account-inline-name{display:block;width:min(100%,460px);height:auto;padding:2px 0;border:0!important;border-radius:0;background:transparent!important;box-shadow:none!important;color:var(--text);font-size:22px;font-weight:750;line-height:1.3;outline:none}
.auth-form .account-inline-name:hover,.auth-form .account-inline-name:focus{color:var(--primary);box-shadow:0 1px 0 var(--primary)!important}
.account-profile-form input[readonly]{cursor:not-allowed;opacity:.72;background:rgba(127,127,127,.06)}
.profile-admin-note{margin:10px 0 0;color:var(--muted);font-size:11px;line-height:1.6}
.account-action-row{position:relative;z-index:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-top:18px}
.account-action-row.account-action-row-five{grid-template-columns:repeat(5,minmax(0,1fr))}
.account-action-row.account-action-row-three{grid-template-columns:repeat(3,minmax(0,1fr))}
.account-action-row .utility-btn{display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;min-height:42px;margin:0;text-align:center;white-space:nowrap}
html[data-theme="light"] .account-avatar-picker>span{background:rgba(9,33,47,.78)}
@media(max-width:720px){.account-avatar-picker{width:64px;height:64px}.account-action-row,.account-action-row.account-action-row-three,.account-action-row.account-action-row-five{grid-template-columns:repeat(2,minmax(0,1fr))}.auth-form .account-inline-name{font-size:20px}}

/* V6.1 Resource Library */
.download-library-v61{display:flex;flex-direction:column;gap:22px}.download-notice{padding:14px 18px;border-radius:16px}.download-searchbar{padding:16px;display:flex;flex-direction:column;gap:12px}.download-searchbar>input{width:100%;min-height:46px;border-radius:14px;border:1px solid var(--line);background:var(--glass);color:var(--text);padding:0 15px;outline:none}.download-category-tabs{display:flex;gap:8px;flex-wrap:wrap}.download-category-tabs button{border:1px solid var(--line);background:transparent;color:var(--text);border-radius:999px;padding:8px 13px;cursor:pointer}.download-category-tabs button.active{background:var(--accent);color:#fff;border-color:transparent}.download-section-head{display:flex;align-items:end;justify-content:space-between;gap:16px}.download-section-head h2{margin:5px 0 0}.download-section-head>span{font-size:13px;color:var(--muted)}.collection-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.collection-card{overflow:hidden;border-radius:20px;display:grid;grid-template-columns:160px minmax(0,1fr);min-height:180px}.collection-cover{min-height:180px;background:rgba(127,127,127,.08);overflow:hidden}.collection-cover img{width:100%;height:100%;object-fit:cover}.collection-cover-placeholder{display:flex;align-items:center;justify-content:center}.collection-cover-placeholder span{font-size:11px;letter-spacing:.18em;color:var(--muted)}.collection-body{padding:18px;display:flex;flex-direction:column;align-items:flex-start}.collection-body p{color:var(--muted);line-height:1.7;margin:8px 0 12px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.collection-body .utility-btn{margin-top:auto}.download-access-tag{display:inline-flex;align-items:center;white-space:nowrap;font-size:11px;line-height:1;padding:6px 8px;border-radius:999px;border:1px solid var(--line)}.download-access-tag.access-public{background:rgba(80,180,130,.09)}.download-access-tag.access-login{background:rgba(90,135,255,.10)}.download-access-tag.access-employee{background:rgba(170,110,255,.11)}.collection-hero-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:14px}.collection-hero-meta>span:not(.download-access-tag){font-size:13px;color:var(--muted)}.download-library-v61 .download-card{align-items:center}.download-library-v61 [hidden]{display:none!important}.download-library-v61 .hidden{display:none!important}
@media(max-width:900px){.collection-grid{grid-template-columns:1fr}.collection-card{grid-template-columns:130px minmax(0,1fr)}}
@media(max-width:620px){.download-searchbar{padding:12px}.download-category-tabs{flex-wrap:nowrap;overflow:auto;padding-bottom:2px}.download-category-tabs button{flex:0 0 auto}.collection-card{grid-template-columns:1fr}.collection-cover{height:145px;min-height:145px}.download-section-head{align-items:flex-start;flex-direction:column;gap:4px}.download-library-v61 .download-card{grid-template-columns:44px minmax(0,1fr);gap:12px}.download-library-v61 .download-card>.utility-btn{grid-column:2;width:100%;text-align:center}}

/* ===== V6.1.2 download center frontend layout repair ===== */
.download-library-page-v612 > main.utility-page{
  display:block!important;
  width:min(calc(100% - 48px),1180px)!important;
  margin:0 auto!important;
  padding:108px 0 72px!important;
  box-sizing:border-box!important;
}
.download-library-page-v612 .utility-hero,
.download-library-page-v612 .utility-content{
  display:block!important;
  width:100%!important;
  max-width:none!important;
  box-sizing:border-box!important;
  grid-column:1/-1!important;
}
.download-library-page-v612 .utility-hero{
  padding:34px 0 28px!important;
}
.download-library-page-v612 .utility-hero h1{
  font-size:clamp(34px,4.6vw,58px)!important;
  margin:8px 0 12px!important;
}
.download-library-page-v612 .utility-content{
  padding-top:28px!important;
}
.download-library-page-v612 .download-library-v61{
  width:100%!important;
  gap:28px!important;
}
.download-library-page-v612 .download-searchbar{
  width:100%!important;
  box-sizing:border-box!important;
  padding:15px!important;
}
.download-library-page-v612 .download-section-head{
  width:100%!important;
  margin:0!important;
}
.download-library-page-v612 .collection-grid{
  width:100%!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
}
.download-library-page-v612 .download-grid{
  width:100%!important;
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:12px!important;
}
.download-library-page-v612 .download-grid .download-card{
  width:100%!important;
  box-sizing:border-box!important;
  grid-template-columns:42px minmax(0,1fr) auto!important;
  min-height:92px!important;
  padding:12px 13px!important;
  gap:11px!important;
  align-items:center!important;
}
.download-library-page-v612 .download-grid .download-icon{
  width:40px!important;
  height:40px!important;
}
.download-library-page-v612 .download-grid .download-card>.utility-btn{
  grid-column:auto!important;
  width:auto!important;
  min-width:72px!important;
  padding:8px 13px!important;
  white-space:nowrap!important;
}
.download-library-page-v612 .download-grid .download-main p{
  margin:5px 0!important;
  line-height:1.5!important;
  -webkit-line-clamp:1!important;
}
.download-library-page-v612 .download-grid .download-title-row h3{
  font-size:15px!important;
}
.download-library-page-v612 .download-access-tag{
  font-size:10px!important;
  padding:5px 7px!important;
}
@media(max-width:900px){
  .download-library-page-v612 .collection-grid,
  .download-library-page-v612 .download-grid{grid-template-columns:1fr!important}
}
@media(max-width:720px){
  .download-library-page-v612 > main.utility-page{
    width:calc(100% - 32px)!important;
    padding:82px 0 52px!important;
  }
  .download-library-page-v612 .utility-hero{padding:26px 0 22px!important}
  .download-library-page-v612 .utility-content{padding-top:22px!important}
  .download-library-page-v612 .download-library-v61{gap:22px!important}
  .download-library-page-v612 .download-grid .download-card{
    grid-template-columns:40px minmax(0,1fr)!important;
    align-items:start!important;
  }
  .download-library-page-v612 .download-grid .download-card>.utility-btn{
    grid-column:2!important;
    width:100%!important;
    margin-top:2px!important;
  }
}

/* ===== V6.1.4.1 download center collection/resource overlap repair ===== */
.download-library-page-v612 .download-library-v61{
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  gap:28px!important;
  min-width:0!important;
}
.download-library-page-v612 .download-block{
  position:relative!important;
  display:flex!important;
  flex-direction:column!important;
  width:100%!important;
  min-width:0!important;
  height:auto!important;
  min-height:0!important;
  margin:0!important;
  gap:14px!important;
  clear:both!important;
  isolation:isolate!important;
}
.download-library-page-v612 .download-block > .download-section-head,
.download-library-page-v612 .download-block > .collection-grid,
.download-library-page-v612 .download-block > .download-grid{
  position:relative!important;
  inset:auto!important;
  float:none!important;
  transform:none!important;
  margin:0!important;
}
.download-library-page-v612 .collection-grid,
.download-library-page-v612 .download-grid{
  align-items:stretch!important;
  align-content:start!important;
  grid-auto-flow:row!important;
  grid-auto-rows:auto!important;
  overflow:visible!important;
}
.download-library-page-v612 .collection-card,
.download-library-page-v612 .download-card{
  position:relative!important;
  inset:auto!important;
  float:none!important;
  transform:none!important;
  margin:0!important;
  max-width:100%!important;
  height:auto!important;
}
.download-library-page-v612 .collection-card{
  align-self:stretch!important;
}
.download-library-page-v612 .collection-cover{
  position:relative!important;
  height:auto!important;
  min-height:180px!important;
}
.download-library-page-v612 .collection-cover img{
  display:block!important;
  position:absolute!important;
  inset:0!important;
  width:100%!important;
  height:100%!important;
}
@media(max-width:900px){
  .download-library-page-v612 .download-block{gap:12px!important}
}
@media(max-width:620px){
  .download-library-page-v612 .collection-cover{height:145px!important;min-height:145px!important}
}

/* V6.2.2.7 download center mobile compact layout */
@media(max-width:720px){
  .download-library-page-v612 > main.utility-page{width:calc(100% - 24px)!important;padding:76px 0 40px!important}
  .download-library-page-v612 .utility-hero{padding:18px 0 14px!important}.download-library-page-v612 .utility-hero h1{font-size:30px!important;margin:5px 0 8px!important}.download-library-page-v612 .utility-hero p{font-size:12px!important;line-height:1.55!important}
  .download-library-page-v612 .utility-content{padding-top:16px!important}.download-library-page-v612 .download-library-v61{gap:18px!important}
  .download-library-page-v612 .download-searchbar{padding:10px!important;border-radius:14px!important}.download-library-page-v612 .download-searchbar>input{min-height:40px!important;font-size:12px!important}.download-library-page-v612 .download-category-tabs{gap:6px!important}.download-library-page-v612 .download-category-tabs button{padding:7px 11px!important;font-size:11px!important}
  .download-library-page-v612 .download-section-head{gap:2px!important}.download-library-page-v612 .download-section-head .eyebrow{font-size:10px!important}.download-library-page-v612 .download-section-head h2{font-size:25px!important;margin:3px 0 0!important}.download-library-page-v612 .download-section-head>span{font-size:11px!important}
  .download-library-page-v612 .collection-grid{gap:10px!important}.download-library-page-v612 .collection-card{display:grid!important;grid-template-columns:96px minmax(0,1fr)!important;min-height:112px!important;border-radius:16px!important;overflow:hidden!important}.download-library-page-v612 .collection-cover{position:relative!important;inset:auto!important;width:96px!important;height:112px!important;min-height:112px!important;transform:none!important;float:none!important}.download-library-page-v612 .collection-body{padding:11px 12px!important;min-width:0!important}.download-library-page-v612 .collection-body .download-title-row{gap:6px!important;align-items:flex-start!important}.download-library-page-v612 .collection-body h3{font-size:14px!important;line-height:1.35!important;margin:0!important;word-break:normal!important;overflow-wrap:anywhere!important}.download-library-page-v612 .collection-body p{font-size:11px!important;line-height:1.45!important;margin:5px 0 7px!important;-webkit-line-clamp:1!important}.download-library-page-v612 .collection-body .download-meta{gap:6px!important;font-size:10px!important}.download-library-page-v612 .collection-body .utility-btn{min-height:32px!important;padding:7px 10px!important;font-size:11px!important;border-radius:10px!important;margin-top:8px!important;width:auto!important}
  .download-library-page-v612 .download-grid{gap:9px!important}.download-library-page-v612 .download-grid .download-card{display:grid!important;grid-template-columns:36px minmax(0,1fr) auto!important;grid-template-rows:auto!important;min-height:76px!important;padding:10px!important;gap:8px!important;border-radius:15px!important;align-items:center!important;overflow:hidden!important}.download-library-page-v612 .download-grid .download-icon{width:34px!important;height:34px!important;font-size:9px!important;grid-row:1!important}.download-library-page-v612 .download-grid .download-main{min-width:0!important}.download-library-page-v612 .download-grid .download-title-row{display:flex!important;align-items:flex-start!important;gap:6px!important;min-width:0!important}.download-library-page-v612 .download-grid .download-title-row h3{font-size:13px!important;line-height:1.35!important;margin:0!important;min-width:0!important;word-break:normal!important;overflow-wrap:anywhere!important;display:-webkit-box!important;-webkit-line-clamp:2!important;-webkit-box-orient:vertical!important;overflow:hidden!important}.download-library-page-v612 .download-grid .download-title-row .download-access-tag{flex:0 0 auto!important;font-size:9px!important;padding:4px 6px!important}.download-library-page-v612 .download-grid .download-main p{font-size:10px!important;line-height:1.35!important;margin:4px 0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;display:block!important}.download-library-page-v612 .download-grid .download-meta{font-size:9px!important;gap:5px!important;flex-wrap:wrap!important}.download-library-page-v612 .download-grid .download-card>.utility-btn{grid-column:3!important;grid-row:1!important;width:auto!important;min-width:58px!important;min-height:34px!important;padding:7px 10px!important;margin:0!important;font-size:11px!important;border-radius:10px!important;white-space:nowrap!important}
}
@media(max-width:430px){
  .download-library-page-v612 .collection-card{grid-template-columns:82px minmax(0,1fr)!important;min-height:104px!important}.download-library-page-v612 .collection-cover{width:82px!important;height:104px!important;min-height:104px!important}.download-library-page-v612 .collection-body{padding:10px!important}.download-library-page-v612 .collection-body h3{font-size:13px!important}.download-library-page-v612 .collection-body .download-access-tag{font-size:8px!important;padding:4px 5px!important}.download-library-page-v612 .download-grid .download-card{grid-template-columns:minmax(0,1fr) auto!important}.download-library-page-v612 .download-grid .download-icon{display:none!important}.download-library-page-v612 .download-grid .download-card>.utility-btn{grid-column:2!important}.download-library-page-v612 .download-grid .download-title-row{padding-right:2px!important}
}

/* V7.8: narrow screens give resource text its own full-width row. */
@media(max-width:620px){
  .download-library-page-v612 .download-grid .download-card{
    grid-template-columns:minmax(0,1fr)!important;
    grid-template-rows:auto auto!important;
    align-items:start!important;
    gap:11px!important;
    min-height:0!important;
    padding:14px!important;
    overflow:visible!important;
  }
  .download-library-page-v612 .download-grid .download-icon{display:none!important}
  .download-library-page-v612 .download-grid .download-main{
    grid-column:1!important;
    grid-row:1!important;
    width:100%!important;
    min-width:0!important;
  }
  .download-library-page-v612 .download-grid .download-title-row{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    align-items:start!important;
    gap:8px!important;
    padding:0!important;
  }
  .download-library-page-v612 .download-grid .download-title-row h3{
    display:block!important;
    overflow:visible!important;
    font-size:15px!important;
    line-height:1.45!important;
    overflow-wrap:anywhere!important;
    word-break:break-word!important;
  }
  .download-library-page-v612 .download-grid .download-title-row .download-access-tag{
    justify-self:end!important;
    font-size:9px!important;
    padding:5px 7px!important;
  }
  .download-library-page-v612 .download-grid .download-main p{
    display:-webkit-box!important;
    white-space:normal!important;
    -webkit-line-clamp:2!important;
    -webkit-box-orient:vertical!important;
    overflow:hidden!important;
    font-size:11px!important;
    line-height:1.55!important;
    margin:7px 0!important;
  }
  .download-library-page-v612 .download-grid .download-meta{
    display:flex!important;
    gap:6px 12px!important;
    font-size:10px!important;
    line-height:1.45!important;
  }
  .download-library-page-v612 .download-grid .download-meta span{
    white-space:nowrap!important;
    word-break:normal!important;
  }
  .download-library-page-v612 .download-grid .download-card>.utility-btn{
    grid-column:1!important;
    grid-row:2!important;
    width:100%!important;
    min-height:40px!important;
    margin:0!important;
    justify-self:stretch!important;
    text-align:center!important;
  }
}

/* V6.4 final light-theme override (kept last so legacy theme blocks cannot win). */
html[data-theme="light"] .glass-panel,
html[data-theme="light"] .service-card,html[data-theme="light"] .case-card,html[data-theme="light"] .news-card,
html[data-theme="light"] .stat-card,html[data-theme="light"] .about-block,html[data-theme="light"] .contact-item,
html[data-theme="light"] .course-login-card,html[data-theme="light"] .download-card,html[data-theme="light"] .collection-card,
html[data-theme="light"] .report-side,html[data-theme="light"] .report-form-card,html[data-theme="light"] .job-card,
html[data-theme="light"] .job-row,html[data-theme="light"] .jobs-overview,html[data-theme="light"] .jobs-apply-note,
html[data-theme="light"] .footer-portal-link,html[data-theme="light"] .certificate-btn{background:#fff!important;background-image:none!important}
html[data-theme="light"] #modal-overlay .content-modal,html[data-theme="light"] #modal-body,
html[data-theme="light"] #modal-body .detail-view,html[data-theme="light"] #modal-body .detail-head,
html[data-theme="light"] #modal-body .detail-body,html[data-theme="light"] .certificate-modal,
html[data-theme="light"] .certificate-view,html[data-theme="light"] #video-modal .video-box{background:#fff!important;background-image:none!important;color:#142532!important}
html[data-theme="light"] #modal-body p,html[data-theme="light"] #modal-body .news-detail-meta,
html[data-theme="light"] #modal-body .detail-kicker,html[data-theme="light"] .certificate-view p{color:#304653!important;opacity:1!important}

/* V6.4.1: Banner navigation keeps one contrast-safe style in both themes. */
.hero-controls>button,
html[data-theme="light"] .hero-controls>button{
  background:rgba(5,18,28,.46)!important;
  background-image:none!important;
  border-color:rgba(255,255,255,.46)!important;
  color:#fff!important;
  box-shadow:0 6px 18px rgba(0,0,0,.22),inset 0 1px 0 rgba(255,255,255,.18)!important;
}
.hero-controls>button:hover,
html[data-theme="light"] .hero-controls>button:hover{background:rgba(5,18,28,.66)!important}

/* ===== V7.3.2 unified quick links on every public page ===== */
.footer-portals-unified,
.footer-v545 .footer-portals-unified{
  display:grid!important;
  grid-template-columns:repeat(4,minmax(0,1fr))!important;
  gap:8px!important;
  width:100%!important;
  overflow:visible!important;
}
.footer-portals-unified .footer-portal-link,
.footer-v545 .footer-portals-unified .footer-portal-link{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  min-width:0!important;
  min-height:36px!important;
  padding:8px 10px!important;
  border-radius:10px!important;
  overflow:hidden!important;
}
.footer-portals-unified .footer-portal-link strong{font-size:10px!important;overflow:hidden!important;text-overflow:ellipsis!important}
html[data-theme="light"] #main-nav a:hover,
html[data-theme="light"] #main-nav a.active{color:#064e72!important;background:#dff3fc!important;box-shadow:inset 0 0 0 1px rgba(22,143,198,.3),0 5px 14px rgba(22,105,145,.12)!important}
html[data-theme="light"] .cases-filter button:hover:not(.active),
html[data-theme="light"] .download-tabs button:hover:not(.active),
html[data-theme="light"] .news-pagination button:hover:not(:disabled),
html[data-theme="light"] .smart-pagination button:hover:not(:disabled),
html[data-theme="light"] .footer-portals-unified .footer-portal-link:hover{color:#075a83!important;background:#dff3fc!important;background-image:none!important;border-color:#48a8d2!important;box-shadow:0 8px 20px rgba(20,111,154,.15)!important}
html[data-theme="light"] .cases-filter button.active,
html[data-theme="light"] .download-tabs button.active,
html[data-theme="light"] .news-pagination button.active,
html[data-theme="light"] .smart-pagination button.active{color:#fff!important;background:#168fc6!important;background-image:none!important;border-color:#0e779f!important;box-shadow:0 7px 18px rgba(15,119,159,.24)!important}
html[data-theme="light"] .service-card:hover,
html[data-theme="light"] .case-card:hover,
html[data-theme="light"] .news-card:hover,
html[data-theme="light"] .stat-card:hover,
html[data-theme="light"] .about-block:hover,
html[data-theme="light"] .contact-item:hover{background:#fff!important;background-image:none!important;border-color:#4eacd5!important;box-shadow:0 14px 30px rgba(20,111,154,.17)!important}
html[data-theme="light"] .case-card:hover .case-hover-detail{background:rgba(218,241,251,.9)!important}
html[data-theme="light"] .case-card:hover .case-hover-detail span{color:#064e72!important;background:#fff!important;border-color:#48a8d2!important;box-shadow:0 6px 16px rgba(20,111,154,.14)!important}
@media(max-width:720px){.footer-portals-unified,.footer-v545 .footer-portals-unified{grid-template-columns:repeat(2,minmax(0,1fr))!important;overflow:visible!important}.footer-portals-unified .footer-portal-link,.footer-v545 .footer-portals-unified .footer-portal-link{min-height:38px!important}}

/* ===== V7.3.3 public-site light interaction parity ===== */
html[data-theme="light"] .member-entry:hover,
html[data-theme="light"] .theme-toggle:hover,
html[data-theme="light"] .nav-toggle:hover,
html[data-theme="light"] .utility-btn:hover:not(.primary),
html[data-theme="light"] .jobs-back:hover,
html[data-theme="light"] .jobs-secondary:hover,
html[data-theme="light"] .job-actions a:hover,
html[data-theme="light"] .certificate-btn:hover,
html[data-theme="light"] .footer-social-btn:hover,
html[data-theme="light"] .back-to-top:hover,
html[data-theme="light"] .seo-page .back:hover,
html[data-theme="light"] .seo-page .external:hover,
html[data-theme="light"] .course-back:hover,
html[data-theme="light"] .member-tabs a:hover:not(.active),
html[data-theme="light"] .auth-tabs a:hover:not(.active),
html[data-theme="light"] .download-category-tabs button:hover:not(.active){
  color:#075a83!important;
  background:#dff3fc!important;
  background-image:none!important;
  border-color:#48a8d2!important;
  box-shadow:0 8px 20px rgba(20,111,154,.15)!important;
}
html[data-theme="light"] .utility-btn.primary:hover,
html[data-theme="light"] .jobs-primary:hover,
html[data-theme="light"] .member-tabs a.active,
html[data-theme="light"] .auth-tabs a.active,
html[data-theme="light"] .download-category-tabs button.active{
  color:#fff!important;
  background:#168fc6!important;
  background-image:none!important;
  border-color:#0e779f!important;
  box-shadow:0 7px 18px rgba(15,119,159,.24)!important;
}
html[data-theme="light"] .download-card:hover,
html[data-theme="light"] .collection-card:hover,
html[data-theme="light"] .course-login-card:hover,
html[data-theme="light"] .report-side:hover,
html[data-theme="light"] .report-form-card:hover,
html[data-theme="light"] .text-notice:hover,
html[data-theme="light"] .auth-card:hover,
html[data-theme="light"] .account-status-grid>div:hover,
html[data-theme="light"] .jobs-overview:hover,
html[data-theme="light"] .job-row:hover,
html[data-theme="light"] .jobs-apply-note:hover,
html[data-theme="light"] .job-card:hover,
html[data-theme="light"] .job-facts>div:hover{
  background:#fff!important;
  background-image:none!important;
  border-color:#4eacd5!important;
  box-shadow:0 14px 30px rgba(20,111,154,.17)!important;
}
html[data-theme="light"] .public-form input:hover,
html[data-theme="light"] .public-form textarea:hover,
html[data-theme="light"] .public-form select:hover,
html[data-theme="light"] .jobs-filter input:hover,
html[data-theme="light"] .jobs-filter select:hover,
html[data-theme="light"] .download-searchbar>input:hover{border-color:#75b9d8!important}
html[data-theme="light"] .case-search:hover{border-color:#75b9d8!important}
html[data-theme="light"] .public-form input:focus,
html[data-theme="light"] .public-form textarea:focus,
html[data-theme="light"] .public-form select:focus,
html[data-theme="light"] .jobs-filter input:focus,
html[data-theme="light"] .jobs-filter select:focus,
html[data-theme="light"] .download-searchbar>input:focus,
html[data-theme="light"] .case-search:focus-within{outline:0!important;border-color:#168fc6!important;box-shadow:0 0 0 3px rgba(22,143,198,.16)!important}
html[data-theme="light"] a:focus-visible,
html[data-theme="light"] button:focus-visible{outline:2px solid #168fc6!important;outline-offset:2px}

/* ===== V7.7 mobile Banner/header seamless layer =====
   The fixed header must reveal the same hero layer beneath it. Repainting the
   active image inside a 62px header changes cover-cropping and creates a seam. */
@media(max-width:720px){
  #header:not(.scrolled),
  header#header:not(.scrolled){
    background:transparent!important;
    background-color:transparent!important;
    background-image:none!important;
    border:0!important;
    box-shadow:none!important;
    backdrop-filter:none!important;
    -webkit-backdrop-filter:none!important;
  }
  #header:not(.scrolled) .nav-shell,
  header#header:not(.scrolled) .nav-shell{
    background:transparent!important;
    background-image:none!important;
    box-shadow:none!important;
  }
  #banner.hero,
  #banner .hero-slide,
  #banner .hero-bg{top:0!important}
  #banner .hero-bg{
    inset:0!important;
    background-size:cover!important;
    background-position:center top!important;
    background-repeat:no-repeat!important;
  }
}
