/* vng-pages — design pass 3 (2026-10-24). Tokens live in vng-system.css; this file only adds surface-scoped rules.
   Scope: Liên hệ · Đăng nhập/Đăng ký · Tìm kiếm · Bộ sưu tập · Cộng đồng đánh giá · Quản lý dữ liệu cá nhân ·
   trang lỗi · trang tĩnh (/page/{slug}). Every rule sits under a `.vng-pg-*` page root (or the static-page head/body
   classes from vng-system.css), so nothing here leaks into other surfaces. */

/* ---------- 0. Page shell shared by every secondary page ---------- */
.vng-pg {
    background: #fff;
    color: var(--vng-text);
}
.vng-pg--soft {
    background: var(--vng-bg-soft);
}
.vng-pg .vng-listing-head {
    padding-bottom: 14px;
}
.vng-pg .vng-listing-h1 {
    max-width: 760px;
}
.vng-pg .vng-listing-facts {
    margin-bottom: 0;
}
/* Chip used as a link (popular destinations on empty/error states). */
.vng-pg a.vng-chip {
    color: var(--vng-text);
    text-decoration: none !important;
    transition: border-color .18s ease, color .18s ease, background .18s ease;
}
.vng-pg a.vng-chip:hover {
    border-color: var(--vng-navy);
    color: var(--vng-navy);
    background: #fff;
}
.vng-pg .vng-chips--center {
    justify-content: center;
}
.vng-pg .vng-section:first-of-type {
    border-top: 0;
}
.vng-pg .vng-section__title {
    overflow-wrap: anywhere;
}
.vng-pg .vng-section__count {
    margin-left: 6px;
    font-size: 15px;
    font-weight: 500;
    color: var(--vng-muted);
}

