/* ====== 学美直聘 · PC 共享样式（令牌与定稿首页一致）====== */
:root{
  /* T33 token 化新增 */ --tag-on-bg:#FFF1E8;--live-badge:#E11D48;--video-bg:#0B1220;--blue-bright:#3B82F6;--audit-ok:#1E9E62;
  /* T33 token 化新增 */ --on-color:#fff;--topbar-bg:#F5F2EE;--online:#22C55E;
  /* T33 token 化新增（第 3 批 company/job/user —— 状态描边、禁用底、骨架屏、整条渐变）*/
  --success-line:#BBF7D0;--warning-line:#FDE68A;--blue-line:#BBD2F2;--danger:#E54848;
  --btn-disabled-bg:#E8E5DF;--skeleton-bg:#F0E9E1;
  /* 品牌橙渐变 120° 版：与 --grad 同两色、角度不同（会员横幅 / 老站 120deg 用法）。
     ⚠ 刻意不叫 --grad-banner：index.html 自带一个同名 token，但值是黄橙渐变，
       两处分属不同样式表不冲突，可同名异义会误导后来人。 */
  --grad-brand-120:linear-gradient(120deg,#FF8A3D 0%,#F04A12 100%);
  --grad-blue-soft:linear-gradient(180deg,#F5F9FF,#EEF4FE);
  --skeleton-stripe:repeating-linear-gradient(90deg,#E8E2DA 0 6px,#F2EDE6 6px 12px);
  --brand:#F4681D;--brand-dark:#E1560F;--brand-deep:#C4470B;
  --brand-50:#FFF7F1;--brand-100:#FFE8D6;--brand-200:#FFCFA8;--brand-300:#FFB080;
  --grad:linear-gradient(135deg,#FF8A3D 0%,#F04A12 100%);
  --grad-soft:linear-gradient(135deg,#FFF4EC 0%,#FFE4D0 100%);
  --bg:#F7F6F3;--surface:#fff;
  --line:#EEE9E2;--line-strong:#E0D8CE;
  /* T42 新增：供 assets/*.js 动态内联样式使用（city-cat / cat-tree / member-file / talent-modal）。
     ⚠ 这四个资产的消费页只有两处定义源：本文件 与 index.html 自带 :root（它不引 common.css）。
        新增 token 必须两处都登记，漏一处 → 那边整条声明作废、元素变透明。
     命名沿用现有阶梯（数字越大越深），值一律照抄原裸色值，不合并不归并 ——
     合并就等于改设计，不是「零视觉影响」。 */
  --brand-strong:#F04A12;--brand-25:#FFF1E7;--brand-line:#F5E2D2;--brand-ink:#8A5A2B;
  --ink-850:#2E2119;--ink-650:#4A403A;--ink-460:#8A7E72;--ink-450:#8A8378;
  --ink-350:#B0A497;--ink-340:#B0A99C;--ink-290:#C9BCAE;--ink-neutral:#8C8C8C;
  --line-2:#F0EAE2;--line-3:#E5D8C8;--line-4:#EEE5DC;--line-hover:#F3EAE0;
  --surface-warm:#FAF6F1;--surface-warm-2:#FAF7F3;--surface-gray:#F2F2F2;
  --success-deep:#1E9E55;--success-mid:#3A9D5D;--success-soft:#E8F7EE;
  --warning-soft:#FFF4E0;--warning-deep:#C87B12;--danger-deep:#C24A0E;
  --ink-900:#1A1410;--ink-700:#3D3229;--ink-500:#7A6E63;--ink-400:#A39689;--ink-300:#C7BBAE;
  --success:#16A34A;--success-bg:#ECFDF5;
  --warning:#D97706;--warning-bg:#FFFBEB;
  --blue:#2563EB;--blue-bg:#EFF6FF;
  /* T49 新增：值一律照抄「当前兜底值」，故本次改动零视觉影响。
     --red         ← 本文件 :196 `.xdr-fail{color:var(--red,#D0552B)}` 的现兜底值
     --brand-soft  ← talent.html:10 `.fl-tag.on{background:var(--brand-soft, #FFF1E8)}` 的现兜底值
     新增后 :root 成为唯一真源，原先散落的兜底退化为守门员（删定义也不漂色）。
     ⚠ admin/index.html 是自包含单文件（不引 common.css），其 7 处 var(--red) 需自行登记一份，
       本批未动该文件 —— 见 T49 交付报告「未完成项」。 */
  --red:#D0552B;--brand-soft:#FFF1E8;
  --font-sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Noto Sans SC",system-ui,-apple-system,sans-serif;
  --font-num:"DIN Alternate","Roboto","SF Mono",ui-monospace,Menlo,Consolas,sans-serif;
  --r-md:6px;--r-lg:8px;--r-xl:12px;--r-pill:999px;
  --sh-sm:0 1px 2px rgba(26,20,16,.04),0 1px 3px rgba(26,20,16,.06);
  --sh-md:0 4px 12px rgba(26,20,16,.06),0 2px 4px rgba(26,20,16,.04);
  --sh-lg:0 12px 32px rgba(244,104,29,.12),0 4px 12px rgba(26,20,16,.06);
  --max:1280px;--pad:clamp(16px,3vw,32px);
}
*{box-sizing:border-box;margin:0;padding:0}
body{font-family:var(--font-sans);background:var(--bg);color:var(--ink-900);font-size:14px;line-height:1.6;-webkit-font-smoothing:antialiased}
a{text-decoration:none;color:inherit;transition:color .15s ease}
ul,ol{list-style:none}
button{font-family:inherit;cursor:pointer;border:0;background:none}
img{max-width:100%;display:block}
.num{font-family:var(--font-num);font-variant-numeric:tabular-nums}
.container{max-width:var(--max);margin:0 auto;padding:0 var(--pad)}

/* topbar / header / nav —— 2026-10-22 修正「子页页头与定稿首页不一致」：样式整体替换为首页同构版
   （此前子页是另一套简化结构：无城市选择、搜索 Tab 是 职位/人才/企业 三项、无热门搜索行、
   导航是灰字 navbar 而非首页橙底 nav-cat，用户截图报「页头乱了，没有按照首页的来」）。 */
/* 2026-10-24 与首页同批：topbar 底色改浅灰 #F5F2EE（用户框选要求），文字反转深色系 */
.topbar{background:var(--topbar-bg);color:var(--ink-500);font-size:12px;border-bottom:1px solid var(--line)}
.topbar .container{display:flex;justify-content:space-between;align-items:center;height:36px}
.topbar-city{display:flex;align-items:center;gap:6px;color:var(--ink-500);margin-right:14px}
.tc-icon{font-size:13px}
/* 第32批：城市下拉由 assets/city-cat.js 面板接管，原 .tc-select 死样式已摘除 */
.topbar-welcome{color:var(--ink-700);letter-spacing:.2px}
.topbar-links{display:flex;gap:20px;align-items:center}
.topbar-links a{color:var(--ink-500)}
.topbar-links a:hover{color:var(--brand)}
.topbar-links .hot{color:var(--brand);font-weight:500}
/* 子页登录态容器：layout.js 把它包成一个 span，父级 gap 传不进去，
   导致「请登录免费注册」「昵称退出」粘成一串（首页直挂 a 所以没这问题）。 */
#xmAuthTop{display:inline-flex;align-items:center;gap:20px}
/* 第57批：页头吸附——topbar+header 包进 .xm-head-sticky（body 直接子级）吸顶常驻，
   nav 不参与吸附、随页面滚走（用户指令：页头功能永远在，导航不需要出现）。
   原方案 .header 自身 sticky 失效根因：header 被包在 layout.js 的短 wrapper 里，
   sticky 只在包含块内生效，wrapper 滚出视口后 header 跟着滚走。 */
.xm-head-sticky{position:sticky;top:0;z-index:100}
.header{background:var(--surface);border-bottom:1px solid var(--line);box-shadow:0 2px 12px rgba(26,20,16,.04)}
.header .container{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:32px;padding:14px var(--pad);min-height:100px}
.logo{display:flex;align-items:center}
.logo-img{height:72px;width:auto;max-width:220px;object-fit:contain;display:block;flex:none}
.header-search{display:flex;flex-direction:column;gap:8px;min-width:0}
.hs-tabs{display:flex;gap:6px}
.hs-tab{padding:4px 14px;border-radius:var(--r-pill);font-size:14px;color:var(--ink-500);font-weight:500;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:5px;background:none;border:0;font-family:inherit}
.hs-tab.active{background:var(--brand-50);color:var(--brand);font-weight:600}
.hs-tab:hover:not(.active){color:var(--ink-700)}
/* 2026-10-22：overflow:hidden 会把 #hsCatMenu 下拉整体裁没（菜单绝对定位于 .hs-cat 内、
   top:100% 超出容器），用户永远看不到四项分类。改 overflow:visible，
   圆角改由首尾子元素各自承担，外观不变、下拉可见。 */
.hs-box{display:flex;height:48px;border:2px solid var(--brand);border-radius:var(--r-md);overflow:visible;box-shadow:0 4px 14px rgba(244,104,29,.12);position:relative}
.hs-cat{display:flex;align-items:center;gap:6px;padding:0 18px;border-right:1px solid var(--line);font-size:15px;color:var(--ink-900);font-weight:500;cursor:pointer;background:var(--brand-50);white-space:nowrap;border-radius:calc(var(--r-md) - 2px) 0 0 calc(var(--r-md) - 2px)}
.hs-cat::after{content:"▾";font-size:10px;color:var(--ink-400);margin-left:2px}
.hs-input{flex:1;display:flex;align-items:center;padding:0 16px;min-width:0}
.hs-input input{flex:1;border:0;outline:0;font-size:15px;font-family:inherit;background:transparent;color:var(--ink-900);width:100%}
.hs-input input::placeholder{color:var(--ink-400)}
.hs-btn{width:118px;background:var(--grad);color:var(--on-color);font-size:17px;font-weight:700;border:0;cursor:pointer;transition:filter .15s;letter-spacing:3px;flex:none;font-family:inherit;border-radius:0 calc(var(--r-md) - 2px) calc(var(--r-md) - 2px) 0}
.hs-btn:hover{filter:brightness(1.05)}
.hs-hot{display:flex;align-items:center;gap:14px;font-size:12px;color:var(--ink-400);flex-wrap:wrap}
.hs-hot b{color:var(--ink-500);font-weight:500}
.hs-hot a{color:var(--ink-500);transition:color .12s}
.hs-hot a:hover{color:var(--brand)}
.header-actions{display:flex;flex-direction:column;gap:10px;align-items:flex-end;justify-content:center}
.header-actions-top{display:flex;gap:14px;font-size:13px;color:var(--ink-500);align-items:center}
.header-actions-top a{color:var(--ink-500);white-space:nowrap}
.header-actions-top a:hover{color:var(--brand)}
.header-actions-top .divider{color:var(--line-strong)}
.header-actions-btns{display:flex;gap:10px}
/* nav：与首页 .nav 同构（橙底分类入口 + 链接组 + 在线统计）；旧 .navbar 简化版已弃用移除 */
.nav{background:var(--surface);border-bottom:1px solid var(--line)}
.nav .container{display:flex;align-items:center;gap:0;height:46px}
.nav-cat{flex:none;display:flex;align-items:center;gap:8px;padding:0 20px;height:46px;background:var(--brand);color:var(--on-color);font-weight:600;font-size:14px;cursor:pointer;position:relative;margin-right:8px;text-decoration:none}
.nav-cat::after{content:"▾";font-size:10px;margin-top:1px;opacity:.8}
.nav-links{display:flex;gap:2px;flex:1}
.nav-links a{display:flex;align-items:center;height:46px;padding:0 16px;font-size:14px;color:var(--ink-700);font-weight:500;border-bottom:2px solid transparent;transition:all .15s}
.nav-links a:hover{color:var(--brand)}
.nav-links a.active{color:var(--brand);border-bottom-color:var(--brand)}
.nav-online{flex:none;font-size:12px;color:var(--ink-500);display:flex;align-items:center;gap:6px}
.nav-online .dot{width:6px;height:6px;border-radius:50%;background:var(--online);box-shadow:0 0 0 3px rgba(34,197,94,.15)}
.nav-online b{color:var(--brand);font-family:var(--font-num);font-size:14px;font-weight:700}
.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:var(--r-md);font-weight:600;transition:all .15s}
.btn-primary{background:var(--grad);color:var(--on-color);box-shadow:0 4px 12px rgba(244,104,29,.3)}
.btn-primary:hover{filter:brightness(1.05);box-shadow:0 6px 16px rgba(244,104,29,.4)}
.btn-ghost{border:1px solid var(--brand);color:var(--brand)}
.btn-ghost:hover{background:var(--brand-50)}
.btn-sm{height:38px;padding:0 22px;font-size:14px}
.btn-lg{height:48px;padding:0 32px;font-size:16px}
.btn-block{width:100%}

/* footer */
.footer{background:var(--ink-900);color:var(--ink-300);margin-top:48px;padding:40px 0 24px;font-size:13px}
.footer-grid{display:grid;grid-template-columns:2fr 1fr 1fr 1fr;gap:32px}
.footer h4{color:var(--on-color);font-size:15px;margin-bottom:12px}
.footer a{display:block;color:var(--ink-300);padding:3px 0}
.footer a:hover{color:var(--brand-200)}
.footer-brand{font-size:20px;color:var(--on-color);font-weight:700}
.footer-sub{color:var(--ink-400);margin:6px 0 12px}
.footer-bottom{border-top:1px solid rgba(255,255,255,.08);margin-top:28px;padding-top:16px;display:flex;justify-content:space-between;color:var(--ink-400);font-size:12px;flex-wrap:wrap;gap:8px}

/* 面包屑 & 页头 */
.crumb{padding:14px 0;color:var(--ink-500);font-size:13px}
.crumb a:hover{color:var(--brand)}
.page-title{font-size:22px;font-weight:700;margin-bottom:4px}

/* 职位卡片（与首页同构） */
.jobs-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.job-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-lg);padding:16px 18px;cursor:pointer;transition:all .15s}
.job-card:hover{border-color:var(--brand-200);box-shadow:var(--sh-md);transform:translateY(-1px)}
.job-card-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.job-card-title{font-size:16px;font-weight:600;color:var(--ink-900);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.job-card-salary{color:var(--brand);font-weight:700;font-size:16px;font-family:var(--font-num);white-space:nowrap}
.job-card-meta{display:flex;gap:12px;color:var(--ink-500);font-size:13px;margin-top:8px}
.job-card-welfare{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;min-height:22px}
.welfare-tag{background:var(--brand-50);color:var(--brand);font-size:12px;padding:1px 8px;border-radius:var(--r-pill)}
.job-card-foot{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:10px;border-top:1px dashed var(--line);color:var(--ink-500);font-size:13px}
.jc-company{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 通用面板/表单 */
.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-xl);padding:24px}
.panel+.panel{margin-top:16px}
.panel h3{font-size:17px;font-weight:700;margin-bottom:14px;padding-left:10px;border-left:3px solid var(--brand)}
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;color:var(--ink-700);margin-bottom:6px}
.field input,.field select,.field textarea{width:100%;height:42px;border:1px solid var(--line-strong);border-radius:var(--r-md);padding:0 12px;font-size:14px;font-family:inherit;outline:none;transition:border .15s}
.field textarea{height:auto;padding:10px 12px;min-height:96px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--brand);box-shadow:0 0 0 3px var(--brand-50)}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.tag{display:inline-flex;align-items:center;padding:2px 10px;border-radius:var(--r-pill);font-size:12px}
.tag-brand{background:var(--brand-50);color:var(--brand)}
.tag-green{background:var(--success-bg);color:var(--success)}
.tag-blue{background:var(--blue-bg);color:var(--blue)}
.tag-warn{background:var(--warning-bg);color:var(--warning)}
.empty{padding:60px 0;text-align:center;color:var(--ink-400)}

