:root{--brand:#16a34a;--brand-dark:#15803d;--brand-light:#dcfce7;--urgent:#e11d48;--urgent-light:#ffe4e6;--employer:#d97706;--employer-light:#fef3c7;--accent:#f97316;--accent-dark:#c2410c;--accent-light:#ffedd5;--info:#4f46e5;--info-dark:#3730a3;--info-light:#eef2ff;--bg:#fff;--surface:#fff;--text:#1a1f2b;--muted:#6b7280;--border:#e5e8eb;--shadow-sm:0 1px 2px #1018280f;--shadow-md:0 4px 12px #10182814;--radius:12px;--radius-sm:5px;--header-h:60px}
*{box-sizing:border-box;min-width:0}
/* overflow-anchor:none — khi .header-search-band co/giãn theo scroll (nav-condensed) trong lúc
   còn nằm 1 phần trong khung nhìn, "scroll anchoring" mặc định của trình duyệt tự bù trừ lại
   scrollY để giữ nguyên vị trí nội dung đang thấy -> đúng lúc đó lại kéo scrollY qua ngưỡng
   IN/OUT, tự kích hoạt lại handler -> vòng lặp giật liên tục (KHÔNG dừng), nặng hơn hẳn so với
   hiện tượng "flash" ban đầu. Tắt hẳn scroll anchoring toàn trang để loại vòng lặp này. */
html{scroll-behavior:smooth;overflow-anchor:none}
/* overflow-x:hidden trên body BIẾN body thành scroll-container -> phá 'position:sticky' của
   .site-header (thanh menu không dính theo màn hình khi cuộn). overflow-x:clip chặn cuộn
   ngang y hệt nhưng KHÔNG tạo scroll-container -> sticky hoạt động. 'hidden' để lại làm
   fallback cho trình duyệt quá cũ không hiểu 'clip'. */
html,body{max-width:100%;overflow-x:hidden;overflow-x:clip}
body{margin:0;font-family:-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;background:var(--bg);color:var(--text);line-height:1.3}
a{color:var(--brand-dark);text-decoration:none}
a:hover{color:var(--brand)}
img{max-width:100%;display:block}
.container{max-width:1120px;margin:0 auto;padding:0 5px}
.site-header{position:sticky;top:0;z-index:100;background:var(--surface);border-bottom:1px solid var(--border)}
.navbar{width:100%;min-height:var(--header-h);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:16px;padding:0 clamp(16px,4vw,48px);background:var(--brand-dark)}
/* 2 cột biên đều 1fr -> cột giữa (auto: Logo, hoặc ô tìm kiếm khi cuộn xuống) LUÔN cân giữa
   TRANG, không lệch theo bề rộng .navbar-actions. Trên desktop .burger + ô search-slot ẩn
   (display:none) nên 3 grid item còn lại rơi đúng 3 cột theo thứ tự nguồn:
   .site-menu (justify-self:start) | .brand hoặc slot (giữa) | .navbar-actions (justify-self:end). */
.navbar .brand{justify-self:center;font-weight:800;font-size:1.4rem;color:#fff;letter-spacing:-.02em;white-space:nowrap}
.navbar-search-slot{display:none}
.navbar-actions{justify-self:end;display:flex;align-items:center;gap:14px}
.navbar-actions .divider{width:1px;height:30px;background:#ffffff40;flex-shrink:0}
.navbar-actions .nav-cta{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.navbar-actions .nav-cta-label{font-size:.72rem;font-weight:600;color:#ffffffbf;text-transform:uppercase;letter-spacing:.03em;white-space:nowrap}
.navbar-actions .btn-outline{padding:7px 14px;border-radius:var(--radius-sm);font-size:.88rem;font-weight:600;color:#fff;border:1.5px solid #fff9;white-space:nowrap}
.navbar-actions .btn-outline:hover{background:#ffffff1f;color:#fff}
.navbar-actions .btn-solid{padding:8px 16px;border-radius:var(--radius-sm);font-size:.88rem;font-weight:700;color:#fff;background:linear-gradient(135deg,var(--accent),var(--accent-dark));box-shadow:0 2px 8px #f973164d;white-space:nowrap;transition:transform .15s,box-shadow .15s}
.navbar-actions .btn-solid:hover{color:#fff;filter:brightness(1.06);box-shadow:0 4px 12px #f973166b;transform:translateY(-1px)}
@media (prefers-reduced-motion: reduce) {
.navbar-actions .btn-solid{transition:none}
}
/* Desktop: khi cuộn xuống, thay Logo trong navbar bằng ô tìm kiếm (giống bản mobile) và ẩn
   dải tìm kiếm lớn. Class 'nav-condensed' do pv-search.js gắn/gỡ theo scroll, chỉ ở >=641px. */
body.nav-condensed .navbar .brand,body.pv-detail-search .navbar .brand{display:none}
/* Trước đây display:none tức thời -> cả dải tìm kiếm lớn biến mất/xuất hiện đột ngột lúc cuộn
   qua ngưỡng, nhức mắt (đặc biệt trang chủ, dải này cao). Thay bằng collapse mượt qua
   grid-template-rows 1fr->0fr (co theo chiều cao NGUYÊN của nội dung, không cần JS đo px) +
   fade opacity + ẩn viền dưới. .container bên trong cần overflow/min-height:0 mới co được. */
.header-search-band{display:grid;grid-template-rows:1fr;transition:grid-template-rows .32s ease,opacity .22s ease,border-color .32s ease,padding-top .32s ease,padding-bottom .32s ease,visibility 0s linear 0s}
.header-search-band>.container{overflow:visible;min-height:0}
/* Khi dải search đang co về 0 thì vẫn cần cắt nội dung; lúc hiển thị phải
   cho các dropdown dạng popover tràn xuống phần kết quả bên dưới. */
body.nav-condensed .header-search-band:not(.pv-band-force-visible)>.container,
body.pv-detail-search .header-search-band:not(.pv-band-force-visible)>.container{overflow:hidden}
body.nav-condensed .header-search-band{grid-template-rows:0fr;opacity:0;border-bottom-color:transparent;padding-top:0;padding-bottom:0;visibility:hidden;transition:grid-template-rows .32s ease,opacity .22s ease,border-color .32s ease,padding-top .32s ease,padding-bottom .32s ease,visibility 0s linear .32s}
/* Trang chi tiết (job_detail): dải search lớn ẩn HẲN ngay từ lần vẽ đầu (class đặt server-side)
   — không transition co giãn, ô search sống trong navbar. */
body.pv-detail-search .header-search-band{grid-template-rows:0fr;opacity:0;border-bottom-color:transparent;padding-top:0;padding-bottom:0;visibility:hidden;transition:none}
@media (prefers-reduced-motion: reduce) {
.header-search-band,body.nav-condensed .header-search-band{transition:none}
}
/* Middle grid track (auto) chỉ co theo nội dung intrinsic (width:100% trên form con không
   tính vào intrinsic size) -> ô search bị hẹp bất kể màn hình rộng. Ép cột giữa = 80% bề ngang
   navbar khi thu gọn, 2 cột biên (1fr) chia đều 20% còn lại. */
body.nav-condensed .navbar,
body.pv-detail-search .navbar{grid-template-columns:1fr 80% 1fr}
/* Khi search đã thu vào navbar: cân hai vùng biên theo cùng một độ rộng để
   ô search luôn nằm đúng tâm màn hình. Bên trái là Hamburger, bên phải là
   Yêu thích + Thông báo; Thành viên được ẩn trong trạng thái này. */
body.nav-condensed .navbar,
body.pv-detail-search .navbar{grid-template-columns:96px minmax(0,1fr) 96px}
body.nav-condensed .site-menu,
body.pv-detail-search .site-menu{width:96px}
body.nav-condensed .navbar-actions,
body.pv-detail-search .navbar-actions{width:96px;gap:14px}
body.nav-condensed .navbar-actions .identity-chip,
body.pv-detail-search .navbar-actions .identity-chip{display:none}
body.nav-condensed .navbar-search-slot:not([hidden]),
body.pv-detail-search .navbar-search-slot:not([hidden]){display:flex;justify-content:center;min-width:0}
body.nav-condensed .navbar-search-slot .header-search-form,
body.pv-detail-search .navbar-search-slot .header-search-form{flex-wrap:nowrap;width:100%;max-width:none;margin:0;height:40px;padding:0 8px 0 18px;border-radius:var(--radius);box-shadow:none}
body.nav-condensed .navbar-search-slot .hsf-icon,
body.pv-detail-search .navbar-search-slot .hsf-icon{order:0}
body.nav-condensed .navbar-search-slot .hsf-textarea,
body.pv-detail-search .navbar-search-slot .hsf-textarea{order:0;min-height:0;height:100%;padding:0 8px;line-height:40px;font-size:.95rem;white-space:nowrap;overflow:hidden}
body.nav-condensed .navbar-search-slot .search-mode-switch,
body.nav-condensed .navbar-search-slot .sms-select,
body.nav-condensed .navbar-search-slot .hsf-submit-min,
body.pv-detail-search .navbar-search-slot .search-mode-switch,
body.pv-detail-search .navbar-search-slot .sms-select,
body.pv-detail-search .navbar-search-slot .hsf-submit-min{display:none}

/* QUY TẮC CHUNG — nút "⚙ Bộ lọc" cạnh phải ô nhập, hiện khi ô search ĐÃ THU vào navbar
   (nav-condensed: cuộn xuống trang chủ/danh mục/tỉnh; pv-detail-search: trang chi tiết;
   mobile: luôn). Ẩn khi bảng lọc đang ghim (pv-filters-pinned — panel đã có nút ✕). */
.hsf-filter-btn{display:none}
body.nav-condensed .navbar-search-slot .hsf-filter-btn,
body.pv-detail-search .navbar-search-slot .hsf-filter-btn{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;order:1;height:30px;padding:0 12px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;color:var(--brand-dark);font-size:.85rem;font-weight:600;cursor:pointer;white-space:nowrap}
body.nav-condensed .navbar-search-slot .hsf-filter-btn:hover,
body.pv-detail-search .navbar-search-slot .hsf-filter-btn:hover{border-color:var(--brand);background:var(--brand-light)}
body.pv-filters-pinned .hsf-filter-btn{display:none!important}
/* mobile: ô search luôn trong navbar (không cần nav-condensed) -> nút vẫn hiện, thu gọn nhãn chữ. */
@media (max-width:640px){
  .navbar-search-slot .hsf-filter-btn,
  .navbar-search-slot .hsf-filter-btn .hsf-filter-btn-label{display:none}
}

/* Thanh "✕ Ẩn bộ lọc" — hàng ĐẦU của panel lọc đang ghim, nút dồn phải trong cột nội dung.
   Nút chữ RÕ RÀNG (không còn chỉ là ✕ nhỏ position:fixed người dùng không thấy). KHÔNG khoá
   cuộn nền (người dùng chốt): nội dung đã bị đẩy xuống đúng chiều cao panel. */
.home-search-box.is-pinned .pv-pin-closebar{display:flex;justify-content:flex-end;margin-bottom:4px}
.pv-pin-close{display:inline-flex;align-items:center;gap:4px;height:24px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;color:var(--brand-dark);font-size:.76rem;font-weight:600;line-height:1;cursor:pointer}
.pv-pin-close:hover{border-color:var(--brand);background:var(--brand-light)}
/* ============================================================================================
   QUY TẮC DÙNG CHUNG cho MỌI panel lọc dạng danh sách mở-inline (ngành nghề, kỹ năng, tỉnh/
   thành... — bất kỳ [data-choice-panel]/.cat-panel nào, kể cả panel lương .salary-range-panel
   cùng cơ chế) — ÁP DỤNG ĐỒNG NHẤT bất kể đang ghim hay không (2026-09-15, gộp từ rule riêng
   is-pinned trước đó): panel LUÔN render TRONG LUỒNG (position:static), KHÔNG bao giờ
   position:absolute đè lên nội dung bên dưới. Lý do đổi:
   1) position:absolute (kiểu cũ ở trạng thái KHÔNG ghim) đè lên các ô lọc khác cùng hàng (VD
      "Sắp xếp"/"Tìm kiếm" ở hàng dưới) — z-index có xếp đúng thứ tự thì phần bị che vẫn LÒI RA
      2 bên vì panel không phủ hết bề ngang/chiều cao thật của những gì nó đè lên -> nhìn vỡ,
      không phải lỗi z-index mà là lỗi CƠ CHẾ (chỉ tăng z-index không sửa được).
   2) In-flow (đẩy nội dung xuống, không đè) mới là cơ chế ĐÚNG — đã áp dụng sẵn cho mobile
      (media max-width:640px) từ trước, giờ đồng bộ luôn cho desktop, mọi trạng thái ghim. Chính
      .cat-panel/.salary-range-panel (site.css, gần .filter-slot) đã đổi base rule sang
      position:static trực tiếp — không cần override riêng ở đây nữa.

   Panel trong luồng làm .filter-slot--cat/.salary-range khi mở cao hẳn lên
   (~400px+) NHƯNG vẫn là 1 flex item bình thường trong .home-filter-row (flex-wrap +
   align-items:center) -> các ô lọc khác lỡ chung 1 "hàng" với nó bị CĂN GIỮA theo chiều cao
   khủng đó, trôi lung tung khắp hàng (không phải wrap xuống dòng như nhìn tưởng). Ép nó CHIẾM
   NGUYÊN 1 HÀNG khi mở để cô lập, tránh kéo lệch các ô lọc còn lại.
   Rule 2 (:has) LÀ PHẦN CHUNG bắt buộc: khi combobox này bị LỒNG trong 1 .filter-slot khác
   (VD tỉnh/thành nằm trong .filter-slot--loc — filter-slot--cat không phải con trực tiếp của
   .home-filter-row nên rule 1 không tự áp dụng lên nó), chính cái SLOT CHA đó mới là flex item
   thật của .home-filter-row và phải là bên chiếm hàng — dùng :has() để không cần sửa riêng từng
   nơi lồng (đã dùng :has() sẵn ở .radio-toggle-option, xem trên). */
/* z-index: panel giờ trong luồng, không cần đè lên hàng xóm cùng hàng nữa (đẩy xuống, không
   chồng) — chỉ giữ z-index THẤP (1) để chắc chắn nổi trên nội dung TRANG ngay bên dưới
   .home-search-box (kết quả tìm kiếm, thẻ gợi ý...) phòng khi viền/bóng đổ chạm mép. KHÔNG
   dùng số tuỳ tiện lớn dần mỗi lần thêm dropdown mới (nguồn "chiến tranh z-index" khó bảo trì). */
/* Các panel mở là popover, không tham gia vào phép tính chiều cao của dãy filter. */
.home-search-box .filter-slot--cat.is-open,
.home-search-box .salary-range[data-open="1"]{position:relative;z-index:20}
/* Khi dropdown tỉnh/ngành mở ở đầu trang, nó phải nổi trên block nội dung kế tiếp.
   Trạng thái ghim đã có stacking context riêng; rule này dành cho home-search-box chưa ghim. */
.header-search-band:has(.home-search-box .cat-panel:not([hidden])),
.header-search-band:has(.home-search-box .salary-range-panel:not([hidden])){position:relative;z-index:40}
.home-search-box:has(.cat-panel:not([hidden])),
.home-search-box:has(.salary-range-panel:not([hidden])){position:relative;z-index:41}
.pv-fav-link{position:relative;display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;border-radius:50%;color:#fff;flex-shrink:0}
.pv-fav-link:hover{background:#ffffff1f}
.pv-fav-link-icon{width:21px;height:21px}
.pv-fav-badge{position:absolute;top:-2px;right:-2px;min-width:17px;height:17px;padding:0 4px;border-radius:var(--radius);background:#e11d48;color:#fff;font-size:.68rem;font-weight:700;line-height:17px;text-align:center}
.pv-fav-link--drawer{display:flex;align-items:center;gap:10px;width:auto;height:auto;border-radius:var(--radius-sm);color:var(--text);padding:12px 14px}
.pv-fav-link--drawer:hover{background:var(--brand-light);color:var(--brand-dark)}
.pv-fav-link--drawer .pv-fav-link-icon{width:19px;height:19px;flex-shrink:0}
.pv-fav-badge--drawer{position:static;margin-left:auto}
.chip-avatar{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:#fff;color:var(--brand-dark);font-weight:800;font-size:.95rem;flex-shrink:0}
.chip-greeting{font-size:.85rem;font-weight:700;color:#fff;white-space:nowrap}
.chip-role{display:inline-block;margin-top:2px;padding:1px 8px;border-radius:var(--radius);font-size:.68rem;font-weight:700;text-transform:uppercase;letter-spacing:.02em}
.chip-role--candidate{background:var(--brand-light);color:var(--brand-dark)}
.chip-role--employer{background:var(--employer-light);color:var(--employer)}
.identity-chip{position:relative}
.chip-toggle-input{position:absolute;opacity:0;pointer-events:none}
.chip-trigger{display:flex;align-items:center;gap:10px;cursor:pointer;padding:4px 6px;border-radius:var(--radius-sm)}
.chip-trigger:hover{background:#ffffff1a}
.chip-trigger--mobile{display:none}
.chip-caret{color:#fffc;font-size:.75rem;transition:transform .15s ease}
.chip-backdrop{display:none;position:fixed;inset:0;z-index:149;cursor:default}
.chip-toggle-input:checked ~ .chip-backdrop{display:block}
.chip-menu{position:absolute;top:calc(100% + 10px);right:0;z-index:150;width:260px;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-md);padding:8px;display:none;flex-direction:column;gap:2px}
.identity-chip:hover .chip-menu,.chip-toggle-input:checked ~ .chip-menu{display:flex}
.chip-menu-header{display:flex;align-items:center;gap:10px;padding:8px 10px 12px;border-bottom:1px solid var(--border);margin-bottom:6px}
.chip-menu-header .chip-avatar{background:var(--brand-light);color:var(--brand-dark)}
.chip-menu-header .chip-greeting{color:var(--text)}
/* Menu thành viên dùng chung partial accounts/_member_nav_links.html (.member-nav-link…);
   chip-menu / nav-drawer / .member-nav chỉ khác nhau phần trang trí bên dưới. */
.chip-menu .member-nav-link{width:100%;font-size:.9rem}
.drawer-identity{display:flex;flex-direction:column;align-items:center;gap:8px;padding:6px 14px 16px}
.drawer-identity .chip-avatar{background:var(--brand-light);color:var(--brand-dark);width:120px;height:120px;min-height:120px;font-size:2.6rem}
.drawer-identity .chip-avatar--photo{padding:0;overflow:hidden;font-size:0}
.drawer-identity .chip-avatar--photo img{width:100%;height:100%;object-fit:cover;display:block}
.drawer-identity .chip-greeting{color:var(--text)}
.drawer-identity-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%}
.drawer-identity-meta .chip-greeting{font-size:.68rem}
.drawer-identity-meta .chip-role{margin-top:0;font-size:.48rem}
/* .burger CHỈ dùng ở mobile (mở .nav-drawer). Desktop ẩn — thay bằng .site-menu (speedtest-style). */
.burger{justify-self:start;display:none;flex-direction:column;justify-content:center;gap:5px;width:34px;height:34px;cursor:pointer;flex-shrink:0}
.burger span{display:block;width:100%;height:2px;background:#fff;border-radius:2px}
#nav-toggle{display:none}
.nav-overlay{display:none;position:fixed;inset:0;background:#0f171473;z-index:149}
.nav-drawer{position:fixed;top:0;left:0;bottom:0;width:min(280px,82vw);background:#fff;z-index:150;display:flex;flex-direction:column;gap:2px;padding:18px 14px;box-shadow:var(--shadow-md);transform:translateX(-100%);transition:transform .25s ease;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.nav-drawer .drawer-brand{font-weight:800;font-size:1.1rem;color:var(--brand-dark);padding:6px 14px 16px}
.nav-drawer a,.nav-drawer .link-button{display:block;width:100%;padding:12px 14px;border-radius:var(--radius-sm);font-size:.95rem;font-weight:500;color:var(--text);text-align:left;background:none;border:none}
.nav-drawer a:hover,.nav-drawer .link-button:hover{background:var(--brand-light);color:var(--brand-dark)}
.nav-drawer a.active,.nav-drawer a.active:hover,.pv-fav-link--drawer.active,.pv-fav-link--drawer.active:hover{background:var(--brand);color:#fff}
.nav-drawer .inline-form{display:block}
/* menu thành viên trong drawer: cùng cỡ chữ/padding với các link khác của drawer */
.nav-drawer .member-nav-link{padding:12px 14px;font-size:.95rem;font-weight:500}
/* tiêu đề cột menu (Khám phá / Thông tin) trong drawer mobile — cùng cây với panel desktop */
.nav-drawer .drawer-menu-heading{padding:14px 14px 4px;font-size:.78rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.nav-drawer .drawer-menu-heading:first-child{padding-top:4px}
#nav-toggle:checked ~ .nav-overlay{display:block}
#nav-toggle:checked ~ .nav-drawer{transform:translateX(0)}
/* Hamburger mở: khóa nền, mọi thao tác vuốt/cuộn chỉ còn tác động trong drawer. */
body:has(#nav-toggle:checked){overflow-y:hidden}

/* ================= Menu desktop kiểu speedtest.net (điểm 1 + 3) =================
   "Menu" ở góc trái navbar (thay ☰). Hover HOẶC click mở .site-menu-panel — panel ngang
   nhiều cột. Pure-CSS: checkbox #site-menu-toggle-input + <label>. CHỈ desktop (ẩn ở
   @media max-width:640px bên dưới). */
.site-menu{position:relative;justify-self:start}
.site-menu-toggle-input{position:absolute;opacity:0;pointer-events:none}
.site-menu-trigger{display:inline-flex;align-items:center;justify-content:center;cursor:pointer;padding:5px;border-radius:var(--radius-sm)}
.site-menu-trigger:hover,.site-menu-toggle-input:checked~.site-menu-trigger{background:#ffffff1a}
.site-menu-burger{display:flex;flex-direction:column;justify-content:center;gap:5px;width:26px;height:16px}
.site-menu-burger span{display:block;width:100%;height:2px;background:#fff;border-radius:2px}
.site-menu-backdrop{display:none;position:fixed;inset:0;z-index:149;cursor:default}
.site-menu-toggle-input:checked~.site-menu-backdrop{display:block}
.site-menu-panel{position:absolute;top:calc(100% + 12px);left:0;z-index:150;display:none;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-md);padding:22px 28px}
/* cầu nối vô hình che khe 12px nút<->panel: rê chuột xuống panel không bị mất hover */
.site-menu-panel::before{content:"";position:absolute;top:-12px;left:0;right:0;height:12px}
.site-menu:hover .site-menu-panel,.site-menu-toggle-input:checked~.site-menu-panel{display:block}
.site-menu-cols{display:flex;gap:48px}
.site-menu-col{display:flex;flex-direction:column;gap:11px;min-width:130px}
.site-menu-heading{font-size:.95rem;font-weight:800;color:var(--text)}
.site-menu-col a{font-size:.9rem;font-weight:500;color:var(--muted);white-space:nowrap}
.site-menu-col a:hover{color:var(--brand-dark)}

/* Menu "Thành viên" khi CHƯA đăng nhập (điểm 2) — thay 2 nút CTA. Dùng lại .identity-chip/
   .chip-menu (hover + click, xem ~dòng 102-117). CHỈ desktop (mobile: .navbar-actions ẩn). */
.chip-trigger--guest{display:flex;align-items:center;gap:6px;cursor:pointer;padding:7px 10px;border-radius:var(--radius-sm)}
.chip-trigger--guest:hover{background:#ffffff1a}
.chip-text-simple{font-size:.9rem;font-weight:700;color:#fff;white-space:nowrap}
.identity-chip--guest:hover .chip-caret,.identity-chip--guest .chip-toggle-input:checked~.chip-trigger .chip-caret{transform:rotate(180deg)}
.chip-menu--guest{width:250px;padding:10px}
.chip-menu--guest::before{content:"";position:absolute;top:-10px;left:0;right:0;height:10px}
.chip-menu-group-label{display:block;padding:9px 10px 3px;font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.03em;color:var(--muted)}
.chip-menu--guest .member-nav-link{width:100%;font-size:.9rem;font-weight:600}

.header-search-band{background:linear-gradient(135deg,var(--brand-light) 0%,#fff 65%);padding:16px clamp(16px,4vw,48px) 20px;border-bottom:1px solid var(--border)}
.header-search-form{max-width:780px;margin:0 auto;display:flex;align-items:center;background:#fff;border-radius:var(--radius);border:2px solid var(--brand);box-shadow:0 8px 24px #16a34a2e;padding:4px 4px 4px 18px;gap:6px}
.header-search-form .hsf-icon{font-size:1.05rem;flex-shrink:0}
.header-search-form input[type="text"]{flex:1;min-width:0;border:none;padding:12px 8px;font-size:.98rem}
.header-search-form input[type="text"]:focus{outline:none}
.header-search-form .hsf-sep{width:1px;height:26px;background:var(--border);flex-shrink:0}
.header-search-form select{border:none;padding:12px 10px;font-size:.9rem;color:var(--muted);background:transparent;max-width:170px}
.header-search-form select:focus{outline:none}
.header-search-form .hsf-submit{flex-shrink:0;border:none;padding:13px 26px;border-radius:var(--radius);font-weight:700;font-size:.95rem;color:#fff;background:linear-gradient(135deg,var(--brand),var(--brand-dark));cursor:pointer}
.header-search-form .hsf-submit:hover{filter:brightness(1.05)}
.header-search-form--simple{padding:4px 4px 4px 18px}
.header-search-form--simple .hsf-textarea{flex:1;min-width:0;border:none;resize:none;overflow:hidden;white-space:nowrap;padding:13px 14px 13px 8px;font:inherit;font-size:.98rem;line-height:1.3;height:46px}
.header-search-form--simple .hsf-textarea:focus{outline:none}
.header-search-form.header-search-form--simple .hsf-icon{order:-1}
.header-search-form.header-search-form--simple .hsf-textarea{order:0}
.header-search-form--simple .hsf-submit-min{flex-shrink:0;border-radius:var(--radius);padding:10px 20px}
.header-search-form--conversing .hsf-submit-min{display:none}
.home-search-box{position:relative;max-width:780px;margin:0 auto;display:flex;flex-direction:column;gap:10px;border:2px solid var(--brand);border-radius:18px;background:#fff;padding:12px 14px;box-shadow:0 10px 28px #16a34a29}
.search-traffic-lights{position:absolute;inset:0;pointer-events:none;z-index:0}
.home-search-box>*:not(.search-traffic-lights){position:relative;z-index:1}
.search-traffic-light{position:absolute;display:block;width:110px;height:110px;opacity:.18;background:var(--light-color);box-shadow:0 0 0 0 var(--light-color);animation:pv-search-traffic-light 35s ease-in-out infinite}
.search-traffic-light--circle{border-radius:50%}
.search-traffic-light--square{border-radius:25px}
.search-traffic-light--triangle{width:0;height:0;background:transparent;border-left:65px solid transparent;border-right:65px solid transparent;border-bottom:120px solid var(--light-color);filter:drop-shadow(0 0 0 var(--light-color));transform:translateX(-50%);box-shadow:none}
.search-traffic-light--1{--light-color:var(--brand);left:-150px;top:-58px;animation-delay:0s}
.search-traffic-light--2{--light-color:var(--blue);left:18%;top:-112px;animation-delay:-5s}
.search-traffic-light--3{--light-color:var(--accent);right:10%;top:-102px;animation-delay:-10s}
.search-traffic-light--4{--light-color:var(--urgent);right:-150px;top:27%;animation-delay:-15s}
.search-traffic-light--5{--light-color:var(--employer);right:-125px;bottom:-62px;animation-delay:-20s}
.search-traffic-light--6{--light-color:var(--info);left:18%;bottom:-145px;animation-delay:-25s}
.search-traffic-light--7{--light-color:var(--red);left:50%;bottom:-112px;animation-delay:-30s}
@keyframes pv-search-traffic-light{
  0%,8%{opacity:1;box-shadow:0 0 18px 7px color-mix(in srgb,var(--light-color) 62%,transparent);filter:brightness(1.12)}
  18%{opacity:.72;box-shadow:0 0 10px 3px color-mix(in srgb,var(--light-color) 42%,transparent);filter:brightness(1.04)}
  24%,100%{opacity:0;box-shadow:0 0 0 0 var(--light-color);filter:brightness(.9)}
}
.search-traffic-light--triangle{box-shadow:none}
@media (max-width:640px){
  .search-traffic-lights{display:none}
}
.home-search-box.is-pinned .search-traffic-lights{display:none}
@media (prefers-reduced-motion:reduce){
  .search-traffic-light{display:none;animation:none}
  .search-traffic-light--1{display:block;opacity:.35}
}
.home-search-box .header-search-form--simple{max-width:none;margin:0;border:0;border-radius:0;box-shadow:none;background:transparent;padding:0 4px}
.home-search-box .home-filter-row{margin:0}
/* .home-filter-actions bọc "Xóa lọc"+"Tìm kiếm" (2 con trực tiếp .home-filter-row) — luôn dồn
   phải trong dãy lọc; khi ghim hẹp/rộng khác nhau xem rule is-pinned bên dưới. */
.home-search-box .home-filter-row > .home-filter-actions{margin-left:auto;display:flex;align-items:center;gap:8px}
.home-search-box.is-conversing{border:0;padding:0;background:transparent;box-shadow:none}
/* pv-search.js::pinSearchBox — hễ có dãy lọc (.home-filter-row) đang hiện, GHIM cả
   .home-search-box lên vị trí cố định ngay dưới navbar bằng position:fixed (+ visibility:visible
   ép !important) — thoát được cả .header-search-band đang co (nav-condensed) lẫn vị trí cuộn bất
   kỳ, khỏi cần phân biệt "đã dock vào navbar hay chưa": ĐẦU trang hay GIỮA trang đều 1 kiểu. */
.home-search-box.is-pinned{position:fixed!important;visibility:visible!important;opacity:1!important;top:var(--header-h);left:0;right:0;z-index:150;max-width:none;margin:0;border-radius:0 0 var(--radius) var(--radius);box-shadow:var(--shadow-md);max-height:none;overflow:visible}
.home-search-box.is-pinned .home-filter-row{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;width:100%;overflow:hidden}
.home-search-box.is-pinned .pv-pin-closebar{display:flex;flex:0 0 auto;align-items:center;justify-content:flex-start;margin:0}
.home-search-box.is-pinned .pv-pin-close{height:34px;padding:0 10px;gap:5px;font-size:.82rem;white-space:nowrap}
.home-search-box.is-pinned .pv-filter-eye{font-size:1rem;line-height:1}
.home-search-box.is-pinned .search-filters-row{display:flex;flex:1 1 auto;flex-wrap:nowrap;align-items:center;gap:8px;min-width:0;overflow-x:auto;overflow-y:hidden;margin:0;padding:2px 1px 5px;scrollbar-width:thin}
.home-search-box.is-pinned .search-filters-row>.filter-slot{flex:0 0 auto}
.home-search-box.is-pinned .search-filters-row>.filter-slot--loc{flex:0 0 auto}
.home-search-box.is-pinned .search-filters-row>.search-filter-rest>.filter-slot{flex:0 0 auto}
.home-search-box.is-pinned .search-filters-row>.filter-slot--loc .loc-picker-wrap{flex:0 0 auto;width:auto}
.home-search-box.is-pinned .home-filter-actions{display:flex;flex:0 0 auto;align-items:center;gap:8px;margin-left:0}
.home-search-box.is-pinned .home-filter-actions .btn{white-space:nowrap}
.home-search-box.is-pinned .cat-panel,.home-search-box.is-pinned .salary-range-panel{position:fixed}
.home-search-box.is-pinned .home-filter-row[hidden]{display:none!important}
.home-search-box.is-pinned .popular-keyword-chips{display:flex;flex-wrap:nowrap;align-items:center;gap:8px;width:100%;max-width:1040px;margin:8px auto 0;padding:0 1px 4px;overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:thin}
.home-search-box.is-pinned .popular-keyword-chips .pk-icon,
.home-search-box.is-pinned .popular-keyword-chips .pk-chip-wrap{flex:0 0 auto}
/* Desktop: khi cuộn xuống, dùng luôn thanh điều hướng đáy giống mobile. */
body.nav-condensed{padding-bottom:58px}
body.nav-condensed .bottom-nav{display:flex;align-items:flex-end;justify-content:space-around}
/* Trang chi tiết luôn có bottom-nav, không phụ thuộc breakpoint hay trạng thái
   nav-condensed. Thanh ứng tuyển nổi nằm ngay phía trên bottom-nav để hai lớp
   điều hướng không che nhau. */
body.pv-detail-search{padding-bottom:58px}
body.pv-detail-search .bottom-nav{display:flex;align-items:flex-end;justify-content:space-around}
body.pv-detail-search .job-apply-bar{bottom:50px}
/* Rộng hơn .home-search-box mặc định (780px) để dãy ô lọc chia đều nhiều ô/hàng hơn, đỡ dư
   1 ô lẻ + khoảng trắng to ở hàng cuối (bug 2026-09-14). "Xóa lọc"+"Tìm kiếm" (.home-filter-
   actions) CỐ Ý không ép xuống hàng riêng — để nó trôi tự nhiên theo flex-wrap, tránh tốn thêm
   nguyên 1 hàng trống khi panel có nhiều chip lọc active (tiết kiệm không gian ưu tiên hơn). */
.home-search-box.is-pinned>*{max-width:1040px;margin-left:auto;margin-right:auto}
/* pv-search.js::pinSearchBox thêm .pv-band-force-visible lên #pv-header-search-band khi ghim.
   Trên trang chi tiết (body.pv-detail-search) và lúc nav-condensed, band bị opacity:0 +
   visibility:hidden — opacity<1 ở TỔ TIÊN áp cho cả cụm con, kể cả .home-search-box.is-pinned
   position:fixed (con không tự gỡ bằng opacity:1 của chính nó). Phải khôi phục ngay tại band. */
.header-search-band.pv-band-force-visible{height:0;min-height:0;opacity:1!important;visibility:visible!important}
.header-search-filters,.home-filter-row{display:flex;flex-wrap:wrap;align-items:center;row-gap:6px;column-gap:10px;margin-top:10px}
.header-search-filters[hidden]{display:none}
.header-search-filters select,.home-filter-row select{padding:9px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;font-size:.88rem}
/* flex:1;width:100% — lớp bọc TRUNG GIAN giữa .loc-picker-wrap và ô tỉnh/thành + ward-select
   (dễ bỏ sót!). Thiếu nó thì .loc-picker-wrap giãn tới đâu, .location-picker vẫn co khít nội
   dung (360px) chứ không truyền tiếp độ rộng xuống, làm ô tỉnh/thành mở ra vẫn hụt bề ngang dù
   khối cha bên ngoài đã đúng — % flex-basis của ô tỉnh/thành cần .location-picker có bề rộng
   XÁC ĐỊNH mới tính đúng theo nó. */
.location-picker{display:flex;flex:1;width:100%;align-items:center;gap:8px;flex-wrap:wrap}
.location-picker select{min-width:150px}
.filter-slot{position:relative;display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 10px;border:1px solid var(--border);border-radius:var(--radius);background:#fff;font-size:.88rem;transition:border-color .15s,background-color .15s,box-shadow .15s}
.filter-slot:hover{border-color:var(--brand)}
.filter-slot:focus-within{border-color:var(--brand);box-shadow:0 0 0 3px #16a34a26}
.filter-slot.is-active{border-color:var(--brand);background:var(--brand-light)}
.filter-slot .fc-icon{font-size:1rem;line-height:1;flex-shrink:0}
.filter-slot select{appearance:none;-webkit-appearance:none;border:0;background:transparent;font:inherit;font-size:.88rem;color:var(--text);padding:8px 2px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;cursor:pointer}
.filter-slot select:focus{outline:none}
.fc-caret{width:0;height:0;flex-shrink:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid var(--muted)}
.filter-slot.is-active .fc-caret{border-top-color:var(--brand-dark)}
.filter-slot.is-active .fc-label{color:var(--text);font-weight:400}
.filter-control{display:inline-flex;align-items:center;gap:6px;padding:8px 0;border:0;background:transparent;font:inherit;font-size:.88rem;color:var(--text);cursor:pointer;white-space:nowrap}
.fc-clear{position:absolute;top:-5px;right:-5px;z-index:3;width:15px;height:15px;padding:0;border:0;border-radius:50%;background:#ef4444;color:#fff;font-size:.62rem;line-height:15px;text-align:center;cursor:pointer;box-shadow:0 1px 3px #0000004d}
.fc-clear:hover{background:#dc2626}
.fc-clear[hidden]{display:none}
.panel-head{display:flex;justify-content:flex-end;margin-bottom:4px}
.panel-close-btn{width:26px;height:26px;display:flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:var(--border);color:var(--text);font-size:.75rem;line-height:1;cursor:pointer}
.panel-close-btn:hover{background:#d8dee8}
.fc-native-off{position:absolute!important;left:0;top:0;width:1px;height:1px;opacity:0;pointer-events:none}
.salary-range{white-space:nowrap}
.salary-range-pill{padding:8px 0}
.salary-range-caret{display:none}
/* position:static luôn — cùng cơ chế + lý do với .cat-panel (xem khối "QUY TẮC DÙNG CHUNG" đầu
   file, cạnh .pv-pin-close): panel đè (position:absolute) làm lòi 2 bên ô lọc khác cùng hàng,
   không phải lỗi z-index mà lỗi cơ chế. */
.salary-range-panel{position:absolute;top:calc(100% + 8px);left:0;width:min(440px,calc(100vw - 24px));z-index:30;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;padding:16px 18px;margin-top:0;box-shadow:0 12px 32px #00000029}
.salary-range-panel[hidden]{display:none}
.salary-range-cats{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:6px}
.sr-cat{padding:6px 14px;border-radius:var(--radius);border:0;background:var(--border);font-size:.85rem;color:var(--text);cursor:pointer}
.sr-cat::before{content:"✓";font-weight:700;margin-right:5px;opacity:0}
.sr-cat[aria-pressed="true"]{background:var(--brand);color:#fff}
.sr-cat[aria-pressed="true"]::before{opacity:1}
.salary-range-track{position:relative;height:34px;margin:30px 12px 6px}
.sr-rail,.sr-fill{position:absolute;top:50%;height:4px;margin-top:-2px;border-radius:var(--radius)}
.sr-rail{left:0;right:0;background:var(--border)}
.sr-fill{background:var(--brand)}
.sr-thumb{position:absolute;top:50%;width:20px;height:20px;margin:-10px 0 0 -10px;background:#fff;border:2px solid var(--brand);border-radius:50%;box-shadow:0 1px 4px #00000040;cursor:grab;touch-action:none}
.sr-thumb:active{cursor:grabbing}
.sr-thumb:focus-visible{outline:2px solid var(--brand-dark);outline-offset:3px}
.sr-thumb::after{content:attr(data-val);position:absolute;bottom:24px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:.74rem;color:var(--muted)}
.salary-range-inputs{display:flex;align-items:center;flex-wrap:nowrap;gap:10px;margin-top:8px}
.salary-range-inputs input{flex:1 1 0;min-width:0;padding:7px 10px;border:1px solid var(--border);border-radius:var(--radius-sm);font:inherit;font-size:.9rem;text-align:center}
.salary-range-inputs input::placeholder{color:var(--muted)}
.sr-arrow{color:var(--muted);flex-shrink:0}
.sr-dash{color:var(--muted)}
.salary-range-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:14px}
.sr-clear{border:0;background:none;padding:0;color:var(--muted);font-size:.85rem;text-decoration:underline;cursor:pointer}
.sr-apply{padding:8px 22px}
.filter-slot--loc{border:0;background:none;padding:0;min-height:0;gap:8px}
/* flex:1 + flex-wrap: khi ô "Khu vực" (.filter-slot--loc) bị ép chiếm trọn hàng lúc tỉnh/thành
   MỞ (rule :has() cạnh .pv-pin-close) mà .loc-picker-wrap không tự giãn theo thì để trống 1
   khoảng lớn bên phải (2026-09-15) — flex:1 để lấp đầy, flex-wrap để ward-select tự xuống dòng
   riêng khi ô tỉnh/thành chiếm hết 1 hàng (flex-basis:100%) thay vì bị bóp chung 1 dòng. */
.loc-picker-wrap{display:inline-flex;flex:1;width:100%;flex-wrap:wrap;align-items:center;gap:6px}
.loc-picker-wrap[hidden]{display:none}
.loc-picker-wrap .fc-icon{font-size:1rem}
.loc-picker-wrap select{appearance:none;-webkit-appearance:none;padding:9px 28px 9px 12px;max-width:none;border:1px solid var(--border);border-radius:var(--radius);background:#fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='8' height='5'%3E%3Cpath d='M0 0h8L4 5z' fill='%236b7280'/%3E%3C/svg%3E") no-repeat right 12px center}
.loc-picker-wrap select:hover{border-color:var(--brand)}
.loc-chip{display:inline-flex;align-items:center;gap:6px;max-width:340px;padding:8px 8px 8px 12px;border:1px solid var(--brand);border-radius:var(--radius);background:var(--brand-light);color:var(--brand-dark);font-size:.88rem;cursor:pointer}
.loc-chip[hidden]{display:none}
.loc-chip-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}
/* position:static luôn (không còn absolute-overlay) — xem khối "QUY TẮC DÙNG CHUNG" phía trên
   (đầu file, cạnh .pv-pin-close) để hiểu vì sao. width:100% của CHÍNH .filter-slot--cat/
   .salary-range (cha trực tiếp, đã tự rộng bằng flex:1 0 100% lúc mở) — không phụ viewport nữa
   nên bỏ luôn nhánh @media riêng (từng dùng calc(100vw - 32px) hồi còn position:absolute). */
.cat-panel{position:absolute;top:calc(100% + 8px);left:0;width:min(420px,calc(100vw - 24px));z-index:30;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;padding:10px;margin-top:0;box-shadow:0 12px 32px #00000029}
.cat-panel[hidden]{display:none}
.cat-panel-search{width:100%;padding:8px 10px;margin-bottom:8px;border:1px solid var(--border);border-radius:8px;font:inherit}
/* 2 lối tắt "Chia sẻ vị trí"/"Chọn trên bản đồ" — panel tỉnh (_choice_panel.html
   source="provinces"), LUÔN hiện trên đầu, tách khỏi danh sách tìm-được bằng viền dưới. */
.cat-panel-actions{display:flex;flex-direction:column;gap:2px;padding-bottom:8px;margin-bottom:8px;border-bottom:1px solid var(--border)}
.cat-panel-actions .filter-popover-opt{width:100%;border:0;background:none;font:inherit;text-align:left;color:inherit}
.cat-panel-list{list-style:none;margin:0;padding:0;max-height:320px;overflow-y:auto;display:grid;grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:2px}
.select-choice-control{min-width:0;flex:1}
.select-choice-control .fc-label{overflow:hidden;text-overflow:ellipsis}
.select-choice-panel{width:min(360px,calc(100vw - 24px))}
.select-slot.has-choice-panel>select{display:none}
.filter-popover-opt{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;cursor:pointer}
.filter-popover-opt:hover{background:var(--brand-light)}
.filter-popover-opt[aria-selected="true"]{background:var(--brand);color:#fff}
.fpo-icon{width:1.4em;text-align:center;flex-shrink:0}
.fpo-name{flex:1;min-width:0}
.fpo-count{font-size:.78rem;color:var(--muted)}
.filter-popover-opt[aria-selected="true"] .fpo-count{color:#ffffffd9}
.choice-match-row{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;padding:6px 4px 10px;margin-bottom:6px;border-bottom:1px solid var(--border)}
.choice-match-row[hidden]{display:none}
.choice-match-label{font-size:.85rem;color:var(--muted)}
.choice-match-seg{display:inline-flex;gap:2px;padding:3px;background:var(--brand-light);border-radius:var(--radius)}
.cms-btn{font:inherit;font-size:.83rem;font-weight:600;line-height:1;padding:5px 12px;border:0;border-radius:var(--radius);background:transparent;color:var(--muted);cursor:pointer}
.cms-btn.is-on{background:var(--brand);color:#fff}
.filter-ai-hint{flex:1 0 100%;order:100;margin:2px 0 0;font-size:.82rem;color:var(--brand-dark)}
.filter-ai-hint[hidden]{display:none}
/* Nút "Xóa lọc" — LUÔN ngay trước nút "Tìm kiếm", cùng bọc trong .home-filter-actions (con
   trực tiếp .home-filter-row, xem rule > .home-filter-actions ở trên — dồn phải + gap 8px).
   Hiện khi có .filter-slot.is-active (pv-search.js::refreshClearAll). */
.filter-clear-all{display:inline-flex;align-items:center;gap:5px;flex-shrink:0;height:38px;padding:0 14px;border:1px solid var(--border);border-radius:var(--radius-sm);background:#fff;color:var(--muted);font-size:.85rem;font-weight:600;cursor:pointer;white-space:nowrap}
.filter-clear-all:hover{color:var(--urgent);border-color:var(--urgent)}
.filter-clear-all[hidden]{display:none}
@media (prefers-reduced-motion: reduce) {
.filter-slot{transition:none}
}
.search-mode-switch{display:inline-flex;flex-shrink:0;gap:1px;padding:2px;margin-right:2px;border-radius:var(--radius);background:var(--border)}
.sms-tab{border:0;border-radius:var(--radius);padding:4px 10px;font:inherit;font-size:.75rem;font-weight:600;color:var(--muted);background:transparent;cursor:pointer;white-space:nowrap;transition:background-color .15s,color .15s}
.sms-tab[aria-selected="true"]{background:#fff;color:var(--brand-dark);box-shadow:0 1px 2px #0000001f}
.sms-tab:disabled{cursor:default}
.universal-search--locked .sms-tab:not([aria-selected="true"]){opacity:.4}
.sms-select{display:none}
.header-search-form--simple .sms-select{flex:0 0 auto;max-width:84px;margin-right:2px;padding:4px 16px 4px 6px;border-radius:var(--radius);border:1px solid var(--border);background:#fff;color:var(--brand-dark);font:inherit;font-size:.66rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sms-select:disabled{color:var(--muted)}
@media (max-width: 640px) {
.search-mode-switch{display:none}
.sms-select{display:inline-block}
}
.universal-search:not([data-mode="all"]) .header-search-form--conversing .search-mode-switch,.universal-search:not([data-mode="all"]) .header-search-form--conversing .sms-select{display:none}
.universal-search[data-mode="all"]:not(.is-conversing) .search-mode-switch,.universal-search[data-mode="all"]:not(.is-conversing) .sms-select{display:none}
/* Hội thoại AI đang chạy (mode "all"): CHỈ hiện dropdown phạm vi (.sms-scope-wrap), ẩn hẳn dãy pill
   check — tránh lặp 2 kiểu chọn phạm vi cùng lúc (pill "check" + dropdown, xem ảnh báo lỗi). */
.universal-search[data-mode="all"].is-conversing .search-mode-switch{display:none}
.ai-conv .search-mode-switch{align-self:center;margin:8px 0 0}
.sms-scope-wrap{position:relative;display:flex;align-self:stretch;align-items:center;width:100%;min-height:40px;margin:10px 0 0;padding:0 14px;border:1px solid var(--border);border-radius:var(--radius);background:#fff}
.sms-scope-wrap .sms-select{display:block;flex:1;width:100%;max-width:none;min-height:38px;margin:0;padding:0;border:0;border-radius:0;background:transparent;color:var(--text);font-size:.88rem;font-weight:600}
.home-filter-row[hidden]{display:none}
.search-results-list{display:flex;flex-direction:column;gap:12px}
.search-result-row{display:block;padding:12px 16px;border:1px solid var(--border);border-radius:10px;color:inherit;transition:border-color .15s,box-shadow .15s}
.search-result-row:hover{border-color:var(--brand-dark);box-shadow:0 1px 4px #00000014}
.search-result-type{display:inline-block;margin-bottom:4px;padding:2px 8px;border-radius:var(--radius);background:var(--brand-light,#eafbea);color:var(--brand-dark);font-size:.72rem;font-weight:600}
.search-result-title{display:block;font-weight:600;margin-bottom:2px}
.search-result-meta{display:block;color:var(--muted);font-size:.85rem}
.search-result-excerpt{margin:4px 0 0;color:var(--muted);font-size:.9rem}
.search-result-row time{display:block;margin-top:4px;color:var(--muted);font-size:.8rem}
.toggle-slot .filter-control{cursor:pointer}
.toggle-slot.is-active{border-color:var(--brand);background:var(--brand-light)}
.toggle-slot.is-active .fc-label{color:var(--brand-dark);font-weight:600}
.filter-slot--school .school-picker{position:relative}
.filter-slot--school .tag-picker-input{border:0;background:transparent;font:inherit;font-size:.88rem;padding:8px 2px;max-width:150px}
.filter-slot--school .tag-picker-input:focus{outline:none}
.popular-keyword-chips{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:12px;font-size:.85rem}
.popular-keyword-chips .pk-icon{display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto;font-size:1rem}
.pk-chip-wrap{display:inline-flex;align-items:center;flex:0 0 auto;border:1px solid var(--border);border-radius:var(--radius);background:#fff;overflow:hidden}
.pk-chip{padding:5px 12px;border-radius:0;background:#fff;border:0;color:var(--text);text-decoration:none}
.pk-chip:hover{color:var(--brand-dark)}
.pk-remove{width:22px;height:24px;padding:0;border:0;border-left:1px solid var(--border);background:#fff;color:var(--muted);font-size:1rem;line-height:1;cursor:pointer}
.pk-remove:hover{background:var(--urgent-light);color:var(--urgent)}
.personalized-context{margin:-8px 0 14px;color:var(--muted);font-size:.86rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ai-chat-history{max-height:260px;overflow-y:auto;margin-bottom:12px;padding-right:4px}
.ai-chat-history summary{cursor:pointer;color:var(--muted);font-size:.85rem;margin-bottom:8px}
.ai-search-nudge{margin:0;color:var(--muted)}
.ai-conv{max-width:780px;margin:0 auto;display:flex;flex-direction:column;border:2px solid var(--brand);border-radius:18px;background:#fff;padding:14px 16px;box-shadow:0 12px 30px #16a34a26}
.ai-conv.is-busy{opacity:.8}
.ai-conv .header-search-form--conversing{max-width:none;margin:0;padding:0;border:0;border-radius:0;box-shadow:none;background:transparent;flex-direction:column;align-items:stretch;gap:0}
.header-search-form--conversing .hsf-icon,.header-search-form--conversing .header-search-filters{display:none}
.ai-conv .home-filter-row{margin:12px 0 0}
.ai-conv .home-filter-row > .btn,.ai-conv .home-filter-row > [type="submit"]{display:none}
.ai-conv-slot{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:8px 0;margin:10px 0}
.ai-conv-log:empty + .ai-conv-slot{border-top:0;margin-top:0;padding-top:0}
.header-search-form--simple .hsf-textarea.hsf-textarea--conversation{order:0;border:0;background:transparent;white-space:pre-wrap;overflow-y:auto;height:auto;min-height:96px;width:100%;padding:2px;line-height:1.5}
.ai-conv-log{display:flex;flex-direction:column;gap:8px;max-height:190px;overflow-y:auto}
.ai-conv-log:empty{display:none}
.ai-conv-more{align-self:center;font-size:.74rem;color:var(--muted);padding:2px 0 4px}
.ai-conv-msg{max-width:86%;padding:8px 12px;border-radius:14px;font-size:.92rem;line-height:1.45}
.ai-conv-msg-text{white-space:pre-wrap;word-break:break-word}
.ai-conv-msg-time{display:block;margin-top:3px;font-size:.68rem;opacity:.6;text-align:right}
.ai-conv-msg--user{align-self:flex-end;background:var(--brand);color:#fff;border-bottom-right-radius:4px}
.ai-conv-msg--assistant{align-self:flex-start;background:var(--brand-light);color:var(--brand-dark);border-bottom-left-radius:4px}
.ai-conv-msg--assistant .ai-conv-msg-time{text-align:left}
.ai-conv-typing{opacity:.7;font-style:italic}
.ai-conv-countdown{font-weight:600}
.ai-conv-hint{align-self:stretch;margin-top:4px;font-size:.82rem;color:var(--muted);text-align:center}
.ai-conv-hint a{color:var(--brand-dark);font-weight:600}
.ai-conv-guide{font-size:.84rem;line-height:1.4;color:var(--brand-dark);background:var(--brand-light);border-radius:10px;padding:8px 12px;margin-bottom:8px}
.search-filters-row{display:contents}
.search-filter-location-group,.search-filter-rest{display:contents}
.ai-conv-actions{display:flex;align-items:stretch;width:100%;border:1.5px solid var(--brand);border-radius:var(--radius);overflow:hidden;padding:0;background:#fff}
.ai-conv-kw{flex:1 1 auto;min-width:0;border:0;background:transparent;padding:11px 18px;font:inherit;font-size:.92rem;color:var(--text)}
.ai-conv-kw:focus{outline:none}
.ai-conv-kw::placeholder{color:var(--muted)}
.ai-conv-actions [data-ai-conv-search]{flex-shrink:0;border:0;border-radius:0;margin:0;padding:12px 22px}
.ai-conv-actions .btn[disabled]{opacity:.45;cursor:not-allowed;box-shadow:none}
.pv-map-modal{position:fixed;inset:0;background:#0f172a8c;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}
.pv-map-modal[hidden]{display:none}
.pv-map-modal-inner{background:#fff;border-radius:var(--radius);width:min(720px,100%);overflow:hidden}
.pv-map-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}
.pv-map-modal-head p{margin:0;font-size:.88rem;color:var(--muted)}
.pv-map-close{border:none;background:var(--bg);border-radius:var(--radius);width:32px;height:32px;cursor:pointer;font-size:1rem;flex-shrink:0}
#pv-map-canvas{height:420px;width:100%}
.pv-modal{position:fixed;inset:0;z-index:1000;display:flex;align-items:center;justify-content:center;padding:20px}
.pv-modal[hidden]{display:none}
.pv-modal-backdrop{position:absolute;inset:0;background:#0f172a8c}
.pv-modal-inner{position:relative;background:#fff;border-radius:var(--radius);width:min(420px,100%);overflow:hidden;box-shadow:var(--shadow-md)}
.pv-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border)}
.pv-modal-close{border:none;background:var(--bg);border-radius:var(--radius);width:32px;height:32px;cursor:pointer;font-size:1rem;flex-shrink:0}
.pv-modal-body{padding:16px}
.pv-modal-inner--wide{width:min(480px,100%)}
.pv-fav-modal-list{display:flex;flex-direction:column;gap:8px;max-height:60vh;overflow-y:auto}
.pv-fav-modal-item{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:var(--radius-sm);padding:8px}

/* pv-search.js: chip bay từ khung "Tìm tin/hồ sơ khác" (sidebar, bên phải) lên ô search đầu
   trang khi người dùng bấm/focus vào ô nhập — xem flyFilterLabelsIntoSearch(). */
.pv-filter-fly-layer{position:fixed;inset:0;z-index:1200;pointer-events:none}
.pv-filter-fly-chip{position:fixed;transform:translate(-100%,-50%) scale(1);opacity:1;white-space:nowrap;padding:5px 12px;border-radius:999px;background:var(--brand-light);color:var(--brand-dark);font-size:.82rem;font-weight:700;box-shadow:var(--shadow-md);transition:top .75s cubic-bezier(.3,.1,.2,1),left .75s cubic-bezier(.3,.1,.2,1),opacity .65s ease .15s,transform .75s cubic-bezier(.3,.1,.2,1)}
.pv-fav-modal-item-link{display:flex;align-items:center;gap:10px;flex:1;min-width:0;color:var(--text)}
.pv-fav-modal-item-img{width:44px;height:44px;border-radius:var(--radius-sm);object-fit:cover;background:var(--brand-light);flex-shrink:0}
.pv-fav-modal-item-img--placeholder{display:block}
.pv-fav-modal-item-info{display:flex;flex-direction:column;gap:2px;min-width:0}
.pv-fav-modal-item-title{font-weight:700;font-size:.92rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pv-fav-modal-item-company{font-size:.82rem;color:var(--muted)}
.pv-fav-modal-item-remove{flex-shrink:0;width:28px;height:28px;border-radius:50%;border:none;background:var(--bg);color:var(--muted);cursor:pointer;font-size:.85rem}
.pv-fav-modal-item-remove:hover{background:var(--urgent-light);color:var(--urgent)}
.pv-fav-modal-empty{margin:0;color:var(--muted)}
.social-btn{display:block;padding:10px 16px;border-radius:var(--radius-sm);border:1px solid var(--border);font-size:.95rem;font-weight:600;color:var(--text);text-align:center}
.social-btn:hover{background:var(--brand-light);border-color:var(--brand);color:var(--brand-dark)}
.login-page{max-width:420px;margin:40px auto 64px;padding:0 20px}
.login-card{border-radius:var(--radius);overflow:hidden;border:1px solid var(--border);box-shadow:var(--shadow-md);background:#fff}
.login-card-header{background:linear-gradient(135deg,var(--brand),var(--brand-dark));color:#fff;padding:18px 24px;font-weight:700;font-size:1.1rem}
.login-card-body{padding:26px 24px 28px}
.login-field{margin-bottom:16px}
.login-field label{display:block;font-weight:600;font-size:.85rem;margin:0 0 6px}
.login-field input{width:100%;padding:11px 12px;border:1px solid var(--border);border-radius:var(--radius-sm);font-size:.95rem}
.login-field input:focus{outline:none;border-color:var(--brand)}
.login-field .errorlist{list-style:none;margin:6px 0 0;padding:0;color:var(--urgent);font-size:.82rem}
.login-card .non-field-errors{list-style:none;margin:0 0 16px;padding:10px 12px;background:var(--urgent-light);color:var(--urgent);border-radius:var(--radius-sm);font-size:.85rem}
.login-forgot{display:block;text-align:right;font-size:.85rem;margin:-8px 0 18px}
.login-divider{display:flex;align-items:center;gap:10px;margin:22px 0 16px;color:var(--muted);font-size:.8rem}
.login-divider::before,.login-divider::after{content:"";flex:1;height:1px;background:var(--border)}
.social-btn-row{display:flex;flex-wrap:wrap;gap:8px}
.social-btn-icon{flex:1 1 45%;display:flex;align-items:center;justify-content:center;gap:7px;padding:9px 10px;border-radius:var(--radius-sm);font-weight:600;font-size:.85rem;color:#fff}
.social-btn-icon svg{width:16px;height:16px;flex-shrink:0}
.social-btn-icon:hover{color:#fff;opacity:.9}
.social-btn-icon.google{background:#ea4335}
.social-btn-icon.facebook{background:#1877f2}
.social-btn-icon.x{background:#000}
.social-btn-icon.apple{background:#000}
.login-signup-hint{text-align:center;margin:18px 0 0;font-size:.85rem;color:var(--muted)}
.social-signup-page{display:flex;align-items:center;justify-content:center;min-height:68vh;padding:48px 20px}
.social-signup-card{width:100%;text-align:center}
.social-signup-card h1{font-size:1.5rem;margin:0 0 8px}
.social-signup-card > p{color:var(--muted);margin:0 0 20px}
.social-signup-card form{margin:0}
.social-signup-card .ss-field{margin:0 0 18px}
.social-signup-card .ss-label{display:block;margin-bottom:8px;font-weight:600;font-size:.85rem;color:var(--text)}
.social-signup-card .ss-roles{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 22px}
.social-signup-card .ss-role{display:inline-flex;align-items:center;gap:6px;margin:0;font-size:.9rem;color:var(--text);cursor:pointer}
.social-signup-card .ss-role input{width:auto;margin:0}
.social-signup-card input[type="email"],.social-signup-card input[type="text"]{text-align:center}
.social-signup-card .ss-hint{display:block;margin-top:6px;font-size:.8rem;color:var(--muted)}
.social-signup-card .ss-terms{text-align:left}
.social-signup-card .ss-check{display:flex;align-items:flex-start;justify-content:center;gap:8px;margin:0;font-size:.88rem;color:var(--text);cursor:pointer}
.social-signup-card .ss-check input{width:auto;margin:2px 0 0;flex:0 0 auto}
.social-signup-card .ss-check a{color:var(--brand-dark);text-decoration:underline}
.social-signup-card .btn.block{margin-top:6px}
@media (max-width: 640px) {
.social-signup-page{min-height:0;align-items:stretch;padding:24px 16px}
}
.social-signup-card .errorlist{list-style:none;margin:6px 0 0;padding:0;color:var(--urgent);font-size:.82rem}
.social-signup-card .non-field-errors{list-style:none;margin:0 0 16px;padding:10px 12px;background:var(--urgent-light);color:var(--urgent);border-radius:var(--radius-sm);font-size:.85rem}
.newsletter-box{border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);padding:24px 28px}
.newsletter-msg{margin:0 0 18px;font-size:1.05rem}
.newsletter-msg strong{color:var(--brand-dark)}
.newsletter-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:20px}
.newsletter-social{display:flex;flex-direction:column;gap:10px}
.newsletter-social-label{font-size:.85rem;color:var(--muted);font-style:italic}
.newsletter-social-btns{display:flex;gap:8px}
.newsletter-social-btns .social-btn-icon{flex:0 0 auto;padding:10px 18px}
.newsletter-email-form{display:flex;align-items:center;flex:1 1 360px;max-width:460px;border:1px solid var(--border);border-radius:var(--radius-sm);overflow:hidden}
.newsletter-email-form .nef-icon{display:inline-flex;padding:0 12px;color:var(--muted)}
.newsletter-email-form .nef-icon svg{width:18px;height:18px}
.newsletter-email-form input{flex:1;border:none;padding:12px 8px 12px 0;font-size:.95rem;min-width:0}
.newsletter-email-form input:focus{outline:none}
.newsletter-email-form button{display:inline-flex;align-items:center;gap:6px;border:none;background:var(--brand);color:#fff;font-weight:600;font-size:.9rem;padding:12px 18px;cursor:pointer;white-space:nowrap}
.newsletter-email-form button:hover{background:var(--brand-dark)}
.newsletter-email-form button:disabled{opacity:.6;cursor:default}
.newsletter-email-form .nef-send{display:inline-flex}
.newsletter-email-form .nef-send svg{width:15px;height:15px}
.newsletter-feedback{margin:14px 0 0;font-size:.85rem}
.newsletter-feedback.ok{color:var(--brand-dark)}
.newsletter-feedback.error{color:var(--urgent)}
@media (max-width: 640px) {
.newsletter-row{flex-direction:column;align-items:stretch}
.newsletter-email-form{max-width:none;flex-basis:auto;width:100%}
.newsletter-social{width:100%}
}
.bottom-nav{display:none;position:fixed;bottom:0;left:0;right:0;z-index:150;background:#fff;border-top:1px solid var(--border);box-shadow:0 -2px 10px #10182814;padding:2px 4px 0}
.bn-item{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:2px;padding:4px 2px;color:var(--muted);font-size:.66rem;font-weight:600;text-align:center}
.bn-item span{max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bn-item:hover{color:var(--brand-dark)}
.bn-item svg{width:22px;height:22px}
.bn-fab{margin-top:-26px;color:var(--brand-dark)}
.bn-fab-circle{width:46px;height:46px;border-radius:50%;background:var(--brand);color:#fff;display:flex;align-items:center;justify-content:center;box-shadow:0 4px 10px #16a34a66;margin-bottom:2px}
.bn-fab-circle svg{width:24px;height:24px}
.bn-fab-circle--avatar{font-weight:800;font-size:1.05rem;text-transform:uppercase}
.bn-item{position:relative}
.bn-badge{position:absolute;top:0;right:calc(50% - 20px);min-width:16px;height:16px;padding:0 4px;border-radius:var(--radius);background:#e11d48;color:#fff;font-size:.62rem;font-weight:700;line-height:16px;text-align:center}
.header-hero-text{margin:4px 0 18px;color:var(--text)}
.header-hero-text h1{margin:0 0 8px;font-size:clamp(1.5rem,3.2vw,2.1rem);font-weight:800;letter-spacing:-.02em}
.header-hero-text .tagline{margin:0;color:var(--muted);font-size:1.05rem}
.stats-band{position:relative;padding:30px 0;color:#fff;background-color:var(--brand-dark);background-image:radial-gradient(1100px 220px at 12% -60%,#ffffff4d,transparent 70%),linear-gradient(135deg,var(--brand-dark) 0%,var(--brand) 58%,#0f9d58 100%);background-attachment:fixed;background-size:cover;border-bottom:1px solid #0000001a}
.stats-band-inner{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px 32px}
.stats-band-eyebrow{flex-basis:100%;margin:0 0 2px;font-size:.72rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:#ffffffc2}
.stat-figures{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:12px 34px}
.stat-figures li{display:flex;font-size:.95rem;color:#ffffffe6}
.stat-fig{display:inline-flex;align-items:baseline;gap:6px;color:inherit;text-decoration:none;transition:opacity .12s}
.stat-fig:hover{opacity:.9}
.stat-fig:hover .stat-cap{text-decoration:underline;text-underline-offset:2px;text-decoration-color:#ffffffb0}
.stat-num{font-size:1.9rem;font-weight:800;line-height:1;letter-spacing:-.02em;color:#fff;font-variant-numeric:tabular-nums}
.stat-plus{font-size:1.15rem;font-weight:800;color:#fff;margin-left:-4px}
.stat-cap strong{color:#fff;font-weight:700}
.stat-hotline{margin-left:auto;display:inline-flex;align-items:center;gap:10px;padding:10px 18px;border-radius:var(--radius);background:#fff;box-shadow:0 8px 22px #00000038;line-height:1.2}
.stat-hotline-icon{width:18px;height:18px;flex:0 0 auto;color:var(--brand)}
.stat-hotline-label{font-size:.82rem;font-weight:600;color:#5b6b62}
.stat-hotline-num{font-size:1.2rem;font-weight:800;letter-spacing:.01em;color:var(--brand-dark);white-space:nowrap}
@media (max-width: 720px) {
.stats-band{padding:22px 0;background-attachment:scroll}
.stat-num{font-size:1.55rem}
.stats-band-eyebrow{font-size:.68rem;letter-spacing:.12em}
.stat-hotline{margin-left:0;width:100%;justify-content:center}
}
@media (prefers-reduced-motion: reduce) {
.stats-band{background-attachment:scroll}
}
.search-form{display:flex;gap:8px;max-width:720px;background:var(--surface);padding:6px;border-radius:var(--radius);border:1.5px solid var(--brand)}
.search-form input[type="text"]{flex:1;border:none;padding:12px 14px;font-size:.95rem;border-radius:var(--radius-sm);min-width:0}
.search-form input[type="text"]:focus{outline:none}
.search-form select{border:none;border-left:1px solid var(--border);padding:12px 10px;font-size:.9rem;color:var(--muted);background:#fff;border-radius:0}
.tag-links{margin-top:14px;display:flex;flex-wrap:wrap;gap:8px}
.tag-links a{color:var(--brand-dark);background:var(--brand-light);padding:6px 14px;border-radius:var(--radius);font-size:.85rem;font-weight:600}
.tag-links a:hover{background:var(--brand);color:#fff}
.tag-links a.active{background:var(--brand-dark);color:#fff}
.section{padding:48px 0}
.section.alt{background:var(--surface)}
.section-head{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:20px}
.section-head h2{margin:0;font-size:1.4rem}
.section-head a{font-size:.9rem;font-weight:600}
.category-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:2px 28px}
.category-tile{display:flex;align-items:baseline;gap:8px;padding:7px 2px;border-bottom:1px solid var(--border);color:var(--text);font-size:.85rem;line-height:1.3}
.category-tile:hover .name{color:var(--brand-dark)}
.category-tile .icon{font-size:.95rem;line-height:1;flex:none}
.category-tile .caption{display:flex;align-items:baseline;gap:6px;min-width:0;flex:1}
.category-tile .name{font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.category-tile .count{flex:none;margin-left:auto;font-size:.8rem;color:var(--muted)}
.category-tile .count strong{color:var(--accent-dark);font-weight:700}
.category-more{margin-top:16px;text-align:center}
/* Trang "Tất cả ngành nghề" (jobs:category_list) — dùng lại .category-tile nhưng auto-fill
   để trải đều mọi ngành, không ép đúng 4 cột như khối trang chủ. */
.cat-hero{margin-bottom:16px}
.cat-hero h1{margin:0 0 6px}
.cat-intro{color:var(--muted);margin:0;max-width:60ch}
.cat-total-open{color:var(--accent-dark)}
.category-grid--page{grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:4px 28px}
/* "Doanh nghiệp đồng hành" — thẻ trắng + avatar tròn màu brand xanh (đồng bộ hình ảnh công ty
   dùng ở job-card/company-avatar khắp site). */
.company-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;aspect-ratio:4 / 3;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border);padding:16px 10px;text-align:center;transition:transform .15s,box-shadow .15s,border-color .15s}
.company-tile:hover{transform:translateY(-3px);box-shadow:var(--shadow-md);border-color:var(--brand)}
.company-tile .avatar{width:52px;height:52px;border-radius:50%;background:var(--brand-light);color:var(--brand-dark);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.3rem;flex-shrink:0}
.company-tile .name{font-weight:700;font-size:.88rem;color:var(--text);line-height:1.25}
.company-tile .count{font-size:.72rem;color:var(--muted)}
/* "Trường đại học có thực tập sinh" — nền chàm nhạt + huy hiệu mũ tốt nghiệp, tông học thuật
   riêng (dùng --info thay vì --brand/gradient nhiều màu) — nhóm thứ 3 có bản sắc riêng. */
.university-tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;aspect-ratio:4 / 3;border-radius:var(--radius);background:var(--info-light);border:1px solid #e0e3fb;padding:16px 10px;text-align:center;transition:transform .15s,box-shadow .15s}
.university-tile:hover{transform:translateY(-3px);box-shadow:var(--shadow-md)}
.university-tile .name{font-weight:700;font-size:.88rem;color:var(--info-dark);line-height:1.25}
.university-tile .count{font-size:.72rem;color:var(--muted)}
.university-tile .cta{margin-top:2px;font-size:.78rem;font-weight:600;color:var(--info)}
/* Slide ngang thay lưới nhiều hàng — 1 hàng duy nhất, kéo tay/trackpad hoặc bấm mũi tên,
   scroll-snap để luôn dừng đúng mép thẻ. Ẩn scrollbar cho gọn (mũi tên đã đủ gợi ý cuộn được). */
.uni-slider{position:relative;display:flex;align-items:center;gap:10px}
.uni-slider-track{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x proximity;scroll-behavior:smooth;padding:4px 2px 10px;scrollbar-width:none;-ms-overflow-style:none}
.uni-slider-track::-webkit-scrollbar{display:none}
.uni-slider-track .university-tile{flex:0 0 190px;scroll-snap-align:start}
.uni-slider-nav{flex-shrink:0;width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:#fff;font-size:1.3rem;line-height:1;color:var(--info-dark);cursor:pointer;box-shadow:var(--shadow-sm);transition:background-color .15s,color .15s}
.uni-slider-nav:hover{background:var(--info-light)}
.uni-slider-nav[hidden]{display:none}
@media (prefers-reduced-motion: reduce) {
.uni-slider-track{scroll-behavior:auto}
}
.job-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.job-grid--home{grid-template-columns:repeat(3,1fr)}
.job-grid .empty-recommend{grid-column:1 / -1;color:var(--muted)}
.notif-list{list-style:none;margin:16px 0 0;padding:0;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.notif-item{display:block}
.notif-item + .notif-item{border-top:1px solid var(--border)}
.notif-link{display:flex;flex-direction:column;gap:4px;padding:14px 16px;text-decoration:none;color:var(--text);transition:background .12s}
.notif-link:hover{background:var(--brand-light)}
.notif-item.is-unseen{background:color-mix(in srgb,var(--brand-light) 55%,transparent)}
.notif-item.is-unseen .notif-link{position:relative}
.notif-item.is-unseen .notif-link::before{content:"";position:absolute;left:6px;top:19px;width:6px;height:6px;border-radius:50%;background:var(--brand)}
.notif-text{line-height:1.45}
.notif-time{font-size:.78rem;color:var(--muted)}
.attr-chip-row{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0 20px}
.attr-chip{display:inline-flex;align-items:center;gap:4px;padding:7px 14px;border-radius:var(--radius);background:var(--brand-light);color:var(--brand-dark);font-size:.85rem;font-weight:600;white-space:nowrap}
a.attr-chip:hover{background:var(--brand);color:#fff}
.attr-chip--static{background:var(--bg);border:1px solid var(--border);color:var(--muted);cursor:default}
.attr-chip--salary{background:var(--brand);color:#fff;font-weight:700}
a.attr-chip--salary:hover{filter:brightness(1.08);background:var(--brand)}
.job-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;transition:box-shadow .15s,border-color .15s;display:flex;flex-direction:column;gap:10px;cursor:pointer}
.job-card:hover{box-shadow:var(--shadow-md);border-color:var(--brand)}
.job-card .urgent-ribbon{position:absolute;top:10px;right:-1px;background:var(--urgent);color:#fff;font-size:.7rem;font-weight:700;padding:3px 10px 3px 12px;border-radius:var(--radius) 0 0 999px;letter-spacing:.02em}
/* Ribbon đè absolute lên góc phải -> tiêu đề dài xuống dòng 2 bị chữ chui ra sau ruy băng
   (không có khoảng chừa). KHÔNG dùng padding-right trên cả h3 — sẽ ép MỌI dòng hẹp lại dù
   ruy băng chỉ chiếm đúng góc trên (rất lãng phí ở layout nhiều cột, card hẹp). Thay bằng 1
   shim float:right vô hình đúng kích thước ruy băng, đặt làm nội dung ĐẦU TIÊN của h3 (::before)
   -> chỉ (các) dòng đầu né nó theo cơ chế float mặc định của trình duyệt, dòng sau tự lấy lại
   full chiều rộng, không cần biết trước tiêu đề dài mấy dòng.
   height PHẢI < line-height thật của h3 (font 1.02rem × line-height 1.35 ≈ 22px ở root 16px) —
   để 28px (>22px) từng khiến shim tràn qua cả dòng 2, ép hẹp luôn dòng đó (y hệt bug padding-right
   cũ). 20px chừa dư khoảng 2px an toàn, không tràn dòng. */
.job-card--urgent .head h3::before{content:"";float:right;width:100px;height:20px}
.badge-new{display:inline-flex;align-items:center;gap:3px;margin-left:6px;padding:2px 8px;border-radius:var(--radius);background:var(--info-light);color:var(--info-dark);font-size:.68rem;font-weight:700;letter-spacing:.02em;vertical-align:middle}
.job-card .applicant-count{display:inline-flex;align-items:center;gap:4px}
.job-card .logo{float:left;margin:0 14px 6px 0;width:52px;height:52px;border-radius:var(--radius-sm);background:var(--brand-light);color:var(--brand-dark);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.2rem}
.job-card .logo.cover-thumb{object-fit:cover}
.job-card .head::after{content:"";display:table;clear:both}
.job-card h3{margin:0 0 4px;font-size:1.02rem;line-height:1.35}
.job-card h3 a{color:var(--text);font-weight:normal}
.job-card h3 a:hover{color:var(--brand-dark)}
.job-card .company{font-size:.88rem;color:var(--muted)}
.job-card .meta-row{display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.8rem;color:var(--muted)}
.job-card .meta-row span{display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.job-card .salary{display:inline-block;background:var(--brand-light);color:var(--brand-dark);font-weight:700;font-size:.85rem;padding:4px 10px;border-radius:var(--radius)}
.job-card .bottom-row{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:4px 8px}
.job-card .posted{font-size:.78rem;color:var(--muted);white-space:nowrap}
.news-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.news-card{display:block;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:box-shadow .15s,border-color .15s;color:var(--text)}
.news-card:hover{box-shadow:var(--shadow-md);border-color:var(--brand)}
.news-card-thumb{aspect-ratio:16 / 9;background:var(--brand-light) center/cover no-repeat}
.news-card-thumb-empty{display:flex;align-items:center;justify-content:center;font-size:2rem}
.news-card-body{padding:14px}
.news-card-body h3{margin:4px 0 6px;font-size:1rem;line-height:1.35}
.news-card-body p{margin:0 0 8px;font-size:.85rem;color:var(--muted)}
.news-card-body time{font-size:.76rem;color:var(--muted)}
.news-card-category{display:inline-block;background:var(--brand-light);color:var(--brand-dark);font-weight:700;font-size:.72rem;padding:3px 9px;border-radius:var(--radius)}
.news-detail h1{margin:10px 0 6px}
.news-detail-date{display:block;color:var(--muted);font-size:.85rem;margin-bottom:16px}
.news-detail-thumb{width:100%;border-radius:var(--radius);margin-bottom:16px}
.news-detail-body{line-height:1.7}
@media (max-width: 900px) {
.news-grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width: 640px) {
.news-grid{grid-template-columns:1fr}
}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:11px 20px;border-radius:var(--radius-sm);border:none;background:var(--brand);color:#fff;cursor:pointer;text-decoration:none;font-size:.95rem;font-weight:600;white-space:nowrap}
.btn:hover{background:var(--brand-dark);color:#fff}
.btn.secondary{background:#fff;color:var(--brand-dark);border:1px solid var(--brand)}
.btn.secondary:hover{background:var(--brand-light)}
.btn.block{width:100%}
.btn.small{padding:7px 16px;font-size:.85rem}
.btn[hidden]{display:none}
.btn:disabled,.btn:disabled:hover{background:var(--border);border-color:var(--border);color:var(--muted);cursor:not-allowed}
.messages{list-style:none;padding:0;margin:16px 0}
.messages li{padding:10px 14px;border-radius:var(--radius-sm);margin-bottom:8px;background:#eef2ff;color:#3730a3;font-size:.9rem}
.messages li.error{background:#fee2e2;color:#991b1b}
.messages li.success{background:#dcfce7;color:#166534}
.page{padding-top:32px;padding-bottom:56px}
.page h1{font-size:1.6rem;margin:0 0 20px}
.search-form.advanced{flex-wrap:wrap;box-shadow:none;border:1px solid var(--border)}
.filter-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:24px;align-items:start}
.filter-layout--ai{grid-template-columns:1fr}
.filter-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;position:sticky;top:calc(var(--header-h) + var(--pv-pin-offset, 0px) + 16px)}
.filter-panel h4,.detail-search-widget h4{margin:0 0 6px;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.filter-panel select,.detail-search-widget select{width:100%;padding:9px 10px;border-radius:var(--radius-sm);border:1px solid var(--border);margin-bottom:14px;font-size:.9rem;background:#fff}
.result-count{color:var(--muted);font-size:.9rem;margin-bottom:14px}
.job-list-column{display:grid;grid-template-columns:repeat(2,1fr);gap:12px;align-content:start}
.job-list-column > .ai-chip-row,.job-list-column > .result-count,.job-list-column > .pager,.job-list-column > p,.job-list-column > script{grid-column:1 / -1}
.job-list-column.job-list-column--home{grid-template-columns:repeat(3,1fr)}
.job-cover-image{display:block;width:100%;max-height:320px;object-fit:cover;border-radius:var(--radius);margin:12px 0 20px}
.job-media-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;margin-bottom:20px}
.job-media-single{margin-bottom:20px}
.job-media-single .job-media-item{width:100%;max-height:520px;object-fit:contain;border-radius:8px;background:#000}
.job-media-carousel{position:relative;margin-bottom:20px;overflow:hidden;border-radius:8px;background:#000}
.job-media-track{display:flex;transition:transform .3s ease}
.job-media-slide{flex:0 0 100%;display:flex;align-items:center;justify-content:center;min-width:0}
.job-media-slide .job-media-item{width:100%;max-height:520px;object-fit:contain}
.job-media-nav{position:absolute;top:50%;transform:translateY(-50%);width:36px;height:36px;border-radius:50%;border:none;background:rgba(0,0,0,.5);color:#fff;font-size:1rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;z-index:2}
.job-media-nav:hover{background:rgba(0,0,0,.75)}
.job-media-prev{left:10px}
.job-media-next{right:10px}
.job-media-dots{position:absolute;bottom:10px;left:0;right:0;display:flex;justify-content:center;gap:6px;z-index:2}
.job-media-dot{width:8px;height:8px;border-radius:50%;border:none;background:rgba(255,255,255,.5);padding:0;cursor:pointer}
.job-media-dot.is-active{background:#fff}
.share-row{display:flex;align-items:center;gap:8px;margin-top:12px}
.share-btn{display:inline-flex;align-items:center;justify-content:center;width:34px;height:34px;border-radius:50%;background:var(--brand-light);font-size:1.1rem;text-decoration:none;border:none;padding:0;cursor:pointer;font-family:inherit}
.share-btn:hover{background:var(--brand)}
.share-btn svg{width:17px;height:17px;fill:#fff}
.share-btn--zalo{background:#0068ff}
.share-btn--zalo:hover{background:#0052cc}
.share-btn--facebook{background:#1877f2}
.share-btn--facebook:hover{background:#145dbf}
.share-btn--linkedin{background:#0a66c2}
.share-btn--linkedin:hover{background:#084e94}
.job-action-share{display:flex;align-items:center;gap:8px;margin-left:auto}
.btn-favorite{display:inline-flex;align-items:center;gap:7px;background:var(--surface);color:var(--text);border:1px solid var(--border);border-radius:var(--radius-sm);padding:0 16px;height:42px;font-weight:600;font-size:.95rem;cursor:pointer;font-family:inherit}
.btn-favorite:hover{border-color:#e11d48;color:#e11d48}
.btn-favorite-icon{width:19px;height:19px;flex-shrink:0}
.btn-favorite.is-active{border-color:#e11d48;color:#e11d48;background:#fef2f4}
.btn-follow-company.is-active{border-color:var(--brand);color:var(--brand-dark);background:var(--brand-light)}
.job-media-item{width:100%;height:140px;object-fit:cover;border-radius:var(--radius-sm);border:1px solid var(--border);background:#000}
.job-media-cell{position:relative}
.job-media-cover-form{position:absolute;top:6px;right:6px;margin:0}
.job-media-cover-btn{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;border:none;background:#0000008c;color:#fff;font-size:1rem;cursor:pointer;line-height:1}
.job-media-cover-btn.is-cover{background:#f59e0b;color:#fff}
.license-pdf-chip{display:flex;align-items:center;justify-content:center;width:100%;height:140px;border-radius:var(--radius-sm);border:1px solid var(--border);background:#f3f4f6;color:var(--text);font-weight:600}
#job-apply-anchor{height:1px}
.job-apply-bar{position:fixed;left:0;right:0;bottom:0;z-index:160;transform:translateY(110%);transition:transform .25s ease;background:linear-gradient(135deg,#f97316,#f59e0b);box-shadow:0 -4px 16px #0000002e}
.job-apply-bar.is-visible{transform:translateY(0)}
.job-apply-bar-inner{max-width:1120px;margin:0 auto;display:flex;align-items:center;gap:16px;padding:12px 20px}
.job-apply-bar-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:2px;color:#fff}
.job-apply-bar-title{font-size:.95rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.job-apply-bar-location{display:flex;align-items:center;gap:6px;font-size:.8rem;color:#fffdf5cc;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.job-apply-bar-location-icon{width:14px;height:14px;flex-shrink:0}
.job-apply-bar-cta{flex-shrink:0;background:#fff;color:#c2410c}
.job-apply-bar-cta:hover{background:#fff7ed;color:#9a3412}
.job-apply-bar-cta--note{font-size:.85rem;color:#fff;font-style:italic}
.job-apply-bar--inline{position:static;left:auto;right:auto;bottom:auto;transform:none;transition:none;z-index:auto;border-radius:0;box-shadow:none;margin:20px -28px}
.detail-layout{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:28px;align-items:start}
.detail-left-col{display:flex;flex-direction:column;gap:28px}
.detail-related-desktop-only{display:flex;flex-direction:column;gap:28px}
.detail-related-mobile-only{display:none}
.detail-main{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:28px}
.detail-main h1{font-size:1.5rem;margin-bottom:6px}
.detail-main h2{font-size:1.15rem;margin:26px 0 12px}
.detail-main h3{font-size:1rem;margin:22px 0 8px}
.job-quick-info{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin:18px 0;padding:16px 0;border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.job-quick-info-item{display:flex;align-items:center;gap:10px}
.job-quick-info-icon{flex-shrink:0;width:36px;height:36px;border-radius:50%;background:var(--brand-light);display:flex;align-items:center;justify-content:center;font-size:1.05rem}
.job-quick-info-label{display:block;font-size:.78rem;color:var(--muted)}
.job-quick-info-value{display:block;font-weight:700;font-size:.92rem}
.job-meta-line{margin:0 0 8px;font-size:.9rem}
.job-meta-label{color:var(--muted)}
.job-meta-sep{color:var(--muted);display:inline-block;transform:scaleY(0.65)}
.job-deadline{margin:0 0 16px;color:var(--muted);font-size:.9rem}
.job-deadline strong{color:var(--text)}
.job-action-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:20px}
.job-action-note{margin:0}
.job-location-block{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-sm);padding:14px 16px;margin-bottom:20px}
.job-location-line{display:flex;align-items:center;gap:8px;margin:0;font-weight:600}
.job-location-icon{width:18px;height:18px;flex-shrink:0;color:var(--brand-dark)}
.job-categories{margin-top:18px;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
.job-categories a{color:var(--brand-dark);font-weight:600}
.job-categories-icon{width:18px;height:18px;flex-shrink:0;color:var(--brand-dark)}
/* --pv-pin-offset: chiều cao box bộ lọc đang GHIM (position:fixed), do pv-search.js đặt lên
   <body> lúc ghim và xoá khi gỡ. Cộng vào 'top' của các cột sticky để chúng dừng NGAY DƯỚI
   box bộ lọc, không bị box đè lên (mặc định 0px khi không ghim). */
.detail-side{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:22px;position:sticky;top:calc(var(--header-h) + var(--pv-pin-offset, 0px) + 16px);text-align:center}
.detail-side-stack{display:flex;flex-direction:column;gap:16px;position:sticky;top:calc(var(--header-h) + var(--pv-pin-offset, 0px) + 16px)}
.detail-side-stack .detail-side{position:static}
.detail-search-widget{text-align:left;padding:18px}
/* Focus ô search -> form lọc "Tìm X khác" được "đưa lên trên" (giá trị nhân vào bảng lọc ghim
   ở navbar): ẩn RIÊNG <form> lọc ở sidebar, GIỮ tiêu đề + .sidebar-search-results như onload.
   pv-search.js::initDetailFilterWidget bật/tắt class này. */
.detail-realestate-search form>input[type="search"]{width:100%;padding:9px 10px;margin-bottom:12px;border:1px solid var(--border);border-radius:var(--radius-sm);font:inherit}
.detail-realestate-search .search-filters-row{display:flex;flex-direction:column;align-items:stretch;gap:8px;margin:0 0 12px}
.detail-realestate-search .search-filters-row .filter-slot{width:100%;min-height:38px}
.detail-realestate-search .search-filters-row .filter-slot select{width:100%;max-width:none}
.detail-realestate-search .btn{width:100%}
.detail-search-widget.is-form-lifted > form{display:none}
.detail-contact{text-align:left;margin-top:18px;padding-top:18px;border-top:1px solid var(--border)}
.detail-contact h4{margin:0 0 10px}
.detail-contact-name{display:flex;align-items:center;gap:6px;font-weight:600;margin:0 0 10px}
.detail-contact-icon{width:16px;height:16px;flex-shrink:0;color:var(--muted)}
.detail-contact-info{display:flex;flex-direction:column;gap:8px;margin-top:10px}
.detail-contact-info p{margin:0;font-size:.9rem}
.detail-contact-phone--revealed{color:var(--text);font-weight:600;cursor:default}
.detail-contact-error{color:var(--urgent);background:var(--urgent-light);border-radius:var(--radius-sm);padding:8px 10px}
.detail-contact-social{display:flex;align-items:center;gap:8px}
.detail-general-info{text-align:left}
.detail-general-info h4{margin:0 0 12px}
.detail-general-info .info-row{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:.88rem;padding:8px 0;border-top:1px solid var(--border)}
.detail-general-info .info-row:first-of-type{border-top:none}
.detail-general-info .info-row span{color:var(--muted)}
.detail-side .company-avatar{width:64px;height:64px;margin:0 auto 12px;border-radius:var(--radius-sm);background:var(--brand-light);color:var(--brand-dark);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.5rem}
.detail-side .company-avatar img,.company-info-card .company-avatar img{width:100%;height:100%;object-fit:contain;border-radius:inherit;display:block}
.detail-company-link{display:block;color:inherit;text-decoration:none}
.detail-company-link h3:hover{color:var(--brand-dark);text-decoration:underline}
.company-profile-panel{text-align:left}
.company-profile-description{font-size:.9rem;color:var(--muted);margin:4px 0 14px}
.company-profile-row{font-size:.9rem;margin:0 0 10px}
.company-profile-social{margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}
/* Thẻ thông tin doanh nghiệp dùng chung (job_detail sidebar + company_detail panel) — xem
   templates/jobs/_company_info_card.html. Ép cùng một diện mạo bất kể khung cha căn giữa hay trái. */
.company-info-card{text-align:left}
.company-info-card .company-avatar{width:64px;height:64px;margin:0 auto 12px;border-radius:var(--radius-sm);background:var(--brand-light);color:var(--brand-dark);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:1.5rem}
.company-info-card .company-info-name{margin:0 0 14px;text-align:center;font-size:1.15rem;line-height:1.3}
.company-info-card .btn-follow-company{width:100%;margin:0}
.related-jobs,.related-candidates{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;align-content:start}
.detail-related h2{margin-top:0;margin-bottom:12px}
.detail-main .cv-sheet{max-width:none;margin:0;border:none;padding:0}
.pager{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:24px;font-size:.9rem;color:var(--muted)}
.pager-status{display:inline-flex;align-items:center;gap:6px}
.pager-input{width:44px;padding:5px 4px;text-align:center;font-size:.9rem;font-weight:600;color:var(--text);background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);-moz-appearance:textfield}
.pager-input::-webkit-outer-spin-button,.pager-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}
.pager-input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 2px var(--brand-light)}
.sidebar-search-results{display:flex;flex-direction:column;gap:10px;margin-top:16px}
.sidebar-search-results .pager{margin-top:8px;gap:8px;font-size:.85rem;flex-wrap:wrap}
.chat-box{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;min-height:320px;margin-bottom:16px}
.chat-msg{margin-bottom:10px;padding:10px 14px;border-radius:var(--radius-sm);max-width:80%;font-size:.92rem}
.chat-msg.user{background:var(--brand);color:#fff;margin-left:auto}
.chat-msg.assistant{background:var(--bg)}
form.chat-input{display:flex;gap:8px}
form.chat-input textarea{flex:1;padding:11px;border-radius:var(--radius-sm);border:1px solid var(--border);resize:vertical;font-family:inherit}
.email-verify-widget{margin:-10px 0 16px}
.email-verify-status{margin:0 0 8px;font-size:.85rem;color:var(--muted)}
.email-verify-status.verified{color:var(--brand-dark);font-weight:600}
.email-verify-box{margin-top:0}
.email-verify-box .btn{margin-bottom:8px}
.email-verify-code-row{display:flex;gap:8px;margin-bottom:8px}
.email-verify-code-row[hidden]{display:none}
.email-verify-code-row input{flex:1;min-width:0;padding:9px 12px;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-family:inherit;font-size:.92rem}
.email-verify-hint{margin:0 0 8px;font-size:.8rem;color:var(--muted)}
.email-verify-inline-link{color:var(--brand-dark);font-weight:600;text-decoration:underline;cursor:pointer}
.email-verify-inline-link:hover{color:var(--brand)}
.email-verify-error{margin:0 0 8px;font-size:.82rem;color:var(--urgent)}
.field-error{margin:-10px 0 14px;color:var(--urgent);font-size:.82rem}
.form-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:26px;max-width:440px}
.form-card.wide{max-width:640px}
.form-card.plain{background:transparent;border:none;border-radius:0;padding:0;max-width:none}
.form-card.borderless{background:transparent;border:none;border-radius:0;padding:0;max-width:none}
.form-card p{margin:14px 0}
.form-card input,.form-card select,.form-card textarea{width:100%;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);font-family:inherit;font-size:.92rem}
.form-card input[type="checkbox"],.form-card input[type="radio"]{width:auto;padding:0;border:none}
.form-card label{font-size:.85rem;color:var(--muted);display:block;margin-bottom:4px}
.form-card .form-floating:nth-of-type(5n+1){--field-accent:var(--brand)}
.form-card .form-floating:nth-of-type(5n+2){--field-accent:#0ea5e9}
.form-card .form-floating:nth-of-type(5n+3){--field-accent:#f97316}
.form-card .form-floating:nth-of-type(5n+4){--field-accent:#a855f7}
.form-card .form-floating:nth-of-type(5n+5){--field-accent:#ec4899}
.form-floating{position:relative;margin-bottom:16px}
.form-floating > input,.form-floating > select,.form-floating > textarea{width:100%;height:calc(3.3rem + 2px);padding:1.5rem .9rem .5rem;border:1.5px solid var(--border);border-radius:var(--radius-sm);font-family:inherit;font-size:.95rem;background:var(--surface);color:var(--text);transition:border-color .15s,box-shadow .15s}
.form-floating > textarea{height:auto;min-height:110px;resize:vertical;padding-top:1.6rem}
.form-floating > label{position:absolute;z-index:2;top:0;left:0;height:100%;max-width:100%;padding:1rem .9rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;pointer-events:none;color:var(--muted);font-size:.95rem;transform-origin:0 0;transition:opacity .1s ease-in-out,transform .15s ease-in-out,color .15s}
.form-floating > select ~ label,.form-floating > .tag-picker ~ label,.form-floating > input:focus ~ label,.form-floating > input:not(:placeholder-shown) ~ label,.form-floating > textarea:focus ~ label,.form-floating > textarea:not(:placeholder-shown) ~ label{opacity:.8;transform:scale(.82) translateY(-.65rem) translateX(.2rem)}
.form-floating > input:focus ~ label,.form-floating > textarea:focus ~ label{color:var(--field-accent,var(--brand-dark));font-weight:600}
.form-floating > input:focus,.form-floating > select:focus,.form-floating > textarea:focus{border-color:var(--field-accent,var(--brand));box-shadow:0 0 0 3px color-mix(in srgb,var(--field-accent,var(--brand)) 18%,transparent);outline:none}
.form-floating > input::placeholder,.form-floating > textarea::placeholder{color:transparent}
.form-card .field-hint{margin:-8px 0 14px}
.logo-dropzone{position:relative;display:flex;align-items:center;justify-content:center;min-height:140px;padding:20px;margin-bottom:16px;border:1.5px dashed var(--border);border-radius:var(--radius);background:#f3f4f6;cursor:pointer;text-align:center;transition:border-color .15s}
.logo-dropzone:hover,.logo-dropzone.is-dragover{border-color:var(--brand)}
.logo-dropzone input[type="file"]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.logo-dropzone-empty,.logo-dropzone-preview{display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}
.logo-dropzone-icon{font-size:1.8rem}
.logo-dropzone-hint{margin:0;color:var(--muted);font-size:.88rem}
.logo-dropzone-preview img{max-height:96px;max-width:100%;border-radius:var(--radius-sm);object-fit:contain}
.logo-dropzone-replace{color:var(--brand-dark);font-weight:600;font-size:.85rem}
.avatar-dropzone{min-height:auto;padding:16px}
.avatar-dropzone .logo-dropzone-preview img{width:96px;height:96px;border-radius:50%;object-fit:cover;max-height:none}
.avatar-crop-stage{display:flex;justify-content:center;margin-bottom:12px;background:#111827;border-radius:var(--radius-sm);overflow:hidden}
#avatar-crop-canvas{cursor:grab;touch-action:none}
#avatar-crop-canvas:active{cursor:grabbing}
.avatar-crop-zoom{width:100%;margin-bottom:12px}
.avatar-crop-actions{display:flex;gap:10px;justify-content:flex-end}
#id-card-section{margin-bottom:24px}
.combo-dropzone{border:1.5px solid var(--border);border-radius:var(--radius);overflow:hidden;transition:border-color .15s}
.combo-dropzone.is-dragover{border-color:var(--brand)}
.combo-dropzone-url{display:block;width:100%;padding:12px 14px;border:none;border-bottom:1px solid var(--border);background:var(--surface);color:var(--text);font-family:inherit;font-size:.92rem}
.combo-dropzone-url:focus{outline:none;background:color-mix(in srgb,var(--brand) 6%,var(--surface))}
.combo-dropzone-zone{position:relative;padding:18px;text-align:center;background:#f3f4f6;cursor:pointer}
.combo-dropzone-zone input[type="file"]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:pointer}
.combo-dropzone-hint{display:flex;flex-direction:column;align-items:center;gap:6px;pointer-events:none}
.combo-dropzone-hint span{font-size:1.5rem}
.combo-dropzone-hint p{margin:0;color:var(--muted);font-size:.85rem}
.salary-field.is-locked{opacity:.5}
.salary-field.is-locked input{background:var(--bg);cursor:not-allowed}
.radio-toggle-label{display:block;font-size:.85rem;color:var(--muted);margin:4px 0 8px}
.radio-toggle-group{display:flex;gap:10px;margin-bottom:16px}
.radio-toggle-option{flex:1;display:flex;align-items:center;gap:8px;padding:14px 16px;border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);cursor:pointer;font-size:.92rem;transition:border-color .15s,background .15s}
.radio-toggle-option input[type="radio"]{accent-color:var(--brand);width:17px;height:17px;margin:0;flex-shrink:0}
.radio-toggle-option:has(input:checked){border-color:var(--brand);background:var(--brand-light);font-weight:600}
.form-section{margin-top:28px;padding-top:20px;border-top:1px solid var(--border)}
.form-section:first-child{margin-top:0;padding-top:0;border-top:none}
.form-section-title{margin:0 0 16px;font-size:1.05rem;color:var(--brand-dark)}
.brief-toggle-label{display:inline-flex;align-items:center;gap:6px;font-size:.82rem;font-weight:500;color:var(--muted);white-space:nowrap;cursor:pointer}
label.terms-checkbox{display:flex;align-items:flex-start;gap:8px;margin:24px 0 16px;padding-top:20px;border-top:1px solid var(--border);font-size:.9rem}
.terms-checkbox input{margin-top:3px;flex-shrink:0}
.tag-picker{position:relative;margin-bottom:4px}
.form-floating > .tag-picker{border:1.5px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);padding:1.5rem .9rem .5rem;margin-bottom:0}
.form-floating > .tag-picker .tag-picker-input{border:none;padding:4px 0}
.tag-picker-chips{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px}
.tag-picker-chip{display:inline-flex;align-items:center;gap:6px;background:var(--brand-light);color:var(--brand-dark);font-size:.85rem;font-weight:600;padding:4px 6px 4px 12px;border-radius:var(--radius)}
.tag-picker-chip-remove{border:none;background:transparent;color:var(--brand-dark);font-size:1rem;line-height:1;cursor:pointer;padding:2px 6px}
.tag-picker-chip-remove:hover{color:var(--urgent)}
.tag-picker-input{width:100%;padding:10px 12px;border-radius:var(--radius-sm);border:1px solid var(--border);font-family:inherit;font-size:.92rem}
.tag-picker-suggestions{position:absolute;z-index:20;left:0;right:0;top:100%;margin-top:4px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);box-shadow:var(--shadow-md);max-height:220px;overflow-y:auto}
.tag-picker-suggestion{padding:8px 12px;font-size:.9rem;cursor:pointer}
.tag-picker-suggestion:hover{background:var(--brand-light)}
.tag-picker-suggestion--new{color:var(--brand-dark);font-weight:600;border-top:1px solid var(--border)}
.school-picker{position:relative;margin-bottom:4px}
.email-compose-form{max-width:640px;padding:0;overflow:hidden}
.email-field{display:flex;align-items:center;gap:12px;padding:12px 20px;border-bottom:1px solid var(--border)}
.email-field label{flex:0 0 90px;margin-bottom:0}
.email-field input,.email-field select{flex:1;border:none;padding:4px 0}
.email-field input:focus,.email-field select:focus{outline:none}
.email-field-value{flex:1;font-size:.92rem}
.email-field .field-hint{flex:0 0 auto;font-size:.78rem}
.email-field-body{flex-direction:column;align-items:stretch;border-bottom:none}
.email-field-body label{margin-bottom:8px}
.email-field-body textarea{border:none;padding:0;resize:vertical}
.email-compose-form .btn.block{margin:16px 20px 20px;width:calc(100% - 40px)}
.social-login-list{display:flex;flex-direction:column;gap:10px;max-width:320px}
.social-login-list a{display:block;padding:12px 16px;border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;text-align:center;font-weight:600}
.social-login-list a:hover{border-color:var(--brand);color:var(--brand-dark)}
.list-row{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;margin-bottom:12px}
.list-row h3{margin:0 0 6px;font-size:1rem}
.list-row .meta-row{margin-bottom:8px}
.list-row .actions a{margin-right:14px;font-weight:600;font-size:.88rem}
.candidate-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;transition:box-shadow .15s,border-color .15s;display:flex;flex-direction:column;gap:12px}
.candidate-card:hover{box-shadow:var(--shadow-md);border-color:var(--brand)}
.candidate-card-head{display:flex;align-items:center;gap:14px;color:inherit;text-decoration:none}
.candidate-card-head h3{margin:0 0 2px;font-size:1.02rem;line-height:1.35}
.candidate-card-head:hover h3{color:var(--brand-dark)}
.candidate-card-avatar{flex:0 0 auto;width:60px;height:60px;border-radius:50%;object-fit:cover;border:2px solid var(--brand-light)}
.candidate-card-avatar--placeholder{display:flex;align-items:center;justify-content:center;background:var(--brand-light);color:var(--brand-dark);font-weight:800;font-size:1.3rem}
.candidate-card-address{margin:0;font-size:.85rem;color:var(--muted)}
.candidate-card .meta-row{display:flex;flex-wrap:wrap;gap:6px 14px;margin:0;font-size:.85rem;color:var(--muted)}
.candidate-card .meta-row span{display:inline-flex;align-items:center;gap:4px}
/* Ô thứ 9 "còn nhiều hồ sơ khác" — viền đứt + nền nhạt để phân biệt rõ với 8 thẻ hồ sơ thật
   phía trên, không để người dùng tưởng nhầm đây cũng là 1 ứng viên. */
.candidate-card--more{align-items:center;justify-content:center;text-align:center;gap:6px;background:var(--brand-light);border:1.5px dashed var(--brand);color:inherit;text-decoration:none}
.candidate-card--more:hover{border-style:solid}
.candidate-card-more-count{font-size:1.7rem;font-weight:800;color:var(--brand-dark)}
.candidate-card-more-text{margin:0;font-size:.85rem;color:var(--muted);max-width:22ch}
.candidate-card--more .btn{pointer-events:none}
/* Trang "Trường đại học có thực tập sinh" (jobs/university_list.html + university_majors.html) */
.uni-hero{max-width:720px;margin:0 auto 6px;text-align:center}
.uni-hero h1{margin:0 0 8px}
.uni-intro{color:var(--muted);max-width:60ch;margin:0 auto 4px;text-align:center}
.uni-disclaimer{color:var(--muted);font-size:.82rem;max-width:60ch;margin:0 auto 18px;text-align:center}
.uni-search{display:flex;gap:8px;width:100%;max-width:640px;margin:0 auto;border:2px solid var(--brand);border-radius:var(--radius);background:#fff;padding:6px 6px 6px 20px;box-shadow:0 8px 24px #16a34a2e}
.uni-search input{flex:1 1 auto;min-width:0;height:42px;border:0;background:transparent;color:inherit;font-size:.92rem}
.uni-search input:focus{outline:none}
.uni-search .btn{flex:0 0 auto;height:42px;padding:0 24px;border-radius:var(--radius)}
/* Khối import — cố ý tách biệt hình ảnh khỏi khối tìm kiếm chính (eyebrow + viền trái nhấn màu
   brand thay vì thẻ trắng nổi bật như .uni-search/.uni-card): đây là tiện ích phụ cho
   trường/đơn vị đào tạo, không phải hành động chính của trang. */
.uni-import-panel{max-width:640px;margin:22px auto 30px;background:var(--surface);border:1px solid var(--border);border-left:3px solid var(--brand);border-radius:var(--radius);padding:18px 22px}
.uni-import-panel-eyebrow{margin:0 0 4px;font-size:.68rem;font-weight:800;letter-spacing:.08em;color:var(--brand-dark);text-transform:uppercase}
.uni-import-panel-heading{margin:0 0 12px;font-weight:600;font-size:.92rem;color:var(--text)}
.uni-import-picker{margin-bottom:0}
.uni-import-dropzone{position:relative;margin-top:14px;padding:18px;border:1.5px dashed var(--border);border-radius:var(--radius);text-align:center;transition:border-color .15s,background-color .15s}
.uni-import-dropzone.is-dragover{border-color:var(--brand);background:var(--brand-light)}
.uni-import-dropzone-text{margin:0 0 10px;font-size:.85rem;color:var(--muted)}
.uni-import-dropzone-status{margin:10px 0 0;font-size:.85rem;color:var(--brand-dark)}
.uni-import-dropzone-status.uni-import-status--error{color:var(--urgent)}
.uni-import-results{margin-top:8px;margin-bottom:26px}
.uni-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:16px;margin-top:8px}
.uni-card{display:flex;flex-direction:column;gap:8px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;text-decoration:none;color:inherit;transition:box-shadow .15s,border-color .15s}
.uni-card:hover{box-shadow:var(--shadow-md);border-color:var(--brand)}
.uni-card-name{font-weight:700;font-size:1rem;line-height:1.35}
.uni-card-count{font-size:.88rem;color:var(--muted)}
.uni-card-cta{margin-top:2px;font-size:.85rem;font-weight:600;color:var(--brand-dark)}
/* Nút "Báo sai" trường/ngành (jobs/university_majors.html + static/js/pv-school-report.js) */
.btn-link-report{background:none;border:none;padding:2px 4px;font-size:.78rem;color:var(--muted);cursor:pointer;text-decoration:underline;white-space:nowrap}
.btn-link-report:hover{color:var(--urgent)}
.btn-link-report[disabled]{opacity:.65;cursor:default;text-decoration:none}
.uni-card-wrap{position:relative}
.uni-card-wrap .uni-card-report{position:absolute;top:8px;right:8px;background:var(--surface)}
.candidate-invite-form{display:flex;gap:8px;margin-top:10px}
.candidate-invite-select{flex:1 1 auto;min-width:0;height:42px;padding:0 14px;border-radius:var(--radius-sm);border:1px solid var(--border);background:#fff;color:inherit;font-size:.9rem}
.candidate-invite-form .btn{flex:0 0 auto;height:42px;padding:0 20px}
.link-button{background:none;border:none;padding:0;color:var(--brand-dark);font:inherit;font-weight:600;font-size:.88rem;cursor:pointer;text-decoration:none}
.link-button:hover{text-decoration:underline}
.table-scroll{overflow-x:auto}
.data-table{width:100%;border-collapse:collapse;white-space:nowrap}
.data-table th,.data-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--border);font-size:.9rem}
.data-table th{color:var(--muted);font-weight:600;font-size:.78rem;text-transform:uppercase;letter-spacing:.03em}
.data-table tbody tr:last-child td{border-bottom:none}
.data-table td.text-end,.data-table th.text-end{text-align:right}
.data-table td.text-center{text-align:center;color:var(--muted)}
.data-table td.text-end a,.data-table td.text-end .inline-form{margin-left:14px;font-weight:600;font-size:.88rem}
.data-table td.text-end .inline-form{display:inline}
.breadcrumb{display:flex;align-items:center;flex-wrap:wrap;gap:6px;font-size:.85rem;color:var(--muted);margin-bottom:18px;min-width:0;flex:1 1 auto}
.breadcrumb a{color:var(--muted)}
.breadcrumb a:hover{color:var(--brand-dark)}
.breadcrumb .crumb-sep{color:var(--border)}
.breadcrumb .crumb-current{color:var(--text);font-weight:600;margin:0;font-size:inherit;line-height:inherit;display:inline}
.member-toolbar{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:8px 12px}
.member-toolbar .breadcrumb{margin-bottom:0}
.member-nav-mobile{display:none}
.member-nav{display:flex;flex-direction:column;gap:2px}
.member-nav-link{display:block;padding:9px 10px;border-radius:var(--radius-sm);font-size:.92rem;font-weight:600;color:var(--text)}
.member-nav-link:hover{background:var(--brand-light);color:var(--brand-dark)}
.member-nav-link.active{background:var(--brand);color:#fff}
.member-nav-link.active:hover{color:#fff}
.member-nav-sep{height:1px;background:var(--border);margin:8px 4px}
.member-nav-logout-form{display:contents}
.member-nav-logout{width:100%;text-align:left;background:none;border:none;cursor:pointer;font-family:inherit;color:var(--urgent)}
.member-nav-logout:hover{background:var(--urgent-light);color:var(--urgent)}
.member-content{min-width:0}
.site-footer{background:#10241a;color:#cfe8d8;margin-top:48px}
.footer-newsletter{padding-top:36px;padding-bottom:4px}
.footer-newsletter .newsletter-box{background:#ffffff0a;border-color:#ffffff24}
.footer-newsletter .newsletter-msg{color:#eaf5ee}
.footer-newsletter .newsletter-msg strong{color:#fff}
.footer-newsletter .newsletter-social-label{color:#a8c9b4}
.footer-newsletter .newsletter-email-form{background:#fff;border-color:#ffffff24}
.footer-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:24px;padding-top:40px;padding-bottom:24px}
.footer-grid h4{color:#fff;font-size:.95rem;margin:0 0 12px}
.footer-grid p,.footer-grid a{color:#a8c9b4;font-size:.88rem}
.footer-grid a{display:block;margin-bottom:6px}
.footer-grid a:hover{color:#fff}
.footer-cats{display:flex;flex-wrap:wrap;gap:2px 10px}
.footer-cats a{margin-bottom:4px}
.footer-bottom{border-top:1px solid #ffffff1f;padding:16px 20px;text-align:center;font-size:.8rem;color:#8fb69d}
.cookie-consent{position:fixed;left:0;right:0;bottom:0;z-index:200;background:var(--brand-dark);box-shadow:0 -2px 12px #10182826;padding:14px 16px}
.cookie-consent-inner{max-width:1100px;margin:0 auto;display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.cookie-consent p{margin:0;flex:1 1 320px;font-size:.85rem;color:#eafbf0}
.cookie-consent a{color:#fff;text-decoration:underline}
.cookie-consent .btn{flex:0 0 auto;background:var(--urgent)}
.cookie-consent .btn:hover{background:#dc2626}
@media (max-width: 860px) {
.category-grid,.job-grid,.job-grid--home{grid-template-columns:repeat(2,1fr)}
.job-list-column{grid-template-columns:1fr}
.job-list-column.job-list-column--home{grid-template-columns:repeat(2,1fr)}
.related-jobs,.related-candidates{grid-template-columns:1fr}
.filter-layout,.detail-layout{grid-template-columns:1fr}
.filter-panel,.detail-side,.detail-side-stack{position:static}
.detail-related-desktop-only{display:none}
.detail-related-mobile-only{display:flex;flex-direction:column;gap:28px;margin-top:28px}
.job-quick-info{grid-template-columns:repeat(2,1fr)}
.member-nav-panel{display:none}
.member-nav-mobile{display:block;position:relative;flex-shrink:0}
.member-nav-toggle-input{position:absolute;opacity:0;pointer-events:none}
.member-nav-current{display:flex;align-items:center;gap:6px;padding:8px 10px;border-radius:var(--radius-sm);font-size:.85rem;font-weight:600;color:var(--brand-dark);background:var(--brand-light);cursor:pointer;white-space:nowrap}
.member-nav-caret{font-size:.75rem;transition:transform .15s ease}
.member-nav-toggle-input:checked ~ .member-nav-current .member-nav-caret{transform:rotate(180deg)}
.member-nav-dropdown{display:none;position:absolute;top:calc(100% + 6px);right:0;z-index:60;min-width:220px;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-md);padding:8px;flex-direction:column;gap:2px}
.member-nav-toggle-input:checked ~ .member-nav-dropdown{display:flex}
.footer-grid{grid-template-columns:1fr 1fr}
}
@media (max-width: 640px) {
.bottom-nav{display:flex;align-items:flex-end;justify-content:space-around}
body{padding-bottom:68px}
body.pv-detail-search{padding-bottom:68px}
.cookie-consent{bottom:68px}
.job-apply-bar{bottom:68px}
body.pv-detail-search .job-apply-bar{bottom:68px}
.job-apply-bar-inner{padding:8px 12px;gap:10px}
.job-apply-bar-title{font-size:.85rem}
.job-apply-bar-location{font-size:.72rem}
.job-apply-bar-cta{padding:9px 14px;font-size:.85rem}
.navbar{display:flex;flex-wrap:nowrap;align-items:center;gap:6px}
.navbar .burger{display:flex;order:3;margin-left:auto}
.site-menu{display:none}
.navbar .brand{order:1;justify-self:auto;max-width:60px;overflow:hidden;text-overflow:ellipsis;font-size:1.05rem}
.navbar-search-slot:not([hidden]){display:flex;order:2;flex:1 1 auto;min-width:0}
.chip-trigger--desktop{display:none}
.chip-trigger--mobile{display:none}
.chip-menu{display:none!important}
.navbar-actions{display:none}
#pv-fav-link-desktop{display:none}
#pv-notif-link-desktop{display:none}
.navbar-search-slot .header-search-form{flex-wrap:nowrap;width:100%;max-width:none;margin:0;height:34px;padding:0 3px 0 12px;border-radius:5px;border-color:#fff;box-shadow:none}
.navbar-search-slot .hsf-icon{order:0}
.navbar-search-slot .hsf-textarea{min-height:0;padding:0 4px;line-height:34px;font-size:.86rem;height:100%}
.navbar-search-slot .sms-select{display:none}
.ai-conv--overlay{max-width:none;margin:0;border-radius:0;border-left:0;border-right:0;border-top:0}
.navbar-search-slot .hsf-submit-min{display:none}
.header-search-form{flex-wrap:wrap;border-radius:var(--radius);padding:8px}
.header-search-form input[type="text"]{flex:1 1 100%;order:1}
.header-search-form .hsf-icon{order:1}
.header-search-form .hsf-sep{display:none}
.header-search-form select{flex:1 1 auto;order:2;max-width:none;border-top:1px solid var(--border)}
.header-search-form .hsf-submit{flex:1 1 auto;order:3;border-radius:var(--radius-sm)}
.header-search-band{display:none}
/* pv-search.js::pinSearchBox — .home-search-box.is-pinned dùng position:fixed để thoát
   overflow/visibility:hidden của tổ tiên, nhưng display:none (dòng trên) thì KHÔNG phần tử con
   nào thoát được — phải tự bật lại display ở chính .header-search-band lúc ghim. */
.header-search-band.pv-band-force-visible{display:grid!important}
.header-hero-text{margin:4px 0 12px}
.header-hero-text h1{font-size:clamp(1.3rem,5vw,1.8rem)}
.header-hero-text .tagline{font-size:.92rem}
.home-filter-row,.home-filter-row .location-picker{flex-direction:column;align-items:stretch}
.home-filter-row select,.home-filter-row .btn,.home-filter-row .filter-slot,.home-filter-row .loc-chip{width:100%}
.home-filter-row .home-filter-actions{flex-direction:column;align-items:stretch;width:100%;margin-left:0}
.home-filter-row .filter-clear-all{width:100%;justify-content:center;margin-left:0}
.home-filter-row .filter-slot{justify-content:flex-start}
.home-filter-row .filter-slot--loc{border:0}
.home-filter-row .loc-picker-wrap:not([hidden]){display:block;width:100%}
.home-filter-row .filter-slot--cat,.home-filter-row .salary-range{flex-direction:column;align-items:stretch}
/* .cat-panel/.salary-range-panel đã position:static mặc định (site.css, cạnh .pv-pin-close) — bỏ override mobile trùng lặp ở đây. */
.home-filter-row .filter-slot--cat.is-open,.home-filter-row .salary-range[data-open="1"]{border-radius:var(--radius-sm)}
.filter-slot .filter-control,.filter-slot select{flex:1;max-width:none}
.filter-slot .fc-label{flex:1;text-align:left}
.filter-slot .filter-control{white-space:normal;align-items:flex-start;text-align:left}
.filter-slot select{text-align:left}
.home-filter-row .loc-chip-text{font-weight:400;white-space:normal;overflow:visible;text-overflow:clip}
.filter-slot .fc-caret{margin-top:3px}
.loc-picker-wrap select{width:100%}
.cat-panel,.cat-panel-list{max-width:none;grid-template-columns:1fr}
.salary-range-pill{width:100%;justify-content:flex-start}
.salary-range-panel{max-width:none;padding:14px}
/* Mobile trang chi tiết: panel ghim phải xếp dọc để không cắt chip khu vực
   hoặc đẩy các filter còn lại ra ngoài viewport. Rule này đặt sau nhóm desktop
   pinned để thắng specificity của .home-search-box.is-pinned. */
.home-search-box.is-pinned{padding:8px 12px 10px;max-height:calc(100dvh - var(--header-h));overflow-y:auto;overflow-x:hidden}
.home-search-box.is-pinned .home-filter-row{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto auto;align-items:center;gap:8px;overflow:visible}
.home-search-box.is-pinned .pv-pin-closebar{grid-column:1;grid-row:1;width:auto;justify-content:center;margin:0}
.home-search-box.is-pinned .search-filters-row{display:contents}
.home-search-box.is-pinned .search-filter-location-group{display:contents}
.home-search-box.is-pinned .search-filters-row>.search-filter-location-group>.filter-slot--loc{grid-column:2;grid-row:1;width:100%;flex:0 0 auto}
.home-search-box.is-pinned .search-filter-rest{display:flex;grid-column:1 / -1;grid-row:2;align-items:center;gap:8px;width:100%;min-width:0;overflow-x:auto;overflow-y:hidden;padding:0 1px 4px;scrollbar-width:thin}
.home-search-box.is-pinned .search-filter-rest>.filter-slot{width:auto;min-width:max-content;flex:0 0 auto}
.home-search-box.is-pinned .home-filter-actions{grid-column:1 / -1;grid-row:3;width:100%;display:flex;align-items:center;gap:8px;margin:0}
.home-search-box.is-pinned .home-filter-actions .btn{display:none}
.home-search-box.is-pinned .hsf-submit-icon{display:inline}
.navbar-search-slot .header-search-form .hsf-submit-min{display:inline-flex;align-items:center;justify-content:center;width:32px;height:30px;padding:0;border-radius:var(--radius-sm);font-size:1rem;background:none;color:var(--info)}
.navbar-search-slot .header-search-form .hsf-submit-min[hidden]{display:inline-flex!important}
.navbar-search-slot .header-search-form .hsf-submit-min .hsf-submit-label{display:none}
.navbar-search-slot .header-search-form .hsf-submit-min .hsf-submit-icon{display:inline-flex;align-items:center;justify-content:center}
.navbar-search-slot .header-search-form .hsf-submit-min .hsf-submit-icon svg{width:17px;height:17px;display:block}
.navbar-search-slot .header-search-form .hsf-icon{display:none}
.navbar-search-slot .header-search-form .hsf-textarea{padding-left:8px}
body.nav-condensed .navbar-search-slot .header-search-form .hsf-submit-min,
body.pv-detail-search .navbar-search-slot .header-search-form .hsf-submit-min{display:inline-flex}
body.nav-condensed .navbar-search-slot .header-search-form .hsf-submit-min,
body.pv-detail-search .navbar-search-slot .header-search-form .hsf-submit-min{width:34px;height:30px;border-radius:9px;background:var(--brand);color:#fff;box-shadow:0 2px 6px #15803d45;transition:transform .12s ease,filter .12s ease}
body.nav-condensed .navbar-search-slot .header-search-form .hsf-submit-min:active,
body.pv-detail-search .navbar-search-slot .header-search-form .hsf-submit-min:active{transform:scale(.94);filter:brightness(.94)}
.search-form{flex-direction:column;padding:10px}
.search-form select{border-left:none;border-top:1px solid var(--border)}
.category-grid{grid-template-columns:repeat(2,1fr);gap:10px}
.uni-slider-nav{display:none}
.uni-slider-track .university-tile{flex-basis:150px}
.job-grid,.job-grid--home{grid-template-columns:1fr;gap:10px}
.job-list-column.job-list-column--home{grid-template-columns:1fr;gap:10px}
.footer-grid{grid-template-columns:1fr;padding-top:28px;padding-bottom:16px}
}
.ai-chip-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:10px;align-items:center}
.ai-chip-badge{display:inline-block;padding:4px 10px;border-radius:var(--radius);background:var(--brand);color:#fff;font-size:.78rem;font-weight:600}
.ai-chip-clear{font-size:.78rem;color:var(--muted);text-decoration:none}
.ai-chip-clear:hover{color:var(--brand-dark);text-decoration:underline}
.cv-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;margin-bottom:16px}
.cv-title-tag{margin-right:auto;font-weight:700;color:var(--brand-dark)}
.cv-sheet{max-width:780px;margin:0 auto;background:#fff;border:1px solid var(--border);border-radius:var(--radius);padding:40px 48px}
.cv-header{text-align:center;border-bottom:2px solid var(--brand);padding-bottom:16px;margin-bottom:20px}
.cv-header h1{margin:0 0 4px;font-size:1.7rem}
.cv-headline{margin:0 0 10px;color:var(--brand-dark);font-weight:600}
.cv-contact{display:flex;justify-content:center;flex-wrap:wrap;gap:14px;font-size:.88rem;color:var(--muted)}
.cv-section{margin-bottom:22px}
.cv-section h2{font-size:.95rem;text-transform:uppercase;letter-spacing:.04em;color:var(--brand-dark);border-bottom:1px solid var(--border);padding-bottom:6px;margin-bottom:12px}
.cv-section p{margin:4px 0 0;font-size:.92rem}
.cv-entry{margin-bottom:14px}
.cv-entry:last-child{margin-bottom:0}
.cv-entry-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:.92rem}
.cv-entry-dates{color:var(--muted);font-size:.85rem;white-space:nowrap}
.cv-chip-row{display:flex;flex-wrap:wrap;gap:6px}
.cv-chip{padding:4px 12px;border-radius:var(--radius);background:var(--brand-light);color:var(--brand-dark);font-size:.82rem;font-weight:600}
.cv-list{display:flex;flex-direction:column;gap:12px}
.cv-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px;display:flex;gap:14px;transition:box-shadow .15s,border-color .15s}
.cv-card:hover{box-shadow:var(--shadow-md);border-color:var(--brand)}
.cv-card.is-default{border-color:var(--brand)}
.cv-card-icon{flex-shrink:0;width:52px;height:52px;border-radius:var(--radius-sm);background:var(--brand-light);color:var(--brand-dark);display:flex;align-items:center;justify-content:center;font-size:1.4rem;overflow:hidden}
.cv-card-icon img{width:100%;height:100%;object-fit:cover}
.cv-card-body{min-width:0;flex:1}
.cv-card-head{display:flex;flex-wrap:wrap;align-items:center;gap:8px 10px;margin-bottom:4px}
.cv-card-head h3{margin:0;font-size:1.05rem;line-height:1.35}
.cv-card-badges{display:flex;flex-wrap:wrap;gap:6px}
.cv-chip-default{display:inline-flex;align-items:center;gap:3px}
.cv-card-headline{margin:0 0 12px;color:var(--muted);font-size:.92rem}
.cv-card-actions{display:flex;flex-wrap:wrap;align-items:center;gap:8px 18px}
.cv-card-actions a,.cv-card-actions .link-button{display:inline-flex;align-items:center;gap:4px}
.link-button-danger{color:var(--urgent)}
.link-button-danger:hover{color:var(--urgent)}
.application-status-form{display:flex;align-items:center;gap:8px;margin-top:10px}
.application-status-form select{padding:7px 10px;border-radius:var(--radius-sm);border:1px solid var(--border)}
.error-404-box{max-width:560px;text-align:center;padding:40px 20px 8px}
.error-404-code{font-size:5.5rem;font-weight:800;line-height:1;color:var(--brand)}
.error-404-heading{margin:8px 0 6px;font-size:1.5rem}
.error-404-message{color:var(--muted);margin:0 0 28px}
.error-404-search-hint{font-weight:600;margin:0 0 10px}
.error-404-search-form{display:flex;align-items:center;gap:10px;border:1px solid var(--border);border-radius:var(--radius);padding:8px 8px 8px 16px;box-shadow:var(--shadow-sm);margin:0 0 24px}
.error-404-search-form .hsf-icon{font-size:1.05rem;flex-shrink:0}
.error-404-search-input{flex:1;border:none;outline:none;font-size:.95rem;min-width:0;background:transparent;color:var(--text)}
.error-404-actions{display:flex;justify-content:center;gap:12px;flex-wrap:wrap;margin-bottom:24px}
@media print {
.site-header,.bottom-nav,.job-apply-bar,.site-footer,.messages,.no-print{display:none!important}
body{padding-bottom:0!important}
.cv-sheet{border:none;padding:0;max-width:none}
}
.moderation-badges{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin:12px 0 20px}
.moderation-badges-label{font-size:.85rem;color:var(--muted);margin-right:4px}
.moderation-badge{font-size:.8rem;padding:4px 10px;border-radius:var(--radius);border:1px solid var(--border);color:var(--muted);background:#fff;opacity:.55}
.moderation-badge.active{opacity:1;font-weight:600;border-color:var(--brand);color:var(--brand);background:#16a34a14}
.moderation-badge.active.is-rejected{border-color:var(--urgent);color:var(--urgent);background:#e11d4814}
.moderation-badges-prominent{padding:14px 16px;border:1px solid var(--border);border-radius:12px;background:var(--surface,#f8fafc);margin:12px 0 22px}
.moderation-badges-prominent .moderation-badges{margin:0}
.moderation-badges-prominent .moderation-badge.active{font-size:.9rem;padding:6px 14px}
.joblist-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,2fr);gap:24px;align-items:start}
.joblist-layout--norail{grid-template-columns:1fr}
.joblist-layout--norail .job-list-column{grid-template-columns:repeat(3,1fr)}
.ad-rail{display:flex;flex-direction:column;gap:18px;position:sticky;top:calc(var(--header-h) + var(--pv-pin-offset, 0px) + 16px)}
.ad-rail__ads{display:flex;flex-direction:column;gap:14px}
.ad-rail__ad{border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.ad-rail__ad img,.ad-rail__ad iframe{display:block;max-width:100%;height:auto}
.ad-rail__section{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px}
.ad-rail__section h3{margin:0 0 10px;font-size:.85rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.ad-rail__cats ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.ad-rail__cats a{text-decoration:none}
.ad-rail__jobs .job-card{margin-bottom:10px}
.ad-rail__jobs .job-card:last-child{margin-bottom:0}
.ad-strip{display:flex;flex-wrap:wrap;gap:16px;margin-top:24px}
.ad-strip__item{flex:1 1 300px;border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}
.ad-strip__item img,.ad-strip__item iframe{display:block;max-width:100%;height:auto}
@media (max-width: 1100px) {
.joblist-layout--norail .job-list-column{grid-template-columns:repeat(2,1fr)}
}
@media (max-width: 860px) {
.joblist-layout{grid-template-columns:1fr}
.joblist-layout .job-list-column{order:1}
.joblist-layout .ad-rail{order:2;position:static}
.joblist-layout--norail .job-list-column{grid-template-columns:1fr}
}
.pv-dash-empty{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:32px 24px;text-align:center;margin-bottom:20px}
.pv-dash-empty p{color:var(--muted);margin:0 0 14px}
.pv-dash-kpi-row{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
.pv-dash-kpi{display:flex;flex-direction:column;gap:2px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;box-shadow:var(--shadow-sm)}
.pv-dash-kpi-icon{font-size:1.3rem;line-height:1;margin-bottom:4px}
.pv-dash-kpi-value{font-size:1.65rem;font-weight:800;color:var(--text);letter-spacing:-.02em;font-variant-numeric:tabular-nums}
.pv-dash-kpi-label{font-size:.82rem;color:var(--muted);font-weight:600}
.pv-dash-charts-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:16px;align-items:stretch}
.pv-dash-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:18px 20px;box-shadow:var(--shadow-sm)}
.pv-dash-panel h3{margin:0 0 16px;font-size:.92rem;font-weight:700;color:var(--text)}
.pv-dash-chart-empty{color:var(--muted);font-size:.88rem;text-align:center;padding:30px 0}
.pv-donut-wrap{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.pv-donut-box{position:relative;width:120px;height:120px;flex-shrink:0}
.pv-donut-svg{width:100%;height:100%}
.pv-donut-track{fill:none;stroke:var(--border);stroke-width:16}
.pv-donut-seg{fill:none;stroke-width:16;stroke-linecap:round;transition:stroke-dasharray .3s ease}
.pv-donut-seg[data-status="published"],.pv-donut-seg[data-status="accepted"]{stroke:var(--brand)}
.pv-donut-seg[data-status="draft"],.pv-donut-seg[data-status="reviewed"]{stroke:var(--employer)}
.pv-donut-seg[data-status="closed"],.pv-donut-seg[data-status="submitted"]{stroke:var(--muted)}
.pv-donut-seg[data-status="rejected"]{stroke:var(--urgent)}
.pv-donut-center{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:800;color:var(--text);font-variant-numeric:tabular-nums}
.pv-legend{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px;flex:1;min-width:140px}
.pv-legend-item{display:flex;align-items:center;gap:8px;font-size:.86rem}
.pv-legend-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}
.pv-legend-dot[data-status="published"],.pv-legend-dot[data-status="accepted"]{background:var(--brand)}
.pv-legend-dot[data-status="draft"],.pv-legend-dot[data-status="reviewed"]{background:var(--employer)}
.pv-legend-dot[data-status="closed"],.pv-legend-dot[data-status="submitted"]{background:var(--muted)}
.pv-legend-dot[data-status="rejected"]{background:var(--urgent)}
.pv-legend-label{color:var(--text);flex:1}
.pv-legend-value{color:var(--muted);font-weight:700;font-variant-numeric:tabular-nums}
.pv-bar-chart{display:flex;align-items:flex-end;gap:10px;height:160px;padding-top:18px}
.pv-bar-chart--dense{gap:4px}
.pv-bar-col{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;min-width:0}
.pv-bar-value{font-size:.74rem;font-weight:700;color:var(--muted);margin-bottom:4px;font-variant-numeric:tabular-nums}
.pv-bar{width:60%;min-width:6px;border-radius:4px 4px 0 0;transition:height .3s ease}
.pv-bar--jobs{background:var(--brand)}
.pv-bar--apps{background:var(--employer)}
.pv-bar-label{margin-top:6px;font-size:.7rem;color:var(--muted);white-space:nowrap}
.pv-bar-chart--dense .pv-bar-label{font-size:.62rem;transform:rotate(-40deg);transform-origin:top right;margin-top:10px}
.pv-top-jobs{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:12px}
.pv-top-job-row{display:flex;align-items:center;gap:12px}
.pv-top-job-rank{flex-shrink:0;width:24px;height:24px;border-radius:50%;background:var(--brand-light);color:var(--brand-dark);font-size:.78rem;font-weight:800;display:flex;align-items:center;justify-content:center}
.pv-top-job-main{flex:1;min-width:0}
.pv-top-job-title{display:block;font-weight:600;font-size:.9rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;margin-bottom:5px}
.pv-top-job-bar-track{height:6px;border-radius:3px;background:var(--border);overflow:hidden}
.pv-top-job-bar-fill{height:100%;border-radius:3px;background:var(--brand)}
.pv-top-job-count{flex-shrink:0;font-weight:800;color:var(--brand-dark);font-variant-numeric:tabular-nums;min-width:24px;text-align:right}
.pv-onboard{margin-top:28px}
.pv-onboard-heading{margin:0 0 12px;font-size:.85rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}
.pv-onboard-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}
.pv-onboard-card{display:flex;gap:12px;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:16px 18px;text-decoration:none;color:inherit;transition:box-shadow .15s,border-color .15s}
.pv-onboard-card:hover{box-shadow:var(--shadow-md);border-color:var(--brand)}
.pv-onboard-icon{flex-shrink:0;font-size:1.4rem;line-height:1}
.pv-onboard-card strong{display:block;margin-bottom:4px;font-size:.92rem;color:var(--brand-dark)}
.pv-onboard-card p{margin:0;color:var(--muted);font-size:.84rem;line-height:1.45}
.pv-employer-welcome p{margin:0 0 10px}
.pv-employer-welcome-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:14px}
@media (max-width: 860px) {
.pv-dash-kpi-row{grid-template-columns:repeat(2,1fr)}
.pv-dash-charts-row{grid-template-columns:1fr}
.pv-onboard-grid{grid-template-columns:1fr}
}
@media (max-width: 480px) {
.pv-dash-kpi-row{grid-template-columns:1fr}
}
.pv-extract-status{position:fixed;right:0;top:74px;z-index:999;background:#f00;color:#fff;padding:5px;max-width:300px;border-radius:5px}


/* "Thích / Không thích" (templates/jobs/_reaction_bar.html + static/js/pv-reactions.js) */
.pv-reactions-block{text-align:center}
.pv-reactions-prompt{margin:0 0 12px;font-weight:600;color:var(--text)}
.pv-reactions{display:flex;justify-content:center;gap:10px;margin:0}
.pv-react-btn{display:inline-flex;align-items:center;gap:7px;padding:7px 14px;border:1px solid var(--border);border-radius:var(--radius);background:#fff;color:var(--text);font:inherit;font-size:.9rem;line-height:1;cursor:pointer;transition:border-color .15s,background-color .15s,color .15s}
.pv-react-btn:hover{background:#f5f6f7}
.pv-react-btn.is-active[data-pv-react="like"]{border-color:var(--brand);background:var(--brand-light);color:var(--brand-dark)}
.pv-react-btn.is-active[data-pv-react="dislike"]{border-color:var(--urgent);background:var(--urgent-light);color:var(--urgent)}
.pv-react-ic{font-size:1.05rem}
/* ---- Bình luận tin tuyển dụng (templates/jobs/_comment_section.html) ---- */
/* Thiết kế phẳng, ít khung bao: form floating-label nền phủ nhẹ, danh sách phân cách bằng
   đường kẻ mảnh thay vì thẻ card. */
.pv-comments{margin-top:2px;padding-top:5px}
.pv-comments-title{display:flex;align-items:center;gap:8px;margin:0 0 14px;font-size:1.08rem}
.pv-comments-title svg{color:var(--brand);flex-shrink:0}
.pv-comments-count{min-width:20px;padding:0 7px;font-size:.78rem;font-weight:700;line-height:19px;text-align:center;border-radius:var(--radius);background:var(--brand-light);color:var(--brand-dark)}

.pv-comment-form{display:flex;flex-direction:column;gap:8px;margin-bottom:14px}
.pv-comment-hint{margin:0;font-size:.8rem;line-height:1.45;color:var(--muted)}
/* Floating-label field — nền phủ nhẹ, không viền khung */
.pv-ff{position:relative}
.pv-ff input,.pv-ff textarea{width:100%;font:inherit;font-size:.92rem;color:var(--text);padding:17px 12px 6px;border:1px solid transparent;border-radius:8px;background:#f3f4f6;transition:background-color .15s,box-shadow .15s}
.pv-ff textarea{resize:none;line-height:1.5;min-height:44px;overflow:hidden;display:block}
.pv-ff input:focus,.pv-ff textarea:focus{outline:0;background:#fff;box-shadow:0 0 0 2px var(--brand)}
.pv-ff label{position:absolute;left:12px;top:12px;font-size:.92rem;color:var(--muted);pointer-events:none;transform-origin:left top;transition:transform .12s ease,color .12s}
.pv-ff input:focus~label,.pv-ff input:not(:placeholder-shown)~label,
.pv-ff textarea:focus~label,.pv-ff textarea:not(:placeholder-shown)~label{transform:translateY(-8px) scale(.74);color:var(--brand-dark);font-weight:600}
.pv-check{display:flex;align-items:flex-start;gap:8px;font-size:.84rem;color:var(--text);cursor:pointer}
.pv-check input{margin-top:2px;accent-color:var(--brand);flex-shrink:0}
.pv-comment-contact{font-size:.86rem}
.pv-comment-contact>summary{display:inline-flex;align-items:center;gap:6px;cursor:pointer;padding:3px 0;color:var(--brand-dark);font-weight:600;list-style:none}
.pv-comment-contact>summary::-webkit-details-marker{display:none}
.pv-comment-contact>summary::before{content:"+";font-weight:700;width:12px;text-align:center}
.pv-comment-contact[open]>summary::before{content:"–"}
.pv-comment-contact-body{display:flex;flex-direction:column;gap:9px;padding:9px 0 2px}
.pv-comment-form-foot{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap;margin-top:2px}
.pv-comment-submit{display:inline-flex;align-items:center;gap:6px;padding:7px 16px;font-size:.88rem}
.pv-comment-submit svg{flex-shrink:0}
.pv-comment-feedback{margin:0;font-size:.83rem;font-weight:600}
.pv-comment-feedback.is-error{color:var(--urgent)}
.pv-comment-feedback.is-ok{color:var(--brand-dark)}
.pv-comment-closed{font-size:.88rem;color:var(--muted);padding:6px 0}

.pv-comment-list{list-style:none;margin:0;padding:0}
.pv-comment{display:flex;gap:12px;padding:16px 0;border-top:1px solid var(--border)}
.pv-comment-list>.pv-comment:first-child{border-top:0;padding-top:4px}
.pv-avatar{flex-shrink:0;width:36px;height:36px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.92rem;background:hsl(var(--h,150) 60% 92%);color:hsl(var(--h,150) 46% 33%);user-select:none}
.pv-avatar--sm{width:28px;height:28px;font-size:.78rem}
.pv-comment--employer>.pv-avatar{background:var(--employer);color:#fff}
.pv-comment-main{flex:1;min-width:0}
.pv-comment-head{display:flex;align-items:center;gap:7px;flex-wrap:wrap;margin-bottom:3px}
.pv-comment-author{font-weight:700;font-size:.9rem;color:var(--text)}
.pv-comment--employer .pv-comment-author{color:var(--employer)}
.pv-comment-badge{display:inline-flex;align-items:center;gap:3px;font-size:.68rem;font-weight:700;padding:1px 7px;border-radius:var(--radius);background:#eef0f2;color:var(--muted)}
.pv-comment-badge--employer{background:var(--employer);color:#fff}
.pv-comment-badge--contact svg{opacity:.7}
.pv-comment-time{font-size:.73rem;color:var(--muted);margin-left:auto;white-space:nowrap}
.pv-comment-body{margin:0;font-size:.91rem;line-height:1.55;color:var(--text);white-space:pre-wrap;overflow-wrap:anywhere}
.pv-comment-replies{list-style:none;margin:11px 0 0;padding:0 0 0 14px;border-left:2px solid var(--border);display:flex;flex-direction:column;gap:11px}
.pv-comment--reply{padding:0;border:0;gap:9px}
.pv-comment--reply.pv-comment--employer{padding:9px 12px;border-radius:8px;background:#fdf6e9}
.pv-comment-reply-btn{margin-top:7px;border:0;background:none;padding:0;font:inherit;font-size:.79rem;font-weight:600;color:var(--brand-dark);cursor:pointer}
.pv-comment-reply-btn:hover{color:var(--brand);text-decoration:underline}
.pv-comment-empty{list-style:none;padding:18px 0;font-size:.88rem;color:var(--muted);text-align:center}
@media (max-width:640px){
  .pv-comment{gap:10px}
  .pv-comment>.pv-avatar{width:32px;height:32px;font-size:.82rem}
  .pv-comment-time{margin-left:0;flex-basis:100%;order:3}
  .pv-comment--reply>.pv-avatar{display:none}
  .pv-comment-badge--contact span{display:none}
}

/* ---------- Thanh tiến trình top-loading (pv-loading-bar.js) ---------- */
#pv-loading-bar{position:fixed;top:0;left:0;z-index:9999;height:3px;width:0;background:linear-gradient(90deg,var(--brand),var(--accent));box-shadow:0 0 8px #f9731680;opacity:0;pointer-events:none}
#pv-loading-bar.is-active{opacity:1;width:75%;transition:width 4s cubic-bezier(.15,.7,.3,1)}
#pv-loading-bar.is-done{width:100%;transition:width .2s ease,opacity .25s ease .15s;opacity:0}
@media (prefers-reduced-motion: reduce) {
#pv-loading-bar{transition:none!important}
}

/* ---------- Hiệu ứng mượt khi chèn phần tử mới vào danh sách qua JS (kết quả gợi ý tìm
   kiếm, tuỳ chọn bộ lọc...) — gắn class "pv-enter" ngay khi tạo phần tử, animation tự chạy
   lúc phần tử được chèn vào DOM, không cần JS toggle thêm. ---------- */
@media (prefers-reduced-motion: no-preference) {
.pv-enter{animation:pv-fade-in .22s ease both}
}
@keyframes pv-fade-in{from{opacity:0;transform:translateY(4px)}to{opacity:1;transform:translateY(0)}}

/* ---------- View Transitions (pv-ajax-nav.js) — crossfade nhẹ khi thay #pv-main-content,
   tránh cảm giác "giật" do innerHTML đổi tức thời. Trình duyệt chưa hỗ trợ bỏ qua toàn bộ khối
   này (progressive enhancement), không ảnh hưởng chức năng. ---------- */
#pv-main-content{view-transition-name:pv-main}
/* pv-ajax-nav.js đưa focus vào #pv-main-content / <h1> sau khi điều hướng AJAX (cho screen
   reader) — element chỉ nhận focus lập trình, không hiện viền. */
[data-pv-nav-focus]:focus{outline:none}
@media (prefers-reduced-motion: no-preference) {
::view-transition-old(pv-main),::view-transition-new(pv-main){animation-duration:.18s;animation-timing-function:ease}
::view-transition-old(pv-main){animation-name:pv-vt-out}
::view-transition-new(pv-main){animation-name:pv-vt-in}
}
@keyframes pv-vt-in{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@keyframes pv-vt-out{from{opacity:1}to{opacity:0}}

/* ── Widget "tin thực tập miễn phí" + mời giới thiệu (jobs/_posting_credit_note.html) ── */
.credit-note{border:1px solid #d6e8dc;background:#f2faf5;border-radius:12px;margin:0 0 20px}
.credit-note-summary{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap;padding:12px 16px;cursor:pointer;list-style:none;user-select:none}
.credit-note-summary::-webkit-details-marker{display:none}
.credit-note-num{font-size:1.5rem;font-weight:800;line-height:1;color:var(--brand,#16a34a)}
.credit-note-num.is-empty{color:#b91c1c}
.credit-note-label{font-weight:600;color:#234}
.credit-note-summary-warn{font-size:.82rem;color:#b91c1c;font-weight:600}
.credit-note-chevron{margin-left:auto;color:#6b7c72;transition:transform .15s ease}
.credit-note[open] .credit-note-chevron{transform:rotate(180deg)}
.credit-note-body{padding:0 16px 14px;border-top:1px dashed #cfe3d6}
.credit-note-breakdown{margin:10px 0 0;font-weight:400;color:#6b7c72;font-size:.8rem}
.credit-note-warn{margin:8px 0 0;color:#b91c1c;font-size:.9rem}
.credit-note-hint{margin:6px 0 0;color:#4b5c52;font-size:.85rem}
.credit-note-referral{margin-top:12px;padding-top:12px;border-top:1px dashed #cfe3d6}
.credit-note-referral-intro{margin:0 0 8px;font-size:.9rem;color:#234}
.credit-note-referral-row{display:flex;gap:8px;flex-wrap:wrap}
.credit-note-referral-link{flex:1 1 240px;min-width:0;padding:8px 10px;border:1px solid #c7d8cd;border-radius:8px;background:#fff;font-size:.85rem;color:#334}
.credit-note-referral-count{margin:8px 0 0;font-size:.85rem;color:#4b5c52}

/* ── Ô "Xin ưu tiên Tuyển gấp" trên form đăng tin (jobs/_urgent_request.html) ── */
.urgent-request{border:1px dashed #e0b84d;background:#fffaf0;border-radius:10px;padding:10px 12px;margin:0 0 14px}
.urgent-request-check{display:flex;align-items:flex-start;gap:8px;font-weight:600;color:#7a5c12;cursor:pointer}
.urgent-request-check input[disabled]{cursor:not-allowed}
.urgent-request-hint{margin:6px 0 0 26px;font-size:.82rem;color:#6b5a2e;line-height:1.5}
.urgent-request-until{color:#8a6d2e}

/* ── Bộ chọn ngôn ngữ (TinhNang="layngonngu", feature-ngon-ngu.md §4). Dropdown ở vùng menu_*
   (core/_language_switcher.html, <details>/<summary> gốc — không cần JS), danh sách cờ ở
   kv_footer_bottom (content/blocks/layngonngu.html) ── */
.pv-lang-switcher{position:relative}
.pv-lang-switcher__trigger{display:flex;align-items:center;gap:6px;cursor:pointer;padding:7px 10px;border-radius:var(--radius-sm);list-style:none;user-select:none}
.pv-lang-switcher__trigger::-webkit-details-marker{display:none}
.pv-lang-switcher__trigger:hover{background:#ffffff1a}
.pv-lang-switcher__caret{transition:transform .15s ease}
.pv-lang-switcher[open] .pv-lang-switcher__caret{transform:rotate(180deg)}
.pv-lang-switcher__list{position:absolute;top:calc(100% + 6px);right:0;z-index:150;min-width:160px;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-md);padding:6px;margin:0;list-style:none;display:flex;flex-direction:column;gap:2px}
.pv-lang-switcher__list a{display:flex;align-items:center;gap:8px;padding:7px 10px;border-radius:var(--radius-sm);color:var(--text);font-size:.88rem;text-decoration:none}
.pv-lang-switcher__list a:hover{background:var(--brand-light)}
.pv-lang-switcher__list a.active{font-weight:700;color:var(--brand-dark)}
.pv-lang-flags{display:flex;flex-wrap:wrap;gap:6px 14px;list-style:none;margin:0;padding:0}
.pv-lang-flags a{display:flex;align-items:center;gap:6px;font-size:.85rem;color:inherit;text-decoration:none}
.pv-lang-flags a:hover{text-decoration:underline}
.pv-lang-flags a.active{font-weight:700}