/* ---------- 1. Form system (labels above, 48px controls, full-width primary) ---------- */
.vng-pg .vng-form {
    display: flex;
    flex-direction: column;
    gap: 16px;
}
.vng-pg .vng-form fieldset {
    min-width: 0;
    margin: 0;
    padding: 0;
    border: 0;
}
.vng-pg .vng-form legend {
    float: none;
    width: auto;
    margin: 0 0 8px;
    padding: 0;
}
.vng-pg .vng-form__row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}
.vng-pg .vng-form__field {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
}
.vng-pg .vng-form__field[hidden] {
    display: none;
}
.vng-pg .vng-form__label {
    margin: 0;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.3;
    color: var(--vng-text);
}
.vng-pg .vng-form__label small {
    font-size: 13px;
    font-weight: 400;
    color: var(--vng-muted);
}
.vng-pg .vng-form__hint {
    margin: 0;
    font-size: 13px;
    line-height: 1.5;
    color: var(--vng-muted);
}
.vng-pg .vng-form__hint a {
    color: var(--vng-navy);
    font-weight: 600;
}
.vng-pg .vng-form__input {
    display: block;
    width: 100%;
    height: 48px;
    padding: 0 14px;
    border: 1px solid var(--vng-line);
    border-radius: var(--vng-r-md);
    background: #fff;
    font-size: 15px;
    line-height: 1.4;
    color: var(--vng-text);
    appearance: none;
    -webkit-appearance: none;
    transition: border-color .18s ease, box-shadow .18s ease;
}
.vng-pg .vng-form__input::placeholder {
    color: var(--vng-muted-2);
}
.vng-pg textarea.vng-form__input {
    height: auto;
    min-height: 132px;
    padding: 12px 14px;
    resize: vertical;
}
.vng-pg select.vng-form__input {
    padding-right: 40px;
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%236b7280' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 14px center;
    cursor: pointer;
}
.vng-pg .vng-form__input:focus {
    outline: none;
    border-color: var(--vng-navy);
    box-shadow: 0 0 0 3px rgba(15, 45, 94, .12);
}
.vng-pg .vng-form__input.is-invalid {
    border-color: var(--vng-red);
}
.vng-pg .vng-form__error {
    display: block;
    margin: 0;
    font-size: 13px;
    line-height: 1.4;
    color: var(--vng-red);
}
.vng-pg .vng-form__error:empty {
    display: none;
}
.vng-pg .vng-form__check {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    font-size: 14px;
    line-height: 1.5;
    color: var(--vng-text);
}
.vng-pg .vng-form__check input {
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    margin: 2px 0 0;
    accent-color: var(--vng-navy);
}
.vng-pg .vng-form .vng-btn {
    width: 100%;
    min-height: 48px;
}
.vng-pg .vng-form__actions {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.vng-pg .vng-form__status {
    font-size: 14px;
    line-height: 1.5;
}
.vng-pg .vng-form__status:empty {
    display: none;
}
.vng-pg .vng-form__status .text-success {
    color: var(--vng-green);
}
.vng-pg .vng-form__status .text-danger {
    color: var(--vng-red);
}
/* reCAPTCHA iframe never overflows the card */
.vng-pg .vng-form .g-recaptcha {
    max-width: 100%;
    overflow: hidden;
}

/* ---------- 2. Liên hệ ---------- */
/* custom.css still gives .bravo-contact-block a 100px top padding for the old hero; the new head has its own rhythm. */
.vng-pg-contact.bravo-contact-block {
    padding-top: 0;
}
.vng-pg-contact__layout {
    display: grid;
    grid-template-columns: minmax(0, 5fr) minmax(0, 7fr);
    gap: 40px;
    align-items: start;
    padding: 12px 0 56px;
}
.vng-pg-contact__cards {
    display: grid;
    gap: 12px;
}
.vng-pg-contact__card {
    display: flex;
    gap: 14px;
    padding: 16px 18px;
    border: 1px solid var(--vng-line);
    border-radius: var(--vng-r-lg);
    background: #fff;
}
.vng-pg-contact__icon {
    flex: 0 0 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--vng-bg-soft);
    color: var(--vng-navy);
}
.vng-pg-contact__icon svg {
    width: 20px;
    height: 20px;
}
.vng-pg-contact__card-body {
    min-width: 0;
}
.vng-pg-contact__card-title {
    margin: 0 0 3px;
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .02em;
    color: var(--vng-muted);
}
.vng-pg-contact__card-value {
    font-size: 16px;
    font-weight: 600;
    line-height: 1.45;
    color: var(--vng-navy);
    overflow-wrap: anywhere;
}
.vng-pg-contact__card-value a {
    color: var(--vng-navy);
    text-decoration: none;
}
.vng-pg-contact__card-value a:hover {
    text-decoration: underline;
}
.vng-pg-contact__card-value p {
    margin: 0;
}
.vng-pg-contact__hours {
    margin: 0;
    font-size: 14px;
    font-weight: 500;
    line-height: 1.6;
}
.vng-pg-contact__hours div {
    display: flex;
    justify-content: space-between;
    gap: 12px;
}
.vng-pg-contact__hours dt {
    font-weight: 500;
    color: var(--vng-muted);
}
.vng-pg-contact__hours dd {
    margin: 0;
    font-weight: 600;
    color: var(--vng-navy);
    text-align: right;
}
.vng-pg-contact__ad {
    margin-top: 4px;
    padding: 16px 18px;
    border-radius: var(--vng-r-lg);
    background: var(--vng-yellow-soft);
}
.vng-pg-contact__ad h2 {
    margin: 0 0 4px;
    font-size: 15px;
    font-weight: 700;
    color: var(--vng-navy);
}
.vng-pg-contact__ad p {
    margin: 0 0 8px;
    font-size: 14px;
    line-height: 1.55;
    color: #7a4b00;
}
.vng-pg-contact__ad a {
    font-size: 14px;
    font-weight: 700;
    color: var(--vng-navy);
}
.vng-pg-contact__form {
    padding: 28px;
    border: 1px solid var(--vng-line);
    border-radius: var(--vng-r-xl);
    background: #fff;
    box-shadow: var(--vng-shadow-sm);
}
.vng-pg-contact__form-title {
    margin: 0 0 4px;
    font-size: 20px;
    font-weight: 800;
    line-height: 1.25;
    color: var(--vng-navy);
}
.vng-pg-contact__form-sub {
    margin: 0 0 20px;
    font-size: 14px;
    line-height: 1.5;
    color: var(--vng-muted);
}
.vng-pg-contact__map {
    position: relative;
    width: 100%;
    aspect-ratio: 16 / 9;
    max-height: 520px;
    overflow: hidden;
    background: var(--vng-bg-section);
}
.vng-pg-contact__map iframe {
    position: absolute;
    inset: 0;
    display: block;
    width: 100% !important;
    height: 100% !important;
    border: 0;
}
/* Advertising variant keeps its hero + placement sections (custom.css); only the two-column body is new. */
.vng-pg-contact.vnguide-contact-ad-page .vng-pg-contact__layout {
    padding-top: 36px;
}
.vng-pg-contact .vnguide-ad-contact-intro {
    margin-bottom: 20px;
}