/* ====== 通用右侧抽屉（第四十一批，企业/简历共用，z-index 200 高于会员档案抽屉 99）======
   布局：100vh，头部固定 + Tab 吸顶 + 内容区独立滚动；左缘悬浮 ✕ 为老站位置。 */
.xdr-mask{position:fixed;inset:0;background:rgba(17,12,8,.34);z-index:200;opacity:0;transition:opacity .18s ease}
.xdr-mask.on{opacity:1}
.xdr-panel{position:fixed;top:0;right:0;height:100vh;max-width:96vw;background:var(--surface,#fff);z-index:201;
  display:flex;flex-direction:column;box-shadow:-18px 0 48px rgba(26,20,16,.22);
  transform:translateX(100%);transition:transform .24s cubic-bezier(.22,.61,.36,1)}
.xdr-panel.on{transform:translateX(0)}
.xdr-head{flex:none;padding:16px 20px 14px;border-bottom:1px solid var(--line);background:var(--surface,#fff)}
.xdr-tabs{flex:none;display:flex;gap:2px;padding:0 12px;border-bottom:1px solid var(--line);
  background:var(--surface,#fff);overflow-x:auto;scrollbar-width:none}
.xdr-tabs::-webkit-scrollbar{display:none}
.xdr-tab{flex:none;padding:10px 14px;font-size:13px;color:var(--ink-500);cursor:pointer;
  border-bottom:2px solid transparent;white-space:nowrap;transition:color .15s,border-color .15s}
.xdr-tab:hover{color:var(--ink-700)}
.xdr-tab.on{color:var(--brand);border-bottom-color:var(--brand);font-weight:600}
.xdr-body{flex:1;overflow:auto;padding:16px 20px}
.xdr-close{position:absolute;top:14px;left:-46px;width:34px;height:34px;border:1px solid rgba(255,255,255,.5);
  border-radius:50%;background:rgba(17,12,8,.42);color:var(--on-color);font-size:15px;cursor:pointer;line-height:1;
  display:flex;align-items:center;justify-content:center;transition:background .15s}
.xdr-close:hover{background:rgba(17,12,8,.72)}
/* 数据态：每块独立 loading / 失败 / 空，单块失败不影响其它块 */
.xdr-box{border:1px solid var(--line);border-radius:10px;padding:12px 14px;margin-bottom:12px;background:var(--surface,#fff)}
.xdr-box h4{margin:0 0 8px;font-size:13px;color:var(--ink-700);font-weight:700}
.xdr-loading{font-size:13px;color:var(--ink-400);padding:10px 0}
.xdr-fail{font-size:13px;color:var(--red,#D0552B);padding:10px 0}
.xdr-none{font-size:13px;color:var(--ink-400);padding:10px 0}
.xdr-todo{font-size:12px;color:var(--ink-400);background:var(--bg,#F7F6F3);border-radius:6px;padding:10px 12px}
.xdr-kv{display:grid;grid-template-columns:110px 1fr;gap:6px 12px;font-size:13px}
.xdr-kv dt{color:var(--ink-500)}
.xdr-kv dd{margin:0;color:var(--ink-700);word-break:break-all}
.xdr-tbl{width:100%;border-collapse:collapse;font-size:13px}
.xdr-tbl th{text-align:left;color:var(--ink-500);font-weight:600;padding:6px 10px 6px 0;border-bottom:1px solid var(--line)}
.xdr-tbl td{padding:6px 10px 6px 0;border-bottom:1px solid var(--line);color:var(--ink-700)}
@media(max-width:900px){
  .xdr-panel{width:100%!important;max-width:100%!important}
  .xdr-close{left:12px;top:12px}
}
