/* ============================================================
   江禾设计学院 · 共享设计系统
   白底框架：页面底色 #FFFFFF 起 / 浅灰面 --surface·--panel-2 / 正文墨色 #161B22
   / 顶栏单独深色 --header-bg:#0B0E14 + 白 logo / 强调金 #C9A45C（金底配金墨色 --gold-ink）
   / 圆角 4·8·12·16·20·23·26；左右留白 120px
   ============================================================ */
:root{
  /* 白底框架：页面底色改白，顶栏单独用 --header-bg 保持深色 */
  --bg:#FFFFFF;
  --surface:#F4F6F9;
  --panel:#FFFFFF;
  --panel-2:#EDF0F5;
  --gold:#C9A45C;
  --text:#161B22;
  --muted:#616B78;
  --muted-2:#8B939F;
  --line:rgba(22,27,34,.10);
  --header-bg:#0B0E14;
  /* 金色块上的墨色文字（白底下金底配深字才有对比） */
  --gold-ink:#0B0E14;

  --radius-xs:4px;
  --radius:8px;
  --radius-md:12px;
  --radius-lg:16px;
  --radius-pill:20px;
  --radius-btn:23px;
  --radius-btn-lg:26px;

  --gutter:120px;
  --header-h:88px;

  --font:"Noto Sans SC","PingFang SC","Microsoft YaHei",system-ui,-apple-system,sans-serif;

  --ease:cubic-bezier(.22,.61,.36,1);
}