/* ---------- 3. Đăng nhập · Đăng ký · Mật khẩu ---------- */
.vng-pg-auth {
    padding: 48px 0 80px;
}
.vng-pg-auth__card {
    max-width: 440px;
    margin: 0 auto;
    padding: 32px 28px;
    border: 1px solid var(--vng-line);
    border-radius: var(--vng-r-xl);
    background: #fff;
    box-shadow: var(--vng-shadow-sm);
}
.vng-pg-auth__title {
    margin: 0 0 6px;
    font-size: 24px;
    line-height: 1.2;
    font-weight: 800;
    color: var(--vng-navy);
}
.vng-pg-auth__lead {
    margin: 0 0 20px;
    font-size: 14px;
    line-height: 1.5;
    color: var(--vng-muted);
}
.vng-pg-auth__card .alert {
    margin: 0 0 16px;
    padding: 12px 14px;
    border-radius: var(--vng-r-md);
    font-size: 14px;
}
.vng-pg-auth__card .alert-success {
    background: #e7f7ef;
    color: #075e3f;
}
.vng-pg-auth__card .alert-danger {
    background: #fdecec;
    color: #9a2a0f;
}
/* Shared partials (Layout::auth.login-form / register-form) keep their markup; the rules below turn the GoTrip
   floating-label inputs into labels-above 48px controls and the navy block button into the yellow primary. */
.vng-pg-auth .form-title,
.vng-pg-auth h1.text-22 {
    margin: 0 0 6px !important;
    font-size: 24px !important;
    line-height: 1.2 !important;
    font-weight: 800 !important;
    color: var(--vng-navy) !important;
}
.vng-pg-auth .form-title + p,
.vng-pg-auth h1.text-22 + p {
    margin: 0 0 8px !important;
    font-size: 14px !important;
    color: var(--vng-muted);
}
.vng-pg-auth .form-title + p a,
.vng-pg-auth h1.text-22 + p a {
    font-weight: 600;
    color: var(--vng-navy) !important;
}
.vng-pg-auth .form-input {
    flex-direction: column-reverse;
    gap: 6px;
}
.vng-pg-auth .form-input label {
    position: static !important;
    top: auto !important;
    padding: 0 !important;
    transform: none !important;
    pointer-events: auto;
    font-size: 14px !important;
    font-weight: 600;
    line-height: 1.3 !important;
    color: var(--vng-text) !important;
}
.vng-pg-auth .form-input input,
.vng-pg-auth .form-input textarea {
    width: 100%;
    height: 48px;
    min-height: 48px;
    padding: 0 14px !important;
    border: 1px solid var(--vng-line) !important;
    border-radius: var(--vng-r-md);
    background: #fff;
    font-size: 15px;
    color: var(--vng-text);
    transition: border-color .18s ease, box-shadow .18s ease;
}
.vng-pg-auth .form-input input:focus,
.vng-pg-auth .form-input textarea:focus {
    border: 1px solid var(--vng-navy) !important;
    box-shadow: 0 0 0 3px rgba(15, 45, 94, .12);
    outline: none;
}
.vng-pg-auth .form-checkbox__mark {
    border-color: var(--vng-muted-2);
}
.vng-pg-auth .form-checkbox input:checked ~ .form-checkbox__mark,
.vng-pg-auth .form-checkbox:hover input ~ .form-checkbox__mark {
    background-color: var(--vng-navy);
    border-color: var(--vng-navy);
}
.vng-pg-auth .form-checkbox + label {
    font-size: 14px !important;
    color: var(--vng-text) !important;
}
.vng-pg-auth .d-flex.justify-content-between > a {
    font-size: 14px;
    font-weight: 600;
    color: var(--vng-navy);
}
.vng-pg-auth .button {
    width: 100%;
    min-height: 48px;
    padding: 0 20px !important;
    border-radius: var(--vng-r-pill) !important;
    font-size: 15px;
    font-weight: 700;
    transition: background .18s ease, color .18s ease, border-color .18s ease, transform .18s var(--vng-ease);
}
.vng-pg-auth .button.bg-blue-1 {
    background: var(--vng-yellow) !important;
    border-color: var(--vng-yellow) !important;
    color: var(--vng-navy) !important;
    box-shadow: 0 8px 20px rgba(249, 194, 11, .28);
}
.vng-pg-auth .button.bg-blue-1:hover {
    background: var(--vng-yellow-2) !important;
    border-color: var(--vng-yellow-2) !important;
    transform: translateY(-1px);
}
.vng-pg-auth .button .icon-arrow-top-right {
    display: none;
}
/* Social buttons: one grey outline for every provider (no red Google). */
.vng-pg-auth .button[class*="-outline-"] {
    margin-top: 10px !important;
    background: #fff !important;
    border: 1px solid var(--vng-line) !important;
    color: var(--vng-text) !important;
}
.vng-pg-auth .button[class*="-outline-"]:hover {
    border-color: var(--vng-navy) !important;
    color: var(--vng-navy) !important;
}
.vng-pg-auth .button[class*="-outline-"] i {
    color: var(--vng-navy);
}
.vng-pg-auth .advanced,
.vng-pg-auth .advance {
    padding-top: 8px !important;
    padding-bottom: 0 !important;
}
.vng-pg-auth .advanced .text-center:first-child,
.vng-pg-auth .advance .text-center {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 13px;
    color: var(--vng-muted);
}
.vng-pg-auth .advanced .text-center:first-child::before,
.vng-pg-auth .advanced .text-center:first-child::after,
.vng-pg-auth .advance .text-center::before,
.vng-pg-auth .advance .text-center::after {
    content: "";
    flex: 1 1 auto;
    height: 1px;
    background: var(--vng-line);
}
.vng-pg-auth .text-center.px-30 {
    padding: 4px 0 0 !important;
    font-size: 13px;
    line-height: 1.55;
    color: var(--vng-muted);
}
.vng-pg-auth .text-center.px-30 a {
    color: var(--vng-navy);
    font-weight: 600;
}
.vng-pg-auth .invalid-feedback,
.vng-pg-auth .message-error {
    display: none;
    margin-top: 4px;
    font-size: 13px;
    color: var(--vng-red);
}
.vng-pg-auth .invalid-feedback:not(:empty),
.vng-pg-auth .message-error:not(:empty),
.vng-pg-auth .invalid-feedback.show {
    display: block;
}
.vng-pg-auth__links {
    margin: 16px 0 0;
    text-align: center;
    font-size: 14px;
    color: var(--vng-muted);
}
.vng-pg-auth__links a {
    font-weight: 600;
    color: var(--vng-navy);
}