*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{
  font-family:var(--font);
  background:var(--bg);
  color:var(--text);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{display:block;max-width:100%;}
input,button,textarea{font-family:inherit;}
a{color:inherit;text-decoration:none;}
button{border:none;cursor:pointer;}

/* ---------------- 顶部导航 ---------------- */
.header{
  position:sticky;top:0;z-index:60;
  height:var(--header-h);
  display:flex;align-items:center;justify-content:space-between;
  padding:0 var(--gutter);
  background:var(--header-bg);
  border-bottom:1px solid rgba(255,255,255,.08);
  transition:background .25s ease,backdrop-filter .25s ease;
}
/* logo 转白（原为深色） */
.brand__mark{filter:brightness(0) invert(1);}
.header.is-scrolled{background:rgba(11,14,20,.92);backdrop-filter:blur(12px);}

.brand{display:flex;align-items:center;gap:14px;}
.brand__mark{width:46px;height:52px;border-radius:var(--radius-xs);object-fit:cover;flex:none;}
.brand__text{display:flex;flex-direction:column;gap:2px;}
/* 顶栏为深色（--header-bg），栏内文字一律白/浅，避免白底令牌下的深色字不可读 */
.brand__cn{font-size:20px;font-weight:700;color:#FFFFFF;line-height:1.2;}
.brand__en{font-size:10px;font-weight:400;color:rgba(255,255,255,.55);letter-spacing:2px;line-height:1.4;}

/* 导航：整体收拢到右侧成一簇，项间距缩小；
   padding-right:30px 是为了让最右侧的「联系」仍停在原来的位置（看的见的位移为 0） */
.nav{flex:1;display:flex;align-items:center;justify-content:flex-end;gap:20px;padding-right:30px;}
.nav__item{
  flex:none;padding:0 10px;
  display:flex;align-items:center;justify-content:center;
}
.nav__cn{font-size:16px;font-weight:500;color:rgba(255,255,255,.82);line-height:1.2;transition:color .2s ease;}
.nav__item:hover .nav__cn{color:#FFFFFF;}
.nav__item.is-active .nav__cn{color:var(--gold);}

/* ---------------- 按钮 ---------------- */
.btn{display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;}
.btn--gold{height:46px;padding:0 28px;border-radius:var(--radius-btn);background:var(--gold);color:var(--gold-ink);font-size:15px;font-weight:700;line-height:1;}
.btn--gold-lg{height:52px;padding:0 34px;border-radius:var(--radius-btn-lg);font-size:16px;font-weight:700;line-height:1;}
.btn--ghost{height:52px;padding:0 34px;border-radius:var(--radius-btn-lg);background:var(--panel);color:var(--text);font-size:16px;font-weight:500;line-height:1;}
.btn--submit{width:100%;height:50px;border-radius:var(--radius);background:var(--gold);color:var(--gold-ink);font-size:16px;font-weight:700;line-height:1;}
/* 窄容器里的表单铺满（替代内联 style） */
.form--fluid{flex:1 1 auto;width:100%;padding:28px;}
/* 卡片内的紧凑按钮（替代内联 style） */
.btn--sm{height:46px;padding:0 28px;border-radius:var(--radius-btn);width:fit-content;font-size:15px;}
.btn:hover{filter:brightness(1.08);}

/* ---------------- 首页板块 ---------------- */
.hero{
  position:relative;overflow:hidden;
  background:var(--surface);min-height:620px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:26px;padding:96px var(--gutter);
}
/* Hero 底图：逐张停留 + 特效性翻页（回溯上上版参数，仅停留改为 4s） */
.hero{
  perspective:1800px;perspective-origin:50% 50%;
  --hero-hold:4s;        /* 单张停留 */
  --hero-flip-in:1.25s;  /* 新页翻入 */
  --hero-flip-out:1s;    /* 旧页翻出 */
  --hero-zoom:4s;        /* 停留期缓慢推镜 */
  --flip-ease:cubic-bezier(.45,.05,.35,1);
}
.hero__bg{position:absolute;inset:0;z-index:0;overflow:hidden;transform-style:preserve-3d;}
.hero__bg-page{
  position:absolute;inset:0;
  transform-origin:left center;
  transform:rotateY(-92deg);
  opacity:0;visibility:hidden;
  backface-visibility:hidden;
}
.hero__bg-page img{
  width:100%;height:100%;object-fit:cover;
  transform:scale(1.02);transform-origin:center;
}
.hero__bg-page.is-active{
  visibility:visible;opacity:1;
  transform:rotateY(0deg);
  animation-name:heroFlipIn;
  animation-duration:var(--hero-flip-in);
  animation-timing-function:var(--flip-ease);
  animation-fill-mode:forwards;
}
.hero__bg-page.is-active img{
  animation-name:heroZoom;
  animation-duration:var(--hero-zoom);
  animation-timing-function:ease-out;
  animation-fill-mode:forwards;
}
.hero__bg-page.is-out{
  visibility:visible;
  transform-origin:right center;
  animation-name:heroFlipOut;
  animation-duration:var(--hero-flip-out);
  animation-timing-function:var(--flip-ease);
  animation-fill-mode:forwards;
}
@keyframes heroFlipIn{
  from{transform:rotateY(-92deg);filter:brightness(.3) saturate(.75);}
  to{transform:rotateY(0deg);filter:brightness(1) saturate(1);}
}
@keyframes heroFlipOut{
  0%{transform:rotateY(0deg);filter:brightness(1);}
  55%{filter:brightness(.5);}
  100%{transform:rotateY(86deg);filter:brightness(.2);}
}
@keyframes heroZoom{
  from{transform:scale(1.02);}
  to{transform:scale(1.1);}
}
.hero__mask{
  position:absolute;inset:0;
  background:linear-gradient(180deg,
    rgba(11,14,20,.9) 0%,
    rgba(11,14,20,.68) 46%,
    rgba(11,14,20,.86) 100%);
}
.hero:hover .hero__bg-page.is-active,
.hero.is-paused .hero__bg-page.is-active{animation-play-state:paused;}
.hero:hover .hero__bg-page.is-active img,
.hero.is-paused .hero__bg-page.is-active img{animation-play-state:paused;}
.hero > .hero__badge,
.hero > .hero__title,
.hero > .hero__sub,
.hero > .hero__btns{position:relative;z-index:1;}
@media (prefers-reduced-motion:reduce){
  .hero{perspective:none;}
  .hero__bg-page{transform:none;opacity:1;visibility:visible;filter:brightness(.7);}
  .hero__bg-page + .hero__bg-page{display:none;}
}
/* 小屏无 3D 景深，改用淡入淡出 */
@media (max-width:1024px){
  .hero{perspective:none;}
  .hero__bg-page.is-active{animation:heroFadeIn 1.4s ease forwards;}
  .hero__bg-page.is-out{animation:heroFadeOut 1.2s ease forwards;}
}
@keyframes heroFadeIn{from{opacity:0;}to{opacity:1;}}
@keyframes heroFadeOut{from{opacity:1;}to{opacity:0;}}
.hero--page{
  min-height:0;align-items:flex-start;text-align:left;
  padding:80px var(--gutter) 72px;height:360px;
}
.hero__badge{
  display:inline-flex;align-items:center;gap:8px;
  padding:8px 18px;border-radius:var(--radius-pill);
  background:var(--panel);font-size:13px;font-weight:500;
  color:var(--gold);line-height:1;
}
/* 首页 Hero 压在暗色遮罩 + 滚动底图上，文案走白/浅；内页 Hero 无遮罩，仍用深色字（下方覆盖） */
.hero__title{font-size:52px;font-weight:700;color:#FFFFFF;text-align:center;line-height:1.35;white-space:pre-line;}
.hero--page .hero__title{font-size:40px;text-align:left;white-space:normal;color:var(--text);}
.hero__sub{width:720px;max-width:100%;font-size:17px;font-weight:400;color:rgba(255,255,255,.78);text-align:center;line-height:1.7;}
.hero--page .hero__sub{width:640px;text-align:left;color:var(--muted);}
/* 内页 Hero 居中式（作品页）：整个标题区居中于页面 */
.hero--center{align-items:center;text-align:center;}
.hero--center .hero__title{text-align:center;}
.hero--center .hero__sub{text-align:center;}
/* 内页 Hero 底图：正片叠底压在浅色底上 —— 白场自然消隐，暗部留形，
   文字仍在最上层，不受底图影响 */
.hero--blend{position:relative;overflow:hidden;isolation:isolate;}
.hero__base{
  position:absolute;inset:0;z-index:0;
  width:100%;height:100%;object-fit:cover;object-position:center;
  mix-blend-mode:multiply;pointer-events:none;
}
.hero--blend > *:not(.hero__base){position:relative;z-index:1;}
/* 文字所在的中间带压一层极淡的白色渐隐罩：底图上下边缘照旧透出，
   只保证标题与副标题在任何裁切比例下都可读（窄屏裁到暗部时尤其需要） */
.hero--blend::after{
  content:"";position:absolute;inset:0;z-index:0;pointer-events:none;
  background:linear-gradient(180deg,
    rgba(255,255,255,.02) 0%,
    rgba(255,255,255,.16) 36%,
    rgba(255,255,255,.16) 68%,
    rgba(255,255,255,.04) 100%);
}
.hero__btns{display:flex;align-items:center;gap:16px;}

/* 数据亮点：上下留白减半（160 → 112），内容落在整页 60% 的中间列，
   四项与上下两条虚线的左右端对齐（同一列），整体居中 */
.stats{
  height:112px;
  display:flex;align-items:center;justify-content:space-between;
  padding:0 20vw;
  background:var(--bg);
}
.stats__item{display:flex;flex-direction:column;align-items:center;gap:6px;}
.stats__num{font-size:38px;font-weight:700;color:var(--gold);line-height:1.2;}
.stats__label{font-size:14px;font-weight:400;color:var(--muted);}

.section{display:flex;flex-direction:column;gap:32px;padding:96px var(--gutter);}
.section--surface{background:var(--surface);}
.section__en{font-size:12px;font-weight:500;color:var(--gold);letter-spacing:3px;line-height:1.4;}
.section__cn{font-size:34px;font-weight:700;color:var(--text);line-height:1.3;}

/* 板块之间的虚线隔断：与作品页 .works__divider 同一根线（60% 宽居中） */
.divider{
  width:60%;margin:76px auto;
  border-top:1px dashed rgba(22,27,34,.30);
}
/* 数据区上下那两条：间距减半（76 → 40），配合 .stats 的收窄一起用 */
.divider--tight{margin:40px auto;}

/* ===== 作品展示：单个模板独占一行，四行左右交替（图左文右 → 图右文左）=====
   框架宽度已对齐作品页（整页 60%），字号不再按旧的 50% 缩放，回到站点标准规格 */
.works__list{display:flex;flex-direction:column;gap:40px;}
.work-row{display:flex;align-items:center;gap:40px;width:100%;}
.work-row--flip{flex-direction:row-reverse;}
.work-row__media{
  flex:0 0 calc((100% - 40px) / 2);
  aspect-ratio:620 / 463;
  display:block;overflow:hidden;
  border-radius:var(--radius);background:var(--panel-2);
}
.work-row__media img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .5s var(--ease);
}
.work-row__media:hover img{transform:scale(1.04);}
/* media 本身即 <img> 的写法（作品页用）：直接对图缩放，同样有 hover 推近 */
img.work-row__media{object-fit:cover;transition:transform .5s var(--ease);}
.work-row__media:hover{transform:scale(1.04);}
/* 标题行里的标签（作品页学员行） */
.work-row__title .badge{vertical-align:middle;}
.work-row__text{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:8px;}
.work-row__title{
  font-size:20px;font-weight:700;color:var(--text);line-height:1.4;
  display:flex;align-items:center;gap:10px;flex-wrap:wrap;
}
.work-row__no{
  flex:none;min-width:22px;height:22px;padding:0 7px;border-radius:var(--radius-pill);
  background:var(--panel-2);color:var(--gold);
  font-size:12px;font-weight:700;line-height:1;
  display:inline-flex;align-items:center;justify-content:center;
}
.work-row__p{font-size:14px;font-weight:400;color:var(--muted);line-height:1.85;}

/* 首页：主视觉以下所有底色统一成作品区的底色（--surface）。
   只改 --bg 这一个令牌：页底底色与数据带底色都会跟着变，
   其余区块本来就用 --surface，于是整页不再有白 / 灰交替的色块 */
.page-home{--bg:var(--surface);}
/* 首页：虚线上下的留白一起收紧 —— 区块内边距 96→64、虚线外边距 76→36，
   单侧净留白 172 → 100；数据区上下那两条（.divider--tight）也并到同一节奏 */
.page-home .section{padding-top:64px;padding-bottom:64px;}
.page-home .divider{margin:36px auto;}

/* 首页作品板块整体居中：框架宽度对齐作品页（整页 60%，两侧各留 1/5），
   内层仍是「图 + 文」交替行的排版，这是与作品页卡片墙唯一的区别。
   用 60vw 而非 60%，因为 .section 本身带左右 gutter，只有 vw 才等于整页宽 */
.section--works{align-items:center;}
.section--works > .section__en,
.section--works > .section__cn,
.section--works > .intro,
.section--works > .works__head,
.section--works > .works__list{width:60vw;max-width:none;}
/* 企业介绍与作品标题之间的虚线：同在 60% 列上（section 自带 gutter padding，必须用 vw 才对得齐） */
.section--works > .divider{width:60vw;margin:0;}
/* 企业介绍到上、下两条虚线的距离相等（上 = 虚线外边距 36 + 32；下 = 36 + 弹性间距 32，两边都是 68） */
.page-home .section--works{padding-top:32px;}
.section--works > .intro{margin:0 0 36px;}

/* ===== 作品页：整页留白底 + 两块作品模块 =====
   行宽 = 整页 60%（两侧各留 1/5）；讲师 / 学员之间用一条虚线做隔断 */
.works-stage{
  display:flex;flex-direction:column;align-items:center;
  /* 左右不留内边距：让 60% 直接对应整页宽度，两侧各剩 1/5 留白 */
  padding:72px 0 96px;
}
.works__block{
  width:60%;
  display:flex;flex-direction:column;gap:40px;
}
/* 讲师 / 学员之间的虚线隔断 */
.works__divider{
  width:60%;margin:76px 0;
  border-top:1px dashed rgba(22,27,34,.30);
}

/* 模块头：中文大标题居中于版心，上传入口贴右，左侧留白用于配平 */
.works__head{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:24px;}
.works__head-text{
  grid-column:2;min-width:0;text-align:center;
  display:flex;flex-direction:column;gap:10px;
}
.works__head-text .section__en{letter-spacing:4px;}
.work-upload{
  grid-column:3;justify-self:end;
  display:inline-flex;align-items:center;gap:8px;white-space:nowrap;
  height:40px;padding:0 18px;border-radius:var(--radius-btn);
  background:var(--panel);border:1px solid var(--line);color:var(--muted);
  font-size:14px;font-weight:500;line-height:1;
  transition:border-color .2s ease,color .2s ease,background .2s ease;
}
.work-upload:hover{border-color:var(--gold);color:var(--gold);background:var(--panel-2);}
.work-upload__plus{font-size:16px;font-weight:700;line-height:1;}

/* 三列图墙 */
.works__grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px 20px;}
.work-card{display:flex;flex-direction:column;gap:10px;min-width:0;text-decoration:none;}
.work-card__media{
  display:block;width:100%;aspect-ratio:4 / 3;overflow:hidden;
  border-radius:var(--radius-md);background:var(--panel-2);
}
.work-card__media img{
  display:block;width:100%;height:100%;object-fit:cover;
  transition:transform .5s var(--ease);
}
.work-card:hover .work-card__media img{transform:scale(1.05);}
/* 同一张素材在相邻行复用时的视点微调，避免看起来是重复粘贴 */
.work-card__media--low img{object-position:center 72%;}
.work-card__title{
  font-size:14px;font-weight:500;color:var(--text);line-height:1.5;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  transition:color .2s ease;
}
.work-card:hover .work-card__title{color:var(--gold);}
.work-card__meta{
  font-size:12px;font-weight:400;color:var(--muted-2);line-height:1.5;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}

/* 企业介绍：作品区上方的两行居中文字（首页） */
.intro{display:flex;flex-direction:column;gap:12px;text-align:center;}
.intro__line{font-size:18px;font-weight:400;color:var(--muted);line-height:1.85;}
.intro__line:first-child{color:var(--text);}

.about{display:flex;align-items:center;gap:64px;padding:96px var(--gutter);background:var(--surface);}
.about__left{flex:1 1 0;max-width:560px;display:flex;flex-direction:column;gap:18px;}
.about__p{font-size:15px;font-weight:400;color:var(--muted);line-height:1.9;}
.about__tags{display:flex;align-items:center;gap:12px;}
.tag{
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 16px;border-radius:var(--radius-pill);
  background:var(--panel);font-size:13px;font-weight:500;color:var(--gold);line-height:1.2;
}
.form{flex:0 0 480px;width:480px;display:flex;flex-direction:column;gap:16px;padding:32px;border-radius:var(--radius-lg);background:var(--panel);border:1px solid var(--line);}
.form__title{font-size:22px;font-weight:700;color:var(--text);line-height:1.4;}
.field{display:flex;flex-direction:column;gap:8px;width:100%;}
.field__label{font-size:13px;font-weight:400;color:var(--muted);line-height:1.4;}
.field__input{
  width:100%;height:48px;padding:0 16px;
  border-radius:var(--radius);border:1px solid var(--line);
  background:var(--surface);color:var(--text);font-size:15px;outline:none;
  transition:border-color .2s ease;
}
.field__input:focus{border-color:var(--gold);}
.field__input::placeholder{color:var(--muted-2);}

.courses__row{display:flex;align-items:center;gap:24px;}
.course{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:14px;padding:28px;border-radius:var(--radius-lg);background:var(--panel);border:1px solid var(--line);transition:transform .25s ease;}
.course:hover{transform:translateY(-4px);}
.course__img{width:100%;height:180px;border-radius:var(--radius-md);object-fit:cover;background:var(--panel-2);}
.course__title{font-size:20px;font-weight:700;color:var(--text);line-height:1.4;width:100%;}
.course__desc{font-size:14px;font-weight:400;color:var(--muted);line-height:1.8;width:100%;}

.contact__row{display:flex;align-items:center;gap:24px;}
.contact-card{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:10px;padding:28px;border-radius:var(--radius-lg);background:var(--panel);border:1px solid var(--line);}
.contact-card__title{font-size:18px;font-weight:700;color:var(--text);width:100%;line-height:1.4;}
.contact-card__value{font-size:15px;font-weight:400;color:var(--muted);width:100%;line-height:1.6;}

/* ---------------- 内页通用组件 ---------------- */
.grid{display:grid;gap:24px;}
.grid--2{grid-template-columns:repeat(2,1fr);}
.grid--3{grid-template-columns:repeat(3,1fr);}
/* grid--4 已随作品页改用 .work-row 下线，不再保留 */
.grid--2u{grid-template-columns:repeat(2,1fr);align-items:start;}

.card{
  display:flex;flex-direction:column;gap:14px;
  padding:28px;border-radius:var(--radius-lg);
  background:var(--panel);border:1px solid var(--line);
}
.card--pad-lg{padding:36px;gap:16px;}
.card__title{font-size:20px;font-weight:700;color:var(--text);line-height:1.4;width:100%;}
.card__text{font-size:14px;font-weight:400;color:var(--muted);line-height:1.8;width:100%;}
.card__text--strong{color:var(--text);}
.card__img{width:100%;height:220px;border-radius:var(--radius-md);object-fit:cover;background:var(--panel-2);}
.card__foot{margin-top:auto;}

.badge{
  display:inline-flex;align-items:center;
  padding:6px 14px;border-radius:var(--radius-pill);
  font-size:12px;font-weight:500;line-height:1.4;
}
.badge--free{background:var(--panel-2);color:var(--gold);}
.badge--vip{background:var(--gold);color:var(--gold-ink);}

.card__meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}

/* 作品页底部：删掉左卡后，单块预约框整块居中（卡内文字与按钮同居中） */
.works-cta{display:flex;justify-content:center;}
.works-cta .card{width:100%;max-width:620px;align-items:center;text-align:center;}

/* ---------------- 作品上传后台（排版沿用站点组件） ---------------- */
.admin__layout{display:grid;grid-template-columns:420px 1fr;gap:24px;align-items:start;}
.admin__form,.admin__panel{display:flex;flex-direction:column;gap:16px;}
.admin__preview{
  width:100%;aspect-ratio:4 / 3;border-radius:var(--radius-md);
  background:var(--panel-2);overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
.admin__preview img{display:block;width:100%;height:100%;object-fit:cover;}
.admin__preview-empty{font-size:13px;color:var(--muted-2);}
.admin__hint{font-size:13px;color:var(--muted);line-height:1.6;min-height:20px;}
.admin__list{display:flex;flex-direction:column;gap:12px;max-height:660px;overflow:auto;}
.admin__item{
  display:flex;align-items:center;gap:14px;
  padding:12px;border:1px solid var(--line);border-radius:var(--radius-md);background:var(--panel);
}
.admin__thumb{flex:none;width:84px;height:63px;border-radius:var(--radius-xs);object-fit:cover;background:var(--panel-2);}
.admin__item-text{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:4px;}
.admin__item-title{font-size:14px;font-weight:500;color:var(--text);line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.admin__item-meta{font-size:12px;color:var(--muted-2);line-height:1.4;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.admin__del{
  flex:none;height:32px;padding:0 14px;border-radius:var(--radius-btn);
  background:var(--panel);border:1px solid var(--line);color:var(--muted);
  font-size:13px;line-height:1;transition:border-color .2s ease,color .2s ease;
}
.admin__del:hover{border-color:#C0392B;color:#C0392B;}
.admin__empty{font-size:14px;color:var(--muted-2);line-height:1.8;}
.admin__note{font-size:13px;color:var(--muted-2);line-height:1.8;}
/* 文件选择框沿用输入框样式，但不定高（原生控件高度由浏览器决定） */
.field__file{height:auto;padding:13px 16px;}

/* 详情页列表 */
.list{display:flex;flex-direction:column;gap:16px;}
.list__item{
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  padding:28px;border-radius:var(--radius-lg);background:var(--panel);
  border:1px solid var(--line);transition:border-color .2s ease;
}
.list__item:hover{border:1px solid var(--gold);}
.list__title{font-size:18px;font-weight:700;color:var(--text);line-height:1.5;}
.list__text{font-size:14px;font-weight:400;color:var(--muted);line-height:1.8;margin-top:8px;}
.list__date{font-size:14px;font-weight:500;color:var(--gold);white-space:nowrap;}

/* 教学流程 */
.steps{display:flex;flex-direction:column;gap:24px;}
.step{display:flex;gap:24px;align-items:flex-start;}
.step__no{
  flex:none;width:48px;height:48px;border-radius:var(--radius-pill);
  background:var(--panel);color:var(--gold);
  display:flex;align-items:center;justify-content:center;
  font-size:16px;font-weight:700;line-height:1;
}
.step__title{font-size:18px;font-weight:700;color:var(--text);line-height:1.5;}
.step__text{font-size:14px;font-weight:400;color:var(--muted);line-height:1.8;margin-top:8px;}

/* 提示词 / 软件规格表 */
.spec{display:flex;flex-direction:column;gap:12px;width:100%;}
.spec__row{display:flex;align-items:center;gap:16px;padding:14px 18px;border-radius:var(--radius);background:var(--panel-2);}
.spec__key{font-size:14px;font-weight:700;color:var(--gold);width:180px;flex:none;line-height:1.5;}
.spec__val{font-size:14px;font-weight:400;color:var(--muted);line-height:1.6;}

/* ---------------- 页脚 ---------------- */
.footer{display:flex;flex-direction:column;gap:36px;padding:72px var(--gutter) 56px;background:var(--surface);}
.footer__top{display:flex;align-items:center;justify-content:space-between;gap:40px;}
.footer__brand{font-size:16px;font-weight:700;color:var(--text);line-height:1.4;}
.footer__link{font-size:14px;font-weight:400;color:var(--muted);line-height:1.6;white-space:nowrap;}
.footer__link--dim{color:var(--muted-2);}
.footer__bottom{
  display:flex;align-items:center;justify-content:space-between;gap:24px;
  padding-top:28px;border-top:1px solid var(--line);
}
.footer__copy{font-size:13px;font-weight:400;color:var(--muted-2);line-height:1.6;}
/* 单列页脚（作品页）：右侧整块删除后，剩下的三行整列居中。
   底部加高，给固定在 bottom:28px 的悬浮胶囊（高约 56px）让出位置，
   否则滚到页面最底时胶囊会压住最后一行文字 */
.footer--center{padding-bottom:124px;}
.footer--center .footer__top,
.footer--center .footer__bottom{justify-content:center;text-align:center;}

/* ---------------- 悬浮工具 ---------------- */
.float{position:fixed;right:32px;bottom:140px;z-index:70;display:flex;flex-direction:column;gap:12px;}
.float__btn{
  width:56px;height:56px;border-radius:var(--radius-pill);
  background:var(--panel);color:var(--gold);
  font-size:12px;font-weight:700;line-height:1.3;
  display:flex;align-items:center;justify-content:center;
  box-shadow:0 6px 18px rgba(16,24,40,.10);
  transition:background .2s ease,color .2s ease;
}
.float__btn:hover{background:var(--gold);color:var(--gold-ink);}
.float__btn--gold{background:var(--gold);color:var(--gold-ink);}
.float__btn--gold:hover{background:var(--panel);color:var(--gold);}

.dock{
  position:fixed;left:50%;transform:translateX(-50%);bottom:28px;z-index:70;
  display:flex;align-items:center;gap:8px;padding:8px;border-radius:var(--radius-pill);
  background:var(--panel);box-shadow:0 6px 18px rgba(16,24,40,.10);
}
.dock__item{
  padding:10px 18px;border-radius:var(--radius-pill);background:transparent;
  font-size:14px;font-weight:500;color:var(--muted);line-height:1.4;
  transition:background .2s ease,color .2s ease;
}
.dock__item:hover{background:var(--surface);color:var(--text);}
.dock__item--on{background:var(--gold);color:var(--gold-ink);}

.toast{
  position:fixed;left:50%;top:120px;transform:translate(-50%,-16px);z-index:90;
  padding:14px 24px;border-radius:var(--radius-pill);
  background:var(--gold);color:var(--gold-ink);
  font-size:15px;font-weight:700;line-height:1.4;
  opacity:0;pointer-events:none;transition:opacity .25s ease,transform .25s ease;
}
.toast.is-show{opacity:1;transform:translate(-50%,0);}

/* ---------------- 响应式 ---------------- */
@media (max-width:1280px){
  :root{--gutter:64px;}
  .hero__title{font-size:42px;}
  .works__block,.works__divider{width:70%;}
  .grid--4{grid-template-columns:repeat(2,1fr);}
  .divider{width:70%;margin:64px auto;}
  .stats{padding:0 15vw;}
  .section--works > .section__en,
  .section--works > .section__cn,
  .section--works > .intro,
  .section--works > .works__head,
  .section--works > .works__list{width:70vw;}
  .section--works > .divider{width:70vw;}
}
@media (max-width:1024px){
  :root{--gutter:40px;}
  .nav{display:none;}
  .about{flex-direction:column;align-items:stretch;}
  .form{flex:1 1 auto;width:100%;}
  /* 窄屏：放弃 50% 居中列，恢复整宽；四行改上下单列，图仍在先，交替左右取消 */
  .section--works > .section__en,
  .section--works > .section__cn,
  .section--works > .intro,
  .section--works > .works__head,
  .section--works > .works__list{width:100%;max-width:none;}
  .section--works > .divider{width:100%;}
  .works__list{gap:24px;}
  .work-row,.work-row--flip{flex-direction:column;align-items:stretch;gap:20px;}
  .work-row__media{flex:none;width:100%;}
  .work-row__title{font-size:18px;}
  .work-row__p{font-size:13px;}
  /* 作品模块：模块头改为居中堆叠（上传入口落到标题下方），图墙仍保持三列 */
  .works-stage{padding:56px 0 72px;}
  .works__block,.works__divider{width:calc(100% - 2 * var(--gutter));}
  .works__divider{margin:56px 0;}
  .divider{width:calc(100% - 2 * var(--gutter));margin:52px auto;}
  .stats{padding:0 var(--gutter);}
  .works__head{grid-template-columns:1fr;justify-items:center;gap:16px;}
  .works__head-text{grid-column:1;}
  .work-upload{grid-column:1;justify-self:center;}
  .works__grid{gap:22px 16px;}
  .courses__row,.contact__row{flex-wrap:wrap;}
  .course,.contact-card{flex:1 1 280px;}
  .hero__title{font-size:34px;}
  .grid--3,.grid--2,.grid--2u{grid-template-columns:repeat(2,1fr);}
  .list__item{flex-direction:column;align-items:flex-start;gap:12px;}
  /* 后台：窄屏改为单列，表单在上、作品库在下 */
  .admin__layout{grid-template-columns:1fr;}
  .admin__list{max-height:none;}
}
@media (max-width:640px){
  .hero{min-height:auto;padding:72px var(--gutter);}
  .hero--page{height:auto;padding:56px var(--gutter) 48px;}
  .hero__sub{font-size:15px;}
  /* 内页 Hero：40px 的大标题在窄屏会横向溢出，这里按更高优先级压回来 */
  .hero--page .hero__title{font-size:26px;}
  .hero--page .hero__sub{width:100%;}
  .stats{flex-wrap:wrap;height:auto;padding:32px var(--gutter);gap:24px;}
  .footer__top{flex-direction:column;align-items:flex-start;gap:20px;}
  .footer__link{white-space:normal;}
  .float{bottom:200px;right:16px;}
  /* 作品模块窄屏：转两列，字号与间距同步收紧 */
  .works-stage{padding:40px 0 56px;}
  .works__block{gap:26px;}
  .works__divider{margin:44px 0;}
  .works__grid{grid-template-columns:repeat(2,1fr);gap:18px 12px;}
  .work-card{gap:8px;}
  .work-card__title{font-size:13px;}
  .work-card__meta{font-size:11px;}
  .work-row{gap:16px;}
  .work-row__title{font-size:16px;gap:8px;}
  .work-row__p{font-size:12px;line-height:1.85;}
  .grid{grid-template-columns:1fr !important;}
  .spec__row{flex-direction:column;align-items:flex-start;gap:6px;}
  .spec__key{width:auto;}
}

/* ---------------- 板块介绍弹框（点卡片查看企业介绍） ---------------- */
/* 卡片改成可点击（HTML 里加 data-section 即生效，未加的不受影响） */
.contact-card[data-section]{
  cursor:pointer;
  transition:border-color .2s ease,box-shadow .2s ease,transform .2s ease;
}
.contact-card[data-section]:hover{
  border-color:rgba(201,164,92,.55);
  box-shadow:0 10px 26px rgba(16,24,40,.08);
  transform:translateY(-2px);
}
.contact-card[data-section]:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
.contact-card__more{margin-top:2px;font-size:13px;font-weight:700;color:var(--gold);width:100%;line-height:1.5;}
.contact-card__more::after{content:' →';}

/* 弹框打开时锁住背景滚动 */
body.is-locked{overflow:hidden;}

.sheet{
  position:fixed;inset:0;z-index:120;
  display:flex;align-items:center;justify-content:center;
  padding:40px 24px;
  opacity:0;pointer-events:none;
  transition:opacity .22s var(--ease);
}
.sheet.is-open{opacity:1;pointer-events:auto;}
.sheet__mask{position:absolute;inset:0;background:rgba(11,14,20,.54);}
.sheet__panel{
  position:relative;width:100%;max-width:620px;max-height:calc(100vh - 80px);
  overflow-y:auto;padding:36px;border-radius:var(--radius-lg);
  background:var(--panel);box-shadow:0 24px 64px rgba(16,24,40,.24);
  transform:translateY(14px) scale(.98);
  transition:transform .24s var(--ease);
}
.sheet.is-open .sheet__panel{transform:none;}
.sheet__close{
  position:absolute;top:18px;right:18px;width:34px;height:34px;border-radius:50%;
  background:var(--surface);color:var(--muted);
  display:flex;align-items:center;justify-content:center;
  transition:background .2s ease,color .2s ease;
}
.sheet__close:hover{background:var(--gold);color:var(--gold-ink);}
.sheet__kicker{display:block;font-size:11px;font-weight:700;letter-spacing:.16em;color:var(--gold);}
.sheet__title{margin-top:10px;padding-right:44px;font-size:26px;font-weight:700;color:var(--text);line-height:1.35;}
.sheet__sub{margin-top:8px;font-size:14px;font-weight:400;color:var(--muted);line-height:1.6;}
.sheet__body{margin-top:20px;display:flex;flex-direction:column;gap:14px;}
.sheet__body p{font-size:15px;font-weight:400;color:var(--muted);line-height:1.9;}
.sheet__body p:first-child{color:var(--text);}

.sheet__contact{
  margin-top:24px;padding-top:24px;
  border-top:1px dashed rgba(22,27,34,.18);
  display:flex;flex-direction:column;gap:18px;
}
.sheet__phone{display:flex;align-items:center;gap:12px;flex-wrap:wrap;}
.sheet__phone-label{font-size:12px;font-weight:700;color:var(--muted-2);}
.sheet__phone-num{
  font-size:24px;font-weight:700;color:var(--text);line-height:1.3;
  user-select:text;-webkit-user-select:text;
}
.sheet__copy{
  display:inline-flex;align-items:center;gap:6px;
  padding:8px 16px;border-radius:var(--radius-pill);
  background:var(--surface);color:var(--text);
  font-size:13px;font-weight:700;line-height:1.4;
  transition:background .2s ease,color .2s ease;
}
.sheet__copy:hover,.sheet__copy.is-done{background:var(--gold);color:var(--gold-ink);}
.sheet__tip{font-size:13px;font-weight:400;color:var(--muted);line-height:1.7;}
.sheet__qr{display:flex;flex-direction:column;align-items:flex-start;gap:8px;}
.sheet__qr img{
  width:200px;height:200px;object-fit:contain;
  border-radius:var(--radius-md);border:1px solid var(--line);background:#fff;
}
.sheet__qr-cap{font-size:12px;font-weight:400;color:var(--muted-2);}
.sheet__more{margin-top:20px;font-size:13px;font-weight:400;color:var(--muted-2);line-height:1.7;}
.sheet__more a{color:var(--gold);font-weight:700;}

@media (max-width:768px){
  .sheet{padding:20px 16px;}
  .sheet__panel{padding:26px 22px;max-height:calc(100vh - 40px);}
  .sheet__title{font-size:22px;}
  .sheet__body p{font-size:14px;line-height:1.85;}
  .sheet__phone-num{font-size:21px;}
  .sheet__qr img{width:160px;height:160px;}
}

/* ---------------- 后台：板块介绍编辑器 ---------------- */
.admin__cols{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.field__text{
  width:100%;min-height:210px;padding:14px 16px;resize:vertical;
  border-radius:var(--radius);border:1px solid var(--line);
  background:var(--surface);color:var(--text);
  font-size:15px;font-family:inherit;line-height:1.85;outline:none;
  transition:border-color .2s ease;
}
.field__text:focus{border-color:var(--gold);}
.admin__qr{display:flex;align-items:flex-start;gap:20px;flex-wrap:wrap;}
.admin__qr-box{
  flex:none;width:160px;height:160px;border-radius:var(--radius-md);
  background:var(--panel-2);border:1px solid var(--line);overflow:hidden;
  display:flex;align-items:center;justify-content:center;
}
.admin__qr-box img{display:block;width:100%;height:100%;object-fit:contain;background:#fff;}
.admin__qr-side{flex:1 1 240px;min-width:0;display:flex;flex-direction:column;gap:12px;}

@media (max-width:640px){
  .admin__cols{grid-template-columns:1fr;}
}

/* ===== 资讯页 · 行业热点列表与分类筛选 ===== */
.section__lead{
  margin-top:14px;font-size:15px;font-weight:400;color:var(--muted);
  line-height:1.9;max-width:760px;
}
.hotbar{display:flex;flex-wrap:wrap;gap:10px;margin:24px 0 28px;}
.chip{
  padding:8px 16px;border-radius:var(--radius-pill);cursor:pointer;
  background:var(--panel);border:1px solid var(--line);color:var(--muted);
  font-size:13px;font-weight:600;font-family:inherit;line-height:1.4;
  transition:border-color .2s ease,background .2s ease,color .2s ease;
}
.chip:hover{border-color:var(--gold);color:var(--text);}
.chip.is-on{background:var(--gold);border-color:var(--gold);color:var(--gold-ink);}

/* 可点击的资讯条目 */
.list__item.is-click{cursor:pointer;}
.list__item.is-click:hover{border-color:var(--gold);}
.list__item.is-click:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}
.list__meta{display:flex;align-items:center;gap:12px;margin-bottom:10px;}
.list__tag{
  padding:4px 10px;border-radius:var(--radius-pill);
  background:var(--panel-2);color:var(--gold);
  font-size:11px;font-weight:700;letter-spacing:.04em;line-height:1.5;white-space:nowrap;
}
.list__hint{font-size:12px;font-weight:500;color:var(--muted-2);transition:color .2s ease;}
.list__item.is-click:hover .list__hint{color:var(--gold);}

@media (max-width:768px){
  .hotbar{margin:18px 0 22px;}
  .chip{padding:7px 13px;font-size:12px;}
  .section__lead{font-size:14px;}
}

/* ===== 课程页 · 成长路径四张模板（3D / CAD / AI / 就业） ===== */
/* 两列等宽：比例与上方 .courses__row 的课程卡一致，gap 同课程卡 */
.paths{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;}
.path-card{
  display:flex;flex-direction:column;align-items:center;text-align:center;gap:14px;
  padding:32px 28px;border-radius:var(--radius-lg);
  background:var(--panel);border:1px solid var(--line);
  transition:transform .25s ease,border-color .2s ease;
}
.path-card:hover{transform:translateY(-4px);border-color:var(--gold);}
.path-card__no{
  display:inline-flex;align-items:center;justify-content:center;
  width:46px;height:46px;border-radius:50%;
  background:var(--panel-2);color:var(--gold);
  font-size:14px;font-weight:700;letter-spacing:.04em;line-height:1;
}
.path-card__title{font-size:19px;font-weight:700;color:var(--text);line-height:1.45;}
.path-card__text{font-size:14px;font-weight:400;color:var(--muted);line-height:1.85;}

@media (max-width:768px){
  .paths{grid-template-columns:1fr;gap:16px;}
  .path-card{padding:26px 22px;}
}

/* ===== 软件页 · 下载清单（整理自 TZ 素材网） ===== */
.sw-note{
  font-size:14px;font-weight:400;color:var(--muted);line-height:1.95;
  max-width:900px;
}
.sw-note a{color:var(--gold);text-decoration:none;border-bottom:1px solid rgba(201,164,92,.4);}
.sw-note a:hover{border-bottom-color:var(--gold);}

.sw-tools{
  display:flex;align-items:center;gap:16px;flex-wrap:wrap;
  margin-top:22px;
}
.sw-search{
  display:inline-flex;align-items:center;gap:10px;
  flex:1 1 320px;max-width:460px;height:46px;padding:0 18px;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius-btn);
  color:var(--muted-2);
  transition:border-color .2s ease,box-shadow .2s ease;
}
.sw-search:focus-within{border-color:var(--gold);box-shadow:0 0 0 3px rgba(201,164,92,.12);}
.sw-search input{
  flex:1 1 auto;min-width:0;border:0;outline:0;background:transparent;
  font-family:inherit;font-size:14px;font-weight:400;color:var(--text);line-height:1;
}
.sw-search input::placeholder{color:var(--muted-2);}
.sw-search input::-webkit-search-cancel-button{-webkit-appearance:none;appearance:none;}
.sw-count{
  font-size:13px;font-weight:600;color:var(--muted);letter-spacing:.02em;white-space:nowrap;
}

/* 分类导航：数量角标 */
.hotbar .chip{display:inline-flex;align-items:center;gap:7px;}
.hotbar .chip em{
  font-style:normal;font-size:11px;font-weight:700;line-height:1;
  padding:3px 7px;border-radius:var(--radius-pill);
  background:var(--panel-2);color:var(--muted);
}
.hotbar .chip.is-on em{background:rgba(11,14,20,.14);color:var(--gold-ink);}
.hotbar .chip.is-off{opacity:.4;}

/* 分组 */
.sw-group{
  display:flex;flex-direction:column;gap:20px;
  padding-top:8px;scroll-margin-top:112px;
}
.sw-group + .sw-group{margin-top:52px;padding-top:44px;border-top:1px dashed var(--line);}
.sw-group__head{display:flex;flex-direction:column;gap:8px;}
.sw-group__en{font-size:11px;font-weight:600;color:var(--gold);letter-spacing:2.4px;line-height:1.4;}
.sw-group__title{
  display:flex;align-items:baseline;gap:10px;
  font-size:24px;font-weight:700;color:var(--text);line-height:1.4;
}
.sw-group__title em{
  font-style:normal;font-size:13px;font-weight:600;color:var(--muted-2);letter-spacing:.02em;
}
.sw-group__desc{font-size:14px;font-weight:400;color:var(--muted);line-height:1.85;max-width:760px;}

/* 卡片网格：列宽自适应，卡片本身保持紧凑 */
.sw-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(276px,1fr));gap:14px;}

.sw-card{
  display:flex;align-items:flex-start;gap:13px;
  padding:16px;border-radius:var(--radius-md);
  background:var(--panel);border:1px solid var(--line);
  text-decoration:none;transition:transform .22s var(--ease),border-color .2s ease,box-shadow .22s ease;
}
.sw-card:hover{
  transform:translateY(-3px);border-color:var(--gold);
  box-shadow:0 10px 26px rgba(22,27,34,.07);
}
.sw-card:focus-visible{outline:2px solid var(--gold);outline-offset:2px;}

.sw-card__icon{
  position:relative;flex:0 0 46px;width:46px;height:46px;border-radius:10px;
  overflow:hidden;background:var(--panel-2);
  display:inline-flex;align-items:center;justify-content:center;
}
.sw-card__icon img{display:block;width:100%;height:100%;object-fit:cover;}
/* 图标取不到时退回首字母 */
.sw-card__icon.is-fallback img{display:none;}
.sw-card__icon.is-fallback::after{
  content:attr(data-initial);
  font-size:17px;font-weight:700;color:var(--gold);line-height:1;
}

.sw-card__main{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:6px;}
.sw-card__top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.sw-card__name{
  font-size:15px;font-weight:700;color:var(--text);line-height:1.45;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.sw-card:hover .sw-card__name{color:var(--gold);}
.sw-card__badge{
  flex:0 0 auto;padding:2px 7px;border-radius:var(--radius-xs);
  background:rgba(201,164,92,.14);color:var(--gold);
  font-size:10px;font-weight:700;letter-spacing:.03em;line-height:1.6;white-space:nowrap;
}
.sw-card__desc{
  font-size:12.5px;font-weight:400;color:var(--muted);line-height:1.7;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.sw-card__meta{display:flex;align-items:center;gap:6px;flex-wrap:wrap;margin-top:2px;}
.sw-card__pill{
  padding:2px 8px;border-radius:var(--radius-pill);
  background:var(--panel-2);color:var(--muted);
  font-size:11px;font-weight:500;line-height:1.6;white-space:nowrap;
}
.sw-card__pill--ver{color:var(--text);font-weight:600;}

.sw-card__go{
  flex:0 0 auto;align-self:center;display:inline-flex;flex-direction:column;
  align-items:center;gap:2px;color:var(--muted-2);
  transition:color .2s ease;
}
.sw-card__go em{font-style:normal;font-size:10px;font-weight:600;letter-spacing:.02em;line-height:1.4;}
.sw-card:hover .sw-card__go{color:var(--gold);}

.sw-empty{
  padding:40px 0 8px;font-size:14px;font-weight:400;color:var(--muted);line-height:1.9;
}
.sw-empty a{color:var(--gold);text-decoration:none;border-bottom:1px solid rgba(201,164,92,.4);}

@media (max-width:1080px){
  .sw-grid{grid-template-columns:repeat(auto-fill,minmax(258px,1fr));}
}
@media (max-width:768px){
  .sw-tools{margin-top:16px;gap:12px;}
  .sw-search{flex:1 1 100%;max-width:none;height:44px;}
  .sw-grid{grid-template-columns:1fr;gap:10px;}
  .sw-group + .sw-group{margin-top:36px;padding-top:32px;}
  .sw-group__title{font-size:20px;}
  .sw-card{padding:14px;}
}

/* ===== 联系页 · 只放手机号与微信二维码，做最大化的视觉权重 ===== */
.chub{
  display:grid;grid-template-columns:repeat(2,1fr);gap:24px;
}
.chub__card{
  display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:20px;
  padding:48px 44px;border-radius:var(--radius-lg);
  background:var(--panel);border:1px solid var(--line);
}
.chub__kicker{
  font-size:11px;font-weight:700;color:var(--gold);letter-spacing:2.4px;line-height:1.4;
}
/* 手机号：整页最大的字，做视觉主角 */
.chub__phone{
  font-size:64px;font-weight:700;color:var(--text);
  letter-spacing:.01em;line-height:1.12;white-space:nowrap;
  text-decoration:none;transition:color .2s ease;
}
.chub__phone:hover{color:var(--gold);}
.chub__acts{display:flex;align-items:center;gap:14px;flex-wrap:wrap;}
/* 白卡上的次级按钮：补描边，否则和背景糊在一起看不出可点 */
.chub__acts .btn--ghost{border:1px solid rgba(22,27,34,.18);}
.chub__acts .btn--ghost:hover{border-color:var(--gold);color:var(--gold);}
.chub__hint{
  font-size:13.5px;font-weight:400;color:var(--muted);line-height:1.8;
}

/* 二维码卡：白底 + 留白，保证可扫 */
.chub__card--qr{align-items:center;text-align:center;}
.chub__card--qr .chub__kicker{align-self:center;}
.chub__qr{
  display:inline-flex;align-items:center;justify-content:center;
  padding:16px;border-radius:var(--radius-md);
  background:#FFFFFF;border:1px solid var(--line);
}
.chub__qr img{display:block;width:260px;height:auto;border-radius:var(--radius-xs);}
.chub__card--qr .chub__hint{text-align:center;}

/* 只放微信：单张卡居中，二维码放大到主视觉级别 */
.chub--one{grid-template-columns:minmax(0,600px);justify-content:center;}
.chub--one .chub__card{padding:52px 48px;}
.chub--one .chub__qr{padding:18px;}
.chub--one .chub__qr img{width:340px;}

/* 复制后按钮短暂反馈 */
.btn.is-done{background:var(--panel-2);border-color:var(--gold);color:var(--gold);}

@media (max-width:1280px){
  .chub__phone{font-size:48px;}
  .chub__qr img{width:230px;}
  .chub__card{padding:40px 34px;}
  .chub--one .chub__qr img{width:280px;}
  .chub--one .chub__card{padding:44px 36px;}
}
@media (max-width:768px){
  .chub{grid-template-columns:1fr;gap:16px;}
  .chub__card{padding:32px 24px;gap:16px;}
  .chub__phone{font-size:36px;}
  .chub__acts{gap:10px;}
  .chub__acts .btn{flex:1 1 auto;justify-content:center;}
  .chub__qr{padding:12px;}
  .chub__qr img{width:min(220px,60vw);}
  .chub--one .chub__card{padding:30px 22px;}
  .chub--one .chub__qr{padding:12px;}
  .chub--one .chub__qr img{width:min(240px,64vw);}
}

/* ===== 关于页 · 联盟企业形象墙（十家挂名位，前期黑色渐变特效底框占位） ===== */
/* 双列居中拓展：容器居中；每卡 = 左图 + 右介绍，
   图 / 文各占一半、间距 40px、比例 620/463 —— 与首页作品模板 .work-row 保持同一比例 */
/* =====================================================================
   联盟企业墙 · 双列 + 竖虚线分隔 + 每卡独立描边框架（2026-10-08 第三版）
   形象照回到站点原生的 620/463 横槽比例（与首页 .work-row 一致），
   业务卡不再靠 --portrait 改比例，改用 object-position 控制人物取景。
   ===================================================================== */
/* 双列居中拓展：容器居中；每卡 = 左图 + 右介绍，
   图 / 文各占一半、比例 620/463 —— 与首页作品模板 .work-row 保持同一比例 */
.partner-grid{
  display:grid;grid-template-columns:repeat(2,1fr);
  gap:24px 68px;width:100%;max-width:1440px;margin:0 auto;
  position:relative;
}
/* 双列之间一条竖向虚线：落在列间距正中（68px 中缝的正中）。
   中缝留得够宽，虚线两侧各留 34px 空白，不会被卡片描边压住；
   1px 淡线在 1400px 宽的页面上等于看不见，故用 2px + 实一点的色。 */
.partner-grid::before{
  content:"";position:absolute;left:50%;top:4px;bottom:4px;width:0;
  border-left:2px dashed rgba(201,164,92,.55);
  transform:translateX(-50%);
  pointer-events:none;
}
/* 每张卡：独立描边 + 微投影，形成「框架包裹」的卡片感 */
.partner-card{
  display:flex;align-items:center;gap:32px;min-width:0;
  padding:22px;border-radius:var(--radius-lg);
  border:1px solid var(--line);
  box-shadow:0 1px 2px rgba(10,12,15,.04);
  transition:border-color .28s ease,box-shadow .28s ease,transform .28s ease;
}
/* 卡片不铺白底：铺了会把中间那条竖虚线整条盖住（卡片是横跨到列间距边缘的） */
.partner-card:hover{
  border-color:rgba(201,164,92,.42);
  box-shadow:0 10px 28px rgba(10,12,15,.10);
  transform:translateY(-2px);
}
/* 可点框架（挂名位 / 待入驻方向）：整卡可点。
   点击后在官网内部展开该方向的说明层（见 assets/info-sheet.js），
   不跳独立网页、不新开窗口。这里只补「看起来能点」和键盘可达的反馈。 */
.partner-card--slot{cursor:pointer;}
.partner-card--slot:focus-visible{outline:2px solid var(--gold);outline-offset:4px;}
/* 待入驻位上的入口提示：沿用「查看企业介绍 →」的黑金流光，视觉上引导点击 */
.partner-card--slot .partner-card__slot{margin-bottom:2px;}
.partner-card__media{
  flex:0 0 calc((100% - 32px) / 2);
}
/* 形象照底框：黑色渐变 + 斜向高光 + 四角压暗 */
.partner-card__media{
  position:relative;
  aspect-ratio:620 / 463;
  border-radius:var(--radius);overflow:hidden;isolation:isolate;
  background:
    radial-gradient(120% 130% at 14% 6%, rgba(255,255,255,.24), rgba(255,255,255,0) 56%),
    linear-gradient(135deg, #3B414A 0%, #1E2229 46%, #0A0C0F 100%);
  box-shadow:0 8px 22px rgba(10,12,15,.16);
  transition:transform .28s var(--ease),box-shadow .28s ease;
}
/* 斜向高光带：hover 时扫过 */
.partner-card__media::before{
  content:"";position:absolute;inset:-25%;z-index:0;
  background:linear-gradient(115deg,
    rgba(255,255,255,0) 38%, rgba(255,255,255,.20) 50%, rgba(255,255,255,0) 62%);
  transform:translateX(-22%);
  transition:transform .7s var(--ease);
}
/* 四角压暗，让占位字更稳 */
.partner-card__media::after{
  content:"";position:absolute;inset:0;z-index:0;
  background:radial-gradient(112% 112% at 50% 50%, rgba(0,0,0,0) 42%, rgba(0,0,0,.42) 100%);
}
.partner-card__ph{
  position:absolute;inset:0;z-index:1;
  display:flex;align-items:center;justify-content:center;
  font-size:12.5px;font-weight:600;color:rgba(255,255,255,.72);
  letter-spacing:.26em;text-indent:.26em;line-height:1;
}
/* 企业真实形象照：图片槽位比例锁死 620/463，图以 cover 填满 */
.partner-card__photo{
  position:absolute;inset:0;z-index:0;
  width:100%;height:100%;object-fit:cover;object-position:50% 34%;
  display:block;
  transition:transform .5s var(--ease);
}
/* 图下方压一层极淡的暗角，让图片边缘与圆角过渡更稳 */
.partner-card__media:has(.partner-card__photo)::after{
  background:radial-gradient(118% 118% at 50% 46%, rgba(0,0,0,0) 58%, rgba(0,0,0,.32) 100%);
}
/* 形象照可点击（跳企业介绍页）：指针 + 轻微推近反馈 */
a.partner-card__media{cursor:pointer;display:block;}
a.partner-card__media:hover .partner-card__photo{transform:scale(1.03);}
/* 招聘薪资条：单行强调，用金色内联标签，不抢企业名 */
.partner-card__recruit{
  display:inline-flex;align-items:center;align-self:flex-start;
  margin:2px 0 0;padding:5px 12px;border-radius:var(--radius-pill);
  background:var(--panel);border:1px solid rgba(201,164,92,.34);
  font-size:13px;font-weight:600;color:var(--gold);line-height:1.4;
  letter-spacing:.02em;
}
.partner-card:hover .partner-card__media{
  transform:translateY(-4px);
  box-shadow:0 18px 36px rgba(10,12,15,.30);
}
.partner-card:hover .partner-card__media::before{transform:translateX(22%);}

/* 右侧介绍 */
.partner-card__body{flex:1 1 0;min-width:0;display:flex;flex-direction:column;gap:8px;}
/* 挂名位整卡：底框与文案都垂直居中。
   挂名位的文案比首卡短，被同排拉高后底部会空出一大块 ——
   居中让空白上下均分，视觉上像留白而不是缺内容。 */
.partner-card:not(:has(.partner-card__recruit)) .partner-card__media{align-self:center;}
.partner-card:not(:has(.partner-card__recruit)) .partner-card__body{justify-content:center;}
/* 挂名位状态徽章：与右侧文案同调的浅灰 pill，不带交互，只是「待入驻」的状态标记 */
.partner-card__slot{
  align-self:flex-start;margin-top:2px;
  display:inline-flex;align-items:center;
  padding:4px 11px;border-radius:var(--radius-pill);
  background:var(--panel);border:1px solid var(--line);
  font-size:12px;font-weight:500;color:var(--muted);line-height:1.4;
  letter-spacing:.08em;
}
/* 标题行：企业名 + 招聘薪资并排（薪资挂在企业名右侧，不占下方段落位置） */
.partner-card__head{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  min-width:0;
}
.partner-card__head .partner-card__name{min-width:0;}
/* 标题右侧的薪资徽章改成竖排两行：横排时整条要 169px，
   而卡片文字列在双列布局下只有 ~237px，横排必然把徽章挤到下一行。
   竖排后只要 ~85px，「企业名 + 薪资」稳稳并排一行。 */
.partner-card__head .partner-card__recruit{
  margin:0;align-self:auto;flex:0 0 auto;
  flex-direction:column;align-items:flex-start;gap:1px;
  padding:4px 11px;
}
.partner-card__head .partner-card__recruit .rk{
  font-size:11px;font-weight:500;color:var(--muted);line-height:1.2;
}
.partner-card__head .partner-card__recruit .rv{
  font-size:13px;font-weight:700;color:var(--gold);line-height:1.2;
  letter-spacing:.01em;
}
/* 有招聘信息的卡片：段数比别人多（4 段 vs 1 段），文案天生更高。
   用 overflow 兜住即可 —— 不再靠 flex 撑高，否则卡片会比同排的占位卡高出一截。 */
.partner-card:has(.partner-card__recruit){align-items:flex-start;gap:7px;}
.partner-card:has(.partner-card__recruit) .partner-card__name{font-size:19px;line-height:1.35;}
.partner-card:has(.partner-card__recruit) .partner-card__text{font-size:13.5px;line-height:1.68;}
/* 让招聘卡与同排的占位卡等高：卡片高度由内容较多的一列决定。
   底框改为垂直居中 —— 图片比例锁死不能拉伸，居中后上下留白对称，看着是「装裱」而不是「顶头」 */
.partner-card:has(.partner-card__recruit) .partner-card__media{align-self:center;}
/* 有详细介绍页的企业：卡内追加一条入口链接
   —— 文字用与「江禾设计表现」同色的黑，叠一道金色流光循环扫过 */
.partner-card__more{
  align-self:flex-start;margin-top:2px;
  position:relative;display:inline-block;
  font-size:13.5px;font-weight:600;line-height:1.5;
  text-decoration:none;
  border-bottom:1px solid rgba(22,27,34,.22);
  transition:border-color .25s ease;
}
.partner-card__more:hover{border-color:var(--gold);}

/* ---- 黑金流光：企业名 与「查看企业介绍 →」共用同一套 ----
   文字基色是 var(--text)（深黑），一道金色光带循环扫过。
   ⚠️ 单帧截图常常只看到纯黑字，这是正常的（光带只占行程一小段），
   判断有没有生效要看 computed style 的 animationName / backgroundClip。 */
.partner-card__sheen,
.partner-card__more{
  color:var(--text);
  background-image:linear-gradient(100deg,
    var(--text) 0%, var(--text) 38%,
    #D8B978 47%, #F0DCAB 50%, #D8B978 53%,
    var(--text) 62%, var(--text) 100%);
  background-size:280% 100%;
  background-position:120% 0;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
  animation:partnerSheen 3.6s linear infinite;
}
@keyframes partnerSheen{
  0%{background-position:120% 0;}
  100%{background-position:-20% 0;}
}
/* 减少动态偏好 / 触屏（触屏没有 hover、也更省电）：关掉循环流光，回落到纯黑字 */
@media (prefers-reduced-motion:reduce),(hover:none){
  .partner-card__sheen,
  .partner-card__more{
    animation:none;background-image:none;
    -webkit-text-fill-color:currentColor;color:var(--text);
  }
}
.partner-card__name{
  font-size:20px;font-weight:700;color:var(--text);line-height:1.4;
  transition:color .2s ease;
}
/* 企业名：保留 hover 变金的反馈（用 text-fill 而不是 color，否则会被流光盖掉） */
.partner-card__sheen:hover{-webkit-text-fill-color:var(--gold);}
/* 正文：两端对齐，让右侧边界整齐（中文行尾参差主要来自自动换行） */
.partner-card__text{
  font-size:14px;font-weight:400;color:var(--muted);line-height:1.85;
  text-align:justify;text-justify:inter-ideograph;
}
/* ============================================================
   招聘卡（江禾设计表现）：右侧文案列统一右边界
   ============================================================
   用户要的是「企业名 / 两段正文 / 查看企业介绍」右边缘对齐成一条线。
   做法 = ① 标题行不换行、徽章靠右（原本 flex-wrap 会把徽章挤到下一行）
          ② 正文两端对齐，且最后一行也两端对齐（否则末行右端参差）
          ③ 链接撑满整列，让下划线右端与正文对齐 */
.partner-card:has(.partner-card__recruit) .partner-card__head{
  display:flex;align-items:center;gap:10px;flex-wrap:nowrap;
}
.partner-card:has(.partner-card__recruit) .partner-card__head .partner-card__name{
  flex:1 1 auto;min-width:0;
}
/* 居中对齐：两段介绍在文字列里居中，左右都留自然参差。
   + 2026-10-09 用户要求：浅色正文统一走灰色基色，并叠同一道金色流光
     （与企业名 /「查看企业介绍 →」同速同步扫过，整卡像被一道光带扫过）。
   ⚠️ <strong> 必须显式给回不透明填充 —— -webkit-text-fill-color 会继承，
      不拦截的话两个板块名会跟着正文一起变成流光的灰。 */
.partner-card:has(.partner-card__recruit) .partner-card__text{
  text-align:center;text-align-last:center;
  color:var(--muted);
  background-image:linear-gradient(100deg,
    var(--muted) 0%, var(--muted) 38%,
    #D8B978 47%, #F0DCAB 50%, #D8B978 53%,
    var(--muted) 62%, var(--muted) 100%);
  background-size:280% 100%;
  background-position:120% 0;
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
  animation:partnerSheen 3.6s linear infinite;
}
/* 两大板块名：只保留加重，颜色与正文统一
   （2026-10-09 用户：「介绍里的小黑色文字，和灰色文字颜色一样统一颜色」）
   ⚠️ 这里不能再留任何 color / -webkit-text-fill-color 实色覆盖 —— 父级是
      「透明填充 + background-clip:text」，一旦给回实色，这两个词会被从流光里「抠出来」，
      颜色又与正文不一致。 */
.partner-card:has(.partner-card__recruit) .partner-card__text strong{
  font-weight:600;color:inherit;
}
/* 正文流光的回落（必须放在上面两条规则之后：同特异性下靠后置才压得住） */
@media (prefers-reduced-motion:reduce),(hover:none){
  .partner-card:has(.partner-card__recruit) .partner-card__text{
    animation:none;background-image:none;
    -webkit-text-fill-color:currentColor;color:var(--muted);
  }
}
.partner-card:has(.partner-card__recruit) .partner-card__more{
  display:block;align-self:stretch;width:100%;margin-top:4px;text-align:center;
}

@media (max-width:1080px){
  /* 平板：卡片内部改「图上文下」。
     横向分栏时文字列只剩 ~182px，「企业名(114) + 薪资徽章(99)」放不进一行会掉行；
     纵向堆叠后文字列拿到整卡宽度，标题与徽章稳稳并排。
     图宽封顶 300px 居中，避免卡片变高后图片大得突兀。 */
  .partner-grid{gap:30px 32px;}
  .partner-card{flex-direction:column;align-items:stretch;gap:20px;}
  .partner-card__media{flex:0 0 auto;width:100%;max-width:300px;align-self:center;}
  .partner-card__name{font-size:18px;}
}
@media (max-width:768px){
  .partner-grid{grid-template-columns:1fr;gap:26px;}
  .partner-card{gap:22px;}
  .partner-card__media{flex:0 0 calc((100% - 22px) / 2);}
  .partner-card__name{font-size:17px;}
  .partner-card__text{font-size:13px;line-height:1.8;}
}

/* ============================================================
   移动端排版（≤1024 平板补位 / ≤767 手机主战区 / ≤380 小屏兜底）
   顶部 .nav 在 ≤1024 已隐藏，全站导航交给底部 dock 承担；
   本区块集中重做：通栏留白、字号密度、图文堆叠方向、点击热区、底部让位。
   写在文件末尾，层叠时压过上方所有旧断点（同选择器后置生效）。
   ============================================================ */

/* ---------- 平板：dock 开始承担导航角色，项间距收到最小 ---------- */
@media (max-width:1024px){
  .dock{gap:2px;}
}

/* ---------- 手机主战区 ---------- */
@media (max-width:767px){
  :root{
    --gutter:20px;      /* 通栏留白 40 → 20，内容宽度换出来 */
    --header-h:64px;    /* 顶栏瘦身，给正文让高度 */
  }

  /* ===== 顶栏 ===== */
  .header{padding:0 var(--gutter);}
  .brand{gap:10px;}
  .brand__mark{width:36px;height:42px;}
  .brand__cn{font-size:17px;}
  .brand__en{font-size:9px;letter-spacing:1.4px;}

  /* ===== Hero：首页与内页统一竖排节奏，按钮整行铺满 ===== */
  .hero{padding:36px var(--gutter) 40px;}
  .hero__title{font-size:27px;line-height:1.42;}
  .hero__sub{width:100%;font-size:15px;line-height:1.78;}
  .hero__badge{font-size:12px;padding:7px 14px;}
  /* 竖排 + 整行铺满：修掉原先两个按钮挤在一行被裁掉的问题 */
  .hero__btns{flex-direction:column;align-items:stretch;gap:12px;width:100%;}
  .hero__btns .btn{width:100%;justify-content:center;text-align:center;padding:0 20px;}
  .hero--page{padding:40px var(--gutter) 36px;height:auto;}
  .hero--page .hero__title{font-size:23px;}
  .hero--page .hero__sub{width:100%;font-size:14.5px;}

  /* ===== 板块：上下留白砍掉近一半，改用内容密度撑节奏 ===== */
  .section{padding:52px var(--gutter);gap:22px;}
  .page-home .section{padding-top:40px;padding-bottom:40px;}
  .page-home .section--works{padding-top:24px;}
  .section__cn{font-size:25px;}
  .section__lead{font-size:14px;line-height:1.85;}
  .intro__line{font-size:16px;line-height:1.8;}
  .divider{width:auto;margin:36px var(--gutter);}
  .page-home .divider{margin:26px var(--gutter);}
  .divider--tight{margin:28px var(--gutter);}

  /* ===== 首页作品：图上文下；取消 60% 版心限制 ===== */
  .section--works > .section__en,
  .section--works > .section__cn,
  .section--works > .intro,
  .section--works > .works__head,
  .section--works > .works__list{width:100%;max-width:none;}
  .section--works > .divider{width:auto;margin:26px var(--gutter);}
  .section--works > .intro{margin:0 0 26px;}
  .works__list{gap:26px;}
  .work-row{flex-direction:column;align-items:stretch;gap:14px;}
  .work-row--flip{flex-direction:column;}
  .work-row__media{flex:0 0 auto;width:100%;}
  .work-row__title{font-size:18px;}
  .work-row__p{font-size:14px;line-height:1.8;}

  /* ===== 作品页：三列图墙降两列，head 由三格改单列 ===== */
  .works-stage{padding:40px 0 52px;}
  .works__block{width:100%;padding:0 var(--gutter);gap:18px;}
  .works__divider{width:auto;margin:32px var(--gutter);}
  .works__grid{grid-template-columns:repeat(2,1fr);gap:20px 14px;}
  .work-card__title{font-size:13.5px;}
  .works__head{grid-template-columns:1fr;gap:14px;}
  .works__head-text{grid-column:1;}
  .work-upload{grid-column:1;justify-self:stretch;}

  /* ===== 课程页 ===== */
  .paths{grid-template-columns:1fr;gap:14px;}
  .path-card{padding:24px 20px;}
  .path-card__title{font-size:17px;}
  .path-card__text{font-size:13.5px;line-height:1.8;}
  .course{padding:22px;gap:12px;}
  .course__title{font-size:17px;}
  .course__desc{font-size:13.5px;line-height:1.8;}
  .course__img{height:150px;}

  /* ===== 数据带：四项改 2×2 ===== */
  .stats{
    display:grid;grid-template-columns:repeat(2,1fr);
    gap:20px 12px;height:auto;padding:30px var(--gutter);
  }
  .stats__num{font-size:26px;}
  .stats__label{font-size:12.5px;}

  /* ===== 关于页：联盟企业改图上文下 ===== */
  /* 单列堆叠后，双列之间的竖虚线要收掉（否则会从卡片中间穿过去） */
  .partner-grid{gap:18px;}
  .partner-grid::before{display:none;}
  .partner-card{flex-direction:column;align-items:stretch;gap:13px;padding:16px;}
  .partner-card__media{flex:0 0 auto;width:100%;}
  .partner-card__name{font-size:17px;}
  .partner-card__text{font-size:13.5px;line-height:1.8;}
  .partner-card__recruit{font-size:12.5px;padding:4px 10px;}
  .about{flex-direction:column;align-items:stretch;gap:22px;padding:52px var(--gutter);}

  /* ===== 软件页 ===== */
  .sw-note{font-size:13.5px;line-height:1.85;}
  .sw-count{font-size:12.5px;}
  .sw-card__icon{flex:0 0 42px;width:42px;height:42px;}
  .sw-group__desc{font-size:13.5px;}

  /* ===== 资讯页：左右分栏改上下 ===== */
  .list__item{flex-direction:column;align-items:flex-start;gap:10px;padding:20px;}
  .list__meta{flex-wrap:wrap;gap:8px;}
  .list__hint{font-size:12px;}

  /* ===== 联系页：二维码适配窄屏 ===== */
  .chub--one .chub__card{padding:26px 18px;}
  .chub__qr{padding:10px;}
  .chub__qr img{width:min(240px,70vw);}
  .chub__hint{font-size:13px;}

  /* ===== 弹框：留出底部 dock 的位置 ===== */
  .sheet{padding:16px 12px;}
  .sheet__panel{padding:22px 18px;max-height:calc(100vh - 32px);}

  /* ===== 页脚：单列排布，底部加高给 dock 让位 ===== */
  .footer{padding:40px var(--gutter);gap:26px;}
  .footer--center{padding-bottom:calc(104px + env(safe-area-inset-bottom, 0px));}
  .footer__top{flex-direction:column;align-items:flex-start;gap:10px;}
  .footer__brand{font-size:14.5px;white-space:normal;line-height:1.6;}
  .footer__link{font-size:13px;white-space:normal;line-height:1.9;}
  .footer__bottom{padding-top:20px;}
  .footer__copy{font-size:12.5px;line-height:1.7;}
  /* 页脚文字导航：给链接一点可点感 */
  .footer__link a{border-bottom:1px solid transparent;transition:color .2s ease,border-color .2s ease;}
  .footer__link a:hover{color:var(--gold);border-bottom-color:var(--gold);}

  /* ===== 底部 dock：手机上的全站导航，7 项均分整行 ===== */
  .dock{
    left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom, 0px));
    transform:none;width:auto;max-width:none;
    justify-content:space-between;gap:0;padding:5px;
    border-radius:var(--radius-md);
    box-shadow:0 6px 22px rgba(16,24,40,.14);
  }
  .dock__item{
    flex:1 1 0;min-width:0;padding:9px 2px;
    font-size:12.5px;text-align:center;border-radius:var(--radius);
  }
  .dock__item--on{font-weight:700;}

  /* ===== 悬浮浮球：手机端整体不显示（屏幕窄，浮球会压住作品卡与正文） ===== */
  .float{display:none;}
  .float__btn{width:50px;height:50px;font-size:11.5px;}

  /* ===== 可读性：11px 的中文元信息统一提到 12px ===== */
  .work-card__meta,.list__tag,.sw-card__pill,.sw-card__desc{font-size:12px;}
  .hotbar .chip em{font-size:12px;}
}

/* ---------- 小屏兜底（iPhone SE / 安卓 360） ---------- */
@media (max-width:380px){
  :root{--gutter:16px;}
  .hero__title{font-size:24px;}
  .section__cn{font-size:22px;}
  .dock__item{font-size:12px;padding:9px 0;}
  .float__btn{width:46px;height:46px;font-size:11px;}
  .stats{gap:16px 8px;}
  .stats__num{font-size:23px;}
}

/* ---------- 移动端补充修正 ---------- */
@media (max-width:767px){
  /* 搜索框：input 自身仅 20px 高，撑满外层 44px 的胶囊 */
  .sw-search input{height:100%;}

  /* 页脚文字导航：行内链接本身只 52×20，撑出可点范围 */
  .footer__link a{display:inline-block;padding:6px 2px;margin:0 -2px;}
  .footer__link{line-height:2.4;}
}

/* ---------- 手机端精简：导航只留五项 / 顶栏品牌居中 / 软件页不再提供 ---------- */

@media (max-width:767px){
  /* 手机端只保留 5 大板块：「作品 · 课程 · 资讯 · 关于 · 联系」，按此顺序排列
     （order 重排，不动 HTML 结构）。首页/软件页在手机端不提供，见下方规则。 */
  .dock__item{display:none;}
  .dock__item[href="works.html"]{display:block;order:1;}
  .dock__item[href="courses.html"]{display:block;order:2;}
  .dock__item[href="news.html"]{display:block;order:3;}
  .dock__item[href="about.html"]{display:block;order:4;}
  .dock__item[href="contact.html"]{display:block;order:5;}

  /* 软件页在手机端不再提供：入口与链接一并隐藏（页面文件保留，电脑端照常）。
     注意：资讯页是手机端正式栏目，不能写进这条规则里。 */
  a[href="software.html"]{display:none;}

  /* 顶栏：顶部导航在窄屏已隐藏，品牌（logo + 企业名）整体居中 */
  .header{justify-content:center;}

  /* 顶栏右侧的「咨询报名」按钮在手机端隐藏：它占着右侧位置，logo 才挤不到正中间。
     手机上的报名入口仍在首屏按钮与底部导航「联系」里。 */
  .header .btn{display:none;}
}

/* =====================================================================
   作品页 · 讲师 / 学生作品网格（tab 切换 + 分页 + 跳转独立详情页）
   版式参照漫反设学院：三等分网格，图下标题 + 软件说明
   图片走对方 CDN 外链，列表用缩略图（?x-oss-process）控流量
   ===================================================================== */
.mfs{background:var(--bg);}

/* ---- 两个 tab ---- */
.mfs__tabs{
  display:flex;justify-content:center;gap:44px;
  border-bottom:1px solid var(--line);
  padding:0 var(--gutter);
}
.mfs__tab{
  position:relative;border:0;background:none;cursor:pointer;
  font:inherit;font-size:16px;font-weight:500;color:var(--muted);
  padding:18px 2px 16px;transition:color .2s ease;
}
.mfs__tab:hover{color:var(--text);}
.mfs__tab.is-on{color:var(--gold);font-weight:700;}
.mfs__tab.is-on::after{
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--gold);
}
.mfs__tab em{font-style:normal;font-size:12px;opacity:.7;margin-left:5px;}

/* ---- 网格 ---- */
.mfs__wrap{max-width:1560px;margin:0 auto;padding:48px var(--gutter) 40px;}
.mfs__grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:34px 26px;
}
.mfs-card{display:flex;flex-direction:column;text-decoration:none;color:inherit;min-width:0;}
.mfs-card__media{
  position:relative;display:block;width:100%;aspect-ratio:4/3;overflow:hidden;
  border-radius:var(--radius);background:linear-gradient(135deg,#e8ebf0,#dde2e9);
}
.mfs-card__media img{
  width:100%;height:100%;object-fit:cover;display:block;
  opacity:0;transition:opacity .4s ease,transform .5s var(--ease);
}
.mfs-card__media img[src]{opacity:1;}
.mfs-card:hover .mfs-card__media img{transform:scale(1.04);}
.mfs-card__title{
  margin:12px 0 0;font-size:14.5px;font-weight:600;color:var(--text);line-height:1.55;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.mfs-card__soft{
  margin:6px 0 0;font-size:12.5px;color:var(--muted);line-height:1.6;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}

/* ---- 分页 ---- */
.mfs__pager{display:flex;justify-content:center;align-items:center;gap:8px;margin:48px 0 0;flex-wrap:wrap;}
.mfs__pg{
  min-width:38px;height:38px;padding:0 12px;border:1px solid var(--line);border-radius:var(--radius);
  background:var(--panel);color:var(--text);font:inherit;font-size:13.5px;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  transition:border-color .2s ease,color .2s ease,background .2s ease;
}
.mfs__pg:hover:not(:disabled){border-color:var(--gold);color:var(--gold);}
.mfs__pg:disabled{opacity:.4;cursor:not-allowed;}
.mfs__pg.is-on{background:var(--gold);border-color:var(--gold);color:var(--gold-ink);font-weight:700;}
.mfs__pg--gap{border:0;background:none;cursor:default;padding:0 2px;}

.mfs__empty{padding:80px 0;text-align:center;color:var(--muted);font-size:14px;}

/* ---- 详情页 ---- */
.pd{background:var(--bg);}
.pd__head{max-width:1100px;margin:0 auto;padding:calc(var(--header-h) + 46px) var(--gutter) 0;}
.pd__back{
  display:inline-block;margin-bottom:20px;font-size:13px;color:var(--muted);
  text-decoration:none;transition:color .2s ease;
}
.pd__back:hover{color:var(--gold);}
.pd__title{margin:0 0 12px;font-size:27px;font-weight:700;color:var(--text);line-height:1.45;}
.pd__meta{display:flex;flex-wrap:wrap;gap:8px 22px;font-size:13px;color:var(--muted);}
.pd__body{max-width:1100px;margin:0 auto;padding:34px var(--gutter) 80px;}
.pd__body img{display:block;width:100%;height:auto;margin:0 0 14px;border-radius:var(--radius);}
.pd__foot{
  display:flex;justify-content:center;gap:14px;flex-wrap:wrap;
  margin:36px 0 0;padding-top:32px;border-top:1px solid var(--line);
}
.pd__count{text-align:center;font-size:13px;color:var(--muted);margin:0 0 22px;}

@media (max-width:1024px){
  .mfs__grid{grid-template-columns:repeat(2,1fr);gap:26px 18px;}
}
@media (max-width:767px){
  .mfs__tabs{gap:28px;}
  .mfs__tab{font-size:14.5px;padding:14px 2px 12px;}
  .mfs__wrap{padding:26px var(--gutter) 120px;}
  .mfs__grid{grid-template-columns:repeat(2,1fr);gap:18px 12px;}
  .mfs-card__title{font-size:12.5px;margin-top:9px;-webkit-line-clamp:2;}
  .mfs-card__soft{font-size:11px;margin-top:4px;-webkit-line-clamp:1;}
  .mfs__pager{gap:6px;margin-top:32px;}
  .mfs__pg{min-width:34px;height:34px;font-size:12.5px;padding:0 9px;}
  .pd__head{padding:calc(var(--header-h) + 26px) var(--gutter) 0;}
  .pd__title{font-size:19px;}
  .pd__body{padding:22px var(--gutter) 112px;}
  .pd__body img{margin-bottom:9px;border-radius:6px;}
}

/* ---- 详情页图组：图片只浏览，不可点击预览（2026-10-11）----
   原来每张图是 <a href=原图 target=_blank>，带「查看原图」悬浮提示。
   现在由 project-detail.js 渲染为 <span class="pd__shot">，这里补不可点样式：
   关掉手型光标、禁长按菜单、禁 tap 高亮、禁拖拽。PC 与手机同时生效。 */
.pd__shot{display:block;position:relative;
  -webkit-user-select:none;-moz-user-select:none;user-select:none;
  -webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;cursor:default;}
.pd__shot img{pointer-events:none;-webkit-user-drag:none;user-drag:none;}

/* =====================================================================
   江禾设计表现 · 企业介绍页（jianghe-visual.html）
   只新增「交付流程」与「工具链」两个组件，其余全部复用站点既有类
   ===================================================================== */
.jv-flow{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:26px 24px;width:100%;
}
.jv-flow__item{
  display:flex;flex-direction:column;gap:10px;
  padding:26px 26px 28px;border-radius:var(--radius-lg);
  background:var(--panel);border:1px solid var(--line);
  transition:transform .25s ease,border-color .25s ease;
}
.jv-flow__item:hover{
  transform:translateY(-4px);
  border-color:rgba(201,164,92,.38);
}
.jv-flow__no{
  font-size:13px;font-weight:700;color:var(--gold);
  letter-spacing:.08em;line-height:1;
}
.jv-flow__t{
  font-size:18px;font-weight:700;color:var(--text);line-height:1.4;
}
.jv-flow__d{
  font-size:14px;font-weight:400;color:var(--muted);line-height:1.8;
}
/* 工具链：标签云 */
.jv-stack{
  display:flex;flex-wrap:wrap;gap:12px;width:100%;
}
.jv-stack__tag{
  display:inline-flex;align-items:center;
  padding:9px 18px;border-radius:var(--radius-pill);
  background:var(--panel);border:1px solid var(--line);
  font-size:14px;font-weight:500;color:var(--text);line-height:1.4;
  transition:background .25s ease,color .25s ease,border-color .25s ease;
}
.jv-stack__tag:hover{
  background:var(--gold);border-color:var(--gold);color:var(--gold-ink);
}
/* 企业介绍页：CTA 卡内的返回链接 */
.works-cta .pd__back{margin-top:4px;font-size:14px;color:var(--muted);}

@media (max-width:1024px){
  .jv-flow{grid-template-columns:repeat(2,1fr);gap:22px 18px;}
  .jv-flow__t{font-size:17px;}
}
@media (max-width:767px){
  .jv-flow{grid-template-columns:1fr;gap:16px;}
  .jv-flow__item{padding:22px 22px 24px;}
  .jv-flow__t{font-size:16.5px;}
  .jv-flow__d{font-size:13.5px;line-height:1.75;}
  .jv-stack{gap:9px;}
  .jv-stack__tag{padding:7px 14px;font-size:13px;}
}

/* =====================================================================
   联盟企业墙 · 第三版（2026-10-08 晚）
   ① 形象照回归站点原生 620/463 横槽 —— 不再用 --portrait 改比例；
      竖幅源图靠 object-position:50% 28% 把面孔顶到画面上方，保证脸清楚。
   ② 双列之间加竖向虚线；每张卡用独立描边框架包裹（见上方 .partner-grid/.partner-card）。
   ===================================================================== */
/* 横槽里放竖幅人像：构图 100% 由裁切决定 ——
   素材已按 620/463 预裁好（比例与槽位完全一致），cover 时不会二次裁切，
   所以 object-position 在这里不起作用，别指望靠它调整取景，要改就改素材。
   当前构图：脸占画面高 57%、头顶留白 9%、下方 34% 为身体（胸像）。 */
.partner-card__photo{object-position:50% 50%;}

/* ---------------- 后台管理页（admin.html） ---------------- */
.admin__tab{width:100%;text-align:left;justify-content:flex-start;}
.admin__tab.is-on{border-color:var(--gold);color:var(--gold);}

/* ---------------- 登录引导弹层（云存储作品库） ---------------- */
.gate{position:fixed;inset:0;z-index:120;display:flex;align-items:center;justify-content:center;}
.gate__mask{position:absolute;inset:0;background:rgba(20,18,14,.62);backdrop-filter:blur(3px);}
.gate__panel{
  position:relative;width:min(420px,calc(100vw - 48px));
  background:var(--surface);border:1px solid var(--line);border-radius:var(--radius-lg);
  padding:40px 36px 32px;text-align:center;display:flex;flex-direction:column;gap:14px;
}
.gate__kicker{font-size:12px;font-weight:700;letter-spacing:.16em;color:var(--gold);}
.gate__title{font-size:22px;font-weight:700;color:var(--text);line-height:1.4;margin:0;}
.gate__text{font-size:14px;color:var(--muted);line-height:1.8;margin:0;}
.gate__btn{width:100%;height:50px;border-radius:var(--radius);margin-top:8px;}
.gate__cancel{background:none;border:0;color:var(--muted-2);font-size:13px;cursor:pointer;padding:6px;}
.gate__cancel:hover{color:var(--muted);}

/* ---------------- 后台：图片入库进度 ---------------- */
.admin__row{display:flex;gap:16px;align-items:flex-end;flex-wrap:wrap;}
.migbar{height:10px;border-radius:var(--radius-pill);background:var(--panel-2);overflow:hidden;width:100%;}
.migbar__fill{display:block;height:100%;width:0;background:var(--gold);transition:width .3s ease;}
.miglog{
  margin:0;padding:14px 16px;border-radius:var(--radius);background:var(--panel-2);
  border:1px solid var(--line);color:var(--muted);font-size:12px;line-height:1.7;
  max-height:200px;overflow:auto;white-space:pre-wrap;font-family:var(--font-mono,monospace);
}