/* ---------- 4. Tìm kiếm ---------- */
.vng-pg-search__form {
    display: flex;
    gap: 10px;
    width: 100%;
    max-width: 720px;
    margin: 14px 0 10px;
}
.vng-pg-search__form .vng-form__input {
    flex: 1 1 auto;
    height: 52px;
    font-size: 17px;
}
.vng-pg-search__form .vng-btn {
    flex: 0 0 auto;
    min-height: 52px;
}
.vng-pg-search__body {
    padding: 4px 0 64px;
}
.vng-pg-search .vng-section {
    padding: 32px 0 8px;
}
.vng-pg-search .vng-section:first-of-type {
    padding-top: 20px;
}
.vng-pg-search .vng-grid--mini .vng-card__meta {
    white-space: normal;
}
.vng-pg-search__empty .vng-empty {
    padding: 48px 24px 40px;
}
.vng-pg-search__empty h2 {
    margin: 0 0 6px;
    font-size: 22px;
    font-weight: 800;
    color: var(--vng-navy);
}
.vng-pg-search__empty p {
    margin: 0 0 18px;
}

/* ---------- 5. Bộ sưu tập ---------- */
.vng-pg-collections__body,
.vng-pg-collection__body {
    padding: 8px 0 64px;
}
.vng-pg-collections .vng-grid {
    margin-top: 12px;
}
.vng-pg-collection__intro {
    max-width: 760px;
    margin: 0 0 28px;
}
.vng-pg-collection__intro.vng-prose {
    font-size: 17px;
}
.vng-pg-collection__intro > :last-child {
    margin-bottom: 0;
}
.vng-pg-collection__banner {
    position: relative;
    aspect-ratio: 21 / 9;
    max-height: 420px;
    margin: 4px 0 28px;
    overflow: hidden;
    border-radius: var(--vng-r-xl);
    background: var(--vng-bg-section);
}
.vng-pg-collection__banner img {
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.vng-pg-collection .vng-section {
    padding: 28px 0 4px;
}
.vng-pg-collection .vng-section:first-of-type {
    padding-top: 0;
}
.vng-pg-collection__item {
    min-width: 0;
}
.vng-pg-collection__note {
    margin: 8px 0 0;
    padding-left: 10px;
    border-left: 3px solid var(--vng-yellow);
    font-size: 14px;
    line-height: 1.5;
    color: var(--vng-text);
}

/* ---------- 6. Cộng đồng đánh giá ---------- */
.vng-pg-contrib__body {
    padding: 8px 0 64px;
}
.vng-pg-contrib__stats {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    max-width: 640px;
    margin: 4px 0 28px;
}
.vng-pg-contrib__stat {
    padding: 14px 18px;
    border: 1px solid var(--vng-line);
    border-radius: var(--vng-r-lg);
    background: #fff;
}
.vng-pg-contrib__stat-num {
    font-size: 24px;
    font-weight: 800;
    line-height: 1.1;
    color: var(--vng-navy);
}
.vng-pg-contrib__stat-lbl {
    margin-top: 4px;
    font-size: 13px;
    color: var(--vng-muted);
}
.vng-pg-contrib__layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 320px;
    gap: 28px;
    align-items: start;
}
.vng-pg-contrib__list {
    margin: 0;
    padding: 0;
    list-style: none;
    border: 1px solid var(--vng-line);
    border-radius: var(--vng-r-xl);
    background: #fff;
    overflow: hidden;
}
.vng-pg-contrib__row {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) auto auto;
    gap: 16px;
    align-items: center;
    padding: 14px 20px;
}
.vng-pg-contrib__row + .vng-pg-contrib__row {
    border-top: 1px solid var(--vng-line);
}
.vng-pg-contrib__rank {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: 50%;
    background: var(--vng-bg-soft);
    font-size: 15px;
    font-weight: 800;
    color: var(--vng-navy);
}
.vng-pg-contrib__row.is-top .vng-pg-contrib__rank {
    background: var(--vng-yellow);
}
.vng-pg-contrib__who {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 10px;
    min-width: 0;
}
.vng-pg-contrib__name {
    font-size: 15px;
    font-weight: 700;
    color: var(--vng-ink);
    overflow-wrap: anywhere;
}
.vng-pg-contrib__tier {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 0 10px;
    border-radius: var(--vng-r-pill);
    font-size: 12px;
    font-weight: 600;
    white-space: nowrap;
    background: var(--vng-bg-section);
    color: var(--vng-muted);
}
.vng-pg-contrib__tier.tier-ambassador {
    background: var(--vng-yellow-soft);
    color: #7a4b00;
}
.vng-pg-contrib__tier.tier-expert {
    background: #e4ecfb;
    color: var(--vng-navy);
}
.vng-pg-contrib__tier.tier-member {
    background: #e7f7ef;
    color: #075e3f;
}
.vng-pg-contrib__avg {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 14px;
    font-weight: 700;
    color: var(--vng-ink);
    white-space: nowrap;
}
.vng-pg-contrib__avg::before {
    content: "";
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--vng-green);
}
.vng-pg-contrib__avg small {
    font-size: 12px;
    font-weight: 500;
    color: var(--vng-muted);
}
.vng-pg-contrib__count {
    min-width: 92px;
    text-align: right;
    font-size: 13px;
    color: var(--vng-muted);
    white-space: nowrap;
}
.vng-pg-contrib__count strong {
    font-size: 15px;
    font-weight: 800;
    color: var(--vng-navy);
}
.vng-pg-contrib__cta {
    position: sticky;
    top: calc(var(--vng-sticky-top, 90px) + 16px);
    padding: 22px;
    border: 1px solid var(--vng-line);
    border-radius: var(--vng-r-xl);
    background: var(--vng-bg-soft);
}
.vng-pg-contrib__cta h2 {
    margin: 0 0 6px;
    font-size: 18px;
    font-weight: 800;
    color: var(--vng-navy);
}
.vng-pg-contrib__cta p {
    margin: 0 0 14px;
    font-size: 14px;
    line-height: 1.55;
    color: var(--vng-muted);
}
.vng-pg-contrib__cta .vng-btn {
    width: 100%;
}
.vng-pg-contrib__tiers {
    margin: 18px 0 0;
    padding: 14px 0 0;
    border-top: 1px solid var(--vng-line);
    font-size: 13px;
    line-height: 1.5;
    color: var(--vng-muted);
}
.vng-pg-contrib__tiers div {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    padding: 3px 0;
}
.vng-pg-contrib__tiers dt {
    font-weight: 600;
    color: var(--vng-text);
}
.vng-pg-contrib__tiers dd {
    margin: 0;
}

/* ---------- 7. Quản lý dữ liệu cá nhân ---------- */
.vng-pg-privacy__col {
    max-width: 640px;
    margin: 0 auto;
    padding: 8px 0 64px;
}
.vng-pg-privacy__notice {
    margin: 0 0 20px;
    padding: 14px 16px;
    border: 1px solid var(--vng-line);
    border-radius: var(--vng-r-md);
    background: var(--vng-bg-soft);
    font-size: 14px;
    line-height: 1.55;
    color: var(--vng-text);
}
.vng-pg-privacy__form {
    margin: 0 0 28px;
    padding: 24px;
    border: 1px solid var(--vng-line);
    border-radius: var(--vng-r-xl);
    background: #fff;
    box-shadow: var(--vng-shadow-sm);
}
.vng-pg-privacy__form-head h2 {
    margin: 0 0 4px;
    font-size: 20px;
    font-weight: 800;
    color: var(--vng-navy);
}
.vng-pg-privacy__form-head p {
    margin: 0;
    font-size: 14px;
    color: var(--vng-muted);
}
.vng-pg-privacy__types {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}
.vng-pg-privacy__type {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0;
    padding: 12px 14px;
    border: 1px solid var(--vng-line);
    border-radius: var(--vng-r-md);
    background: #fff;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.3;
    color: var(--vng-text);
    cursor: pointer;
    transition: border-color .18s ease, background .18s ease;
}
.vng-pg-privacy__type input {
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    margin: 0;
    accent-color: var(--vng-navy);
}
.vng-pg-privacy__type:hover {
    border-color: var(--vng-muted-2);
}
.vng-pg-privacy__type:has(input:checked) {
    border-color: var(--vng-navy);
    background: var(--vng-bg-soft);
    color: var(--vng-navy);
}
.vng-pg-privacy__type:has(input:focus-visible) {
    box-shadow: 0 0 0 3px rgba(15, 45, 94, .12);
}
.vng-pg-privacy__rights {
    display: grid;
    gap: 12px;
    margin: 0 0 24px;
}
.vng-pg-privacy__right {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    padding: 16px 18px;
    border: 1px solid var(--vng-line);
    border-radius: var(--vng-r-lg);
    background: #fff;
}
.vng-pg-privacy__right h3 {
    margin: 0 0 4px;
    font-size: 16px;
    font-weight: 700;
    color: var(--vng-navy);
}
.vng-pg-privacy__right p {
    margin: 0;
    font-size: 14px;
    line-height: 1.5;
    color: var(--vng-muted);
}
.vng-pg-privacy__right > div {
    flex: 1 1 auto;
    min-width: 0;
}
.vng-pg-privacy__right .vng-btn {
    flex: 0 0 auto;
    white-space: nowrap;
}
.vng-pg-privacy__right .vng-btn--danger {
    border-color: #f3c6b8;
    color: var(--vng-red) !important;
}
.vng-pg-privacy__right .vng-btn--danger:hover {
    border-color: var(--vng-red);
    background: #fff5f2;
}
.vng-pg-privacy__right .vng-btn svg {
    width: 14px;
    height: 14px;
}
.vng-pg-privacy__support {
    padding: 18px 20px;
    border-radius: var(--vng-r-lg);
    background: var(--vng-bg-soft);
    font-size: 14px;
    line-height: 1.6;
}
.vng-pg-privacy__support h3 {
    margin: 0 0 6px;
    font-size: 16px;
    font-weight: 700;
    color: var(--vng-navy);
}
.vng-pg-privacy__support p {
    margin: 0 0 6px;
    color: var(--vng-muted);
}
.vng-pg-privacy__support ul {
    margin: 0;
    padding-left: 18px;
}
.vng-pg-privacy__support a {
    color: var(--vng-navy);
    font-weight: 600;
}

/* ---------- 8. Trang lỗi (404 / 403 / 419 / 429 / 401) ---------- */
.vng-pg-error {
    padding: 72px 0 96px;
    min-height: 60vh;
    text-align: center;
}
.vng-pg-error__inner {
    max-width: 640px;
    margin: 0 auto;
}
.vng-pg-error__code {
    display: inline-block;
    margin: 0 0 18px;
    font-size: clamp(72px, 12vw, 120px);
    font-weight: 900;
    line-height: 1;
    letter-spacing: -.04em;
    color: var(--vng-navy);
    background: linear-gradient(0deg, var(--vng-yellow) 0 18%, transparent 18%);
}
.vng-pg-error__title {
    margin: 8px 0 12px;
    font-size: clamp(26px, 4vw, 38px);
    line-height: 1.15;
    font-weight: 800;
    color: var(--vng-navy);
    overflow-wrap: anywhere;
}
.vng-pg-error__text {
    max-width: 560px;
    margin: 0 auto 28px;
    font-size: 17px;
    line-height: 1.6;
    color: var(--vng-muted);
}
.vng-pg-error__actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 12px;
}
.vng-pg-error__suggest {
    margin-top: 44px;
}
.vng-pg-error__suggest p {
    margin: 0 0 10px;
    font-size: 14px;
    color: var(--vng-muted);
}

/* ---------- 9. Trang tĩnh (/page/{slug}) — CSS only, markup belongs to Page/Views/frontend/detail ---------- */
.vng-page-head .vng-page-body--narrow .vng-page-title {
    margin-bottom: 0;
}
.container.vng-page-body--narrow .vng-prose {
    max-width: 72ch;
    font-size: 17px;
}
.container.vng-page-body--narrow .vng-prose > p:first-child {
    font-size: 19px;
    line-height: 1.6;
}
.container.vng-page-body--narrow .vng-prose p,
.container.vng-page-body--narrow .vng-prose li {
    color: var(--vng-text);
}
.container.vng-page-body--narrow .vng-prose a {
    color: var(--vng-navy);
    text-decoration: underline;
    text-underline-offset: 2px;
}
.container.vng-page-body--narrow .vng-prose blockquote {
    margin: 24px 0;
    padding: 4px 0 4px 18px;
    border-left: 3px solid var(--vng-yellow);
    font-size: 18px;
    color: var(--vng-navy);
}
.container.vng-page-body--narrow .vng-prose table {
    width: 100%;
    margin: 0 0 20px;
    border-collapse: collapse;
    font-size: 15px;
}
.container.vng-page-body--narrow .vng-prose th,
.container.vng-page-body--narrow .vng-prose td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--vng-line);
    text-align: left;
    vertical-align: top;
}

/* ---------- 10. Breakpoints ---------- */
@media (max-width: 1199px) {
    .vng-pg-contrib__layout {
        grid-template-columns: minmax(0, 1fr) 280px;
    }
}
@media (max-width: 991px) {
    .vng-pg-contact__layout {
        grid-template-columns: 1fr;
        gap: 28px;
    }
    .vng-pg-contact__form {
        order: -1;
    }
    .vng-pg-contrib__layout {
        grid-template-columns: 1fr;
    }
    .vng-pg-contrib__cta {
        position: static;
    }
}
@media (max-width: 767px) {
    .vng-pg-auth {
        padding: 24px 0 56px;
    }
    .vng-pg-auth__card {
        padding: 24px 18px;
    }
    .vng-pg-contact__form {
        padding: 20px 16px;
    }
    .vng-pg-contact__map {
        aspect-ratio: 4 / 3;
    }
    .vng-pg-error {
        padding: 48px 0 64px;
    }
}
@media (max-width: 575px) {
    .vng-pg .vng-form__row,
    .vng-pg-privacy__types {
        grid-template-columns: 1fr;
    }
    .vng-pg-search__form {
        flex-direction: column;
    }
    .vng-pg-search__form .vng-btn {
        width: 100%;
    }
    .vng-pg-collections .vng-grid {
        grid-template-columns: 1fr;
    }
    .vng-pg-collection .vng-grid {
        grid-template-columns: 1fr;
    }
    .vng-pg-collection .vng-card__link {
        flex-direction: row;
        gap: 12px;
        align-items: flex-start;
    }
    .vng-pg-collection .vng-card__media {
        flex: 0 0 128px;
        width: 128px;
        aspect-ratio: 1 / 1;
        border-radius: 10px;
    }
    .vng-pg-collection .vng-card__body {
        flex: 1 1 auto;
        padding-top: 2px;
    }
    .vng-pg-contrib__stats {
        grid-template-columns: 1fr;
        gap: 8px;
    }
    .vng-pg-contrib__stat {
        display: flex;
        align-items: baseline;
        gap: 10px;
        padding: 10px 14px;
    }
    .vng-pg-contrib__stat-lbl {
        margin: 0;
    }
    .vng-pg-contrib__row {
        grid-template-columns: 32px minmax(0, 1fr) auto;
        gap: 6px 12px;
        padding: 12px 14px;
    }
    .vng-pg-contrib__rank {
        width: 30px;
        height: 30px;
        font-size: 13px;
    }
    .vng-pg-contrib__avg {
        grid-row: 2;
        grid-column: 2 / 4;
    }
    .vng-pg-contrib__count {
        grid-row: 1;
        grid-column: 3;
        min-width: 0;
    }
    .vng-pg-privacy__right {
        flex-direction: column;
        align-items: flex-start;
    }
    .vng-pg-privacy__right .vng-btn {
        width: 100%;
        white-space: normal;
    }
    .vng-pg-error__actions .vng-btn {
        width: 100%;
    }
}
