/* Portal adapter for Én UI v1.0.0: applies shared tokens to the existing Portal shell, plus the read-only settings page. */
body.en-app-body { font-family: var(--en-ui-font); }
:focus-visible { outline: 2px solid var(--en-ui-focus); outline-offset: 2px; box-shadow: var(--en-ui-ring); }

.btn:not(.btn-lg) { --bs-btn-padding-y: 5px; --bs-btn-padding-x: 12px; --bs-btn-font-size: 14px; --bs-btn-line-height: 1.5; --bs-btn-font-weight: 600; --bs-btn-border-radius: var(--en-ui-radius-control); }
.btn.btn-sm { --bs-btn-padding-y: 2px; --bs-btn-padding-x: 10px; --bs-btn-font-size: 13px; }
:where(.btn) { min-height: var(--en-ui-btn-h); display: inline-flex; align-items: center; justify-content: center; gap: 6px; }
:where(.btn-sm) { min-height: var(--en-ui-btn-h-compact); }
.btn-primary { --bs-btn-bg: var(--en-ui-primary); --bs-btn-border-color: var(--en-ui-primary); --bs-btn-hover-bg: var(--en-ui-primary-deep); --bs-btn-hover-border-color: var(--en-ui-primary-deep); --bs-btn-active-bg: var(--en-ui-primary-deep); --bs-btn-disabled-bg: var(--en-ui-primary); --bs-btn-disabled-border-color: var(--en-ui-primary); }
.btn-outline-secondary { --bs-btn-color: var(--en-ui-primary); --bs-btn-border-color: var(--en-ui-control-border); --bs-btn-hover-bg: var(--en-ui-canvas); --bs-btn-hover-color: var(--en-ui-primary-deep); --bs-btn-hover-border-color: var(--en-ui-primary); }
.btn-danger { --bs-btn-bg: var(--en-ui-danger); --bs-btn-border-color: var(--en-ui-danger); --bs-btn-hover-bg: #912018; --bs-btn-hover-border-color: #912018; }
.btn-outline-danger { --bs-btn-color: var(--en-ui-danger); --bs-btn-border-color: var(--en-ui-danger); --bs-btn-hover-bg: var(--en-ui-danger); }
.form-control, .form-select { border-color: var(--en-ui-control-border); border-radius: var(--en-ui-radius-control); }
.form-control:focus, .form-select:focus { border-color: var(--en-ui-focus); box-shadow: var(--en-ui-ring); }
.form-label { font-size: 13px; font-weight: 600; color: var(--en-ui-text); }
:is(div, fieldset):focus-within > .form-label { color: var(--en-ui-accent); }

a.en-brand-lockup { color: #fff; text-decoration: none; border-radius: var(--en-ui-radius-control); }
.en-account-menu-label { display: block; padding: 6px 12px 2px; color: var(--en-ui-muted); font-size: 12px; font-weight: 600; }
.en-account-menu .dropdown-item.active, .en-account-menu .dropdown-item[aria-current="page"] { background: transparent; color: var(--en-ui-accent); font-weight: 600; }
.en-account-menu .dropdown-item .en-svg { width: 18px; height: 18px; }

/* Topbar notification bell (class names match Én ID's bell) */
.en-topbar-actions { display: flex; flex: 0 0 auto; align-items: center; gap: 8px; min-width: 0; }
.en-notif-btn { position: relative; width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center; padding: 0; border: 1px solid rgba(255,255,255,.18); border-radius: var(--en-ui-radius-control); background: rgba(255,255,255,.08); color: #fff; }
.en-notif-btn .en-svg { width: 20px; height: 20px; }
.en-notif-btn:hover, .en-notif-btn[aria-expanded="true"] { background: rgba(255,255,255,.22); border-color: rgba(255,255,255,.34); }
.en-notif-badge { position: absolute; top: -5px; right: -5px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: var(--en-ui-accent); color: #fff; font-size: 11px; font-weight: 700; line-height: 18px; text-align: center; box-shadow: 0 0 0 2px var(--en-ui-primary-deep); }
.en-notif-badge[hidden] { display: none; }
.en-notif-menu { width: min(360px, calc(100vw - 24px)); margin-top: 8px !important; padding: 0; overflow: hidden; border: 1px solid var(--en-ui-border); border-radius: var(--en-ui-radius); box-shadow: var(--en-ui-shadow-pop); }
.en-notif-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; padding: 12px 14px; border-bottom: 1px solid var(--en-ui-border); }
.en-notif-head h2 { margin: 0; color: var(--en-ui-text); font-size: 15px; font-weight: 600; line-height: 1.4; }
.en-notif-head small { color: var(--en-ui-muted); font-size: 12px; font-weight: 500; }
.en-notif-list { max-height: min(420px, 60vh); margin: 0; padding: 4px; overflow-y: auto; list-style: none; }
.en-notif-item { width: 100%; display: grid; grid-template-columns: 32px minmax(0, 1fr); align-items: start; gap: 10px; min-height: 44px; padding: 10px; border-radius: 6px; color: var(--en-ui-text); text-align: left; white-space: normal; }
.en-notif-item:hover, .en-notif-item:focus { background: var(--en-ui-canvas); color: var(--en-ui-primary-deep); }
.en-notif-icon { width: 32px; height: 32px; display: inline-flex; align-items: center; justify-content: center; border-radius: var(--en-ui-radius); background: #EAF1F5; color: var(--en-ui-primary-deep); }
.en-notif-copy { min-width: 0; }
.en-notif-copy strong { display: block; font-size: 14px; font-weight: 600; line-height: 1.35; }
.en-notif-copy span:not(.visually-hidden) { display: block; margin-top: 2px; color: var(--en-ui-muted); font-size: 13px; overflow-wrap: anywhere; }
.en-notif-item.is-unread .en-notif-copy strong::before { content: ""; display: inline-block; width: 8px; height: 8px; margin-right: 6px; border-radius: 50%; background: var(--en-ui-accent); vertical-align: middle; }
.en-notif-empty { padding: 20px 16px; color: var(--en-ui-muted); font-size: 13px; text-align: center; }
.en-notif-empty strong { display: block; margin-bottom: 4px; color: var(--en-ui-text); font-size: 14px; }
.en-notif-foot { padding: 10px 14px 12px; border-top: 1px solid var(--en-ui-border); background: #F7F9FB; }
.en-notif-source { margin: 0 0 8px; color: var(--en-ui-muted); font-size: 12px; line-height: 1.45; }
.en-notif-actions { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px; }
.en-notif-actions [aria-disabled="true"] { opacity: .55; cursor: default; }

/* Settings → Giao diện hệ thống */
.en-settings { display: grid; grid-template-columns: minmax(0, 1fr); gap: 28px; }
.en-settings-intro { display: flex; align-items: flex-end; justify-content: space-between; gap: 20px; padding-bottom: 20px; border-bottom: 1px solid var(--en-ui-border); }
.en-settings-intro h1 { margin: 0; color: var(--en-ui-primary-deep); font-size: 28px; line-height: 1.2; letter-spacing: -.02em; }
.en-settings-intro p:not(.en-section-kicker) { max-width: 760px; margin: 8px 0 0; color: var(--en-ui-muted); }
.en-settings-badge { flex: 0 0 auto; padding: 5px 10px; border: 1px solid var(--en-ui-border); border-radius: 999px; background: #fff; color: var(--en-ui-muted); font-size: 12px; font-weight: 600; }
.en-settings-nav { position: sticky; top: 72px; z-index: 900; display: flex; gap: 4px; overflow-x: auto; margin: 0 -4px; padding: 8px 4px; background: var(--en-ui-canvas); border-bottom: 1px solid var(--en-ui-border); }
.en-settings-nav a { min-height: 34px; display: inline-flex; align-items: center; padding: 4px 12px; border-radius: var(--en-ui-radius-control); color: var(--en-ui-text); font-size: 14px; font-weight: 500; text-decoration: none; white-space: nowrap; }
.en-settings-nav a:hover { background: #fff; }
.en-settings-nav a.active { color: var(--en-ui-accent); font-weight: 600; box-shadow: inset 0 -2px 0 var(--en-ui-accent); }
.en-settings-section { scroll-margin-top: 140px; padding: 24px; border: 1px solid var(--en-ui-border); border-radius: var(--en-ui-radius); background: #fff; }
.en-settings-section h2 { margin: 0 0 6px; color: var(--en-ui-primary-deep); font-size: 20px; }
.en-settings-lead { max-width: 820px; margin: 0 0 18px; color: var(--en-ui-muted); font-size: 14px; }
.en-settings-meta { color: var(--en-ui-muted); font-size: 13px; }

.en-swatch-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 12px; margin: 0; padding: 0; list-style: none; }
.en-swatch { display: grid; gap: 2px; padding: 10px; border: 1px solid var(--en-ui-border); border-radius: var(--en-ui-radius); font-size: 13px; }
.en-swatch-chip { height: 44px; margin-bottom: 6px; border: 1px solid rgba(12,45,66,.12); border-radius: var(--en-ui-radius-control); }
.en-swatch code { color: var(--en-ui-muted); }
.en-swatch-meta { color: var(--en-ui-muted); font-size: 12px; }

.en-type-scale p { margin: 0 0 8px; }
.en-type-h1 { font-size: 28px; font-weight: 700; line-height: 1.2; color: var(--en-ui-primary-deep); }
.en-type-h2 { font-size: 20px; font-weight: 700; color: var(--en-ui-primary-deep); }
.en-type-body { font-size: 15px; line-height: 1.55; }
.en-type-dense { font-size: 14px; line-height: 1.45; }
.en-type-label { font-size: 13px; font-weight: 600; }
.en-type-muted { color: var(--en-ui-muted); }
.en-semantic-text { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 16px; }
.en-semantic-text span, .en-demo-status { display: inline-flex; padding: 3px 10px; border-radius: 999px; font-size: 13px; font-weight: 600; }
.is-success { color: var(--en-ui-success); background: var(--en-ui-success-soft); }
.is-warning { color: var(--en-ui-warning); background: var(--en-ui-warning-soft); }
.is-danger { color: var(--en-ui-danger); background: var(--en-ui-danger-soft); }
.is-info { color: var(--en-ui-focus); background: var(--en-ui-info-soft); }
.en-num-sample { width: min(420px, 100%); font-size: 14px; }
.en-num-sample th { font-weight: 500; color: var(--en-ui-muted); padding: 4px 12px 4px 0; }
.en-num-sample td { padding: 4px 0; font-weight: 600; }

.en-demo-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 12px; }
.en-btn-ghost { --bs-btn-color: var(--en-ui-primary); text-decoration: none; }
.en-btn-icon { width: var(--en-ui-btn-h-compact); padding: 0 !important; }
.en-demo-form { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 16px 20px; align-items: start; }
.en-demo-field { min-width: 0; margin: 0; border: 0; padding: 0; }
.en-demo-field .form-control:not(.en-input-amount), .en-demo-field .form-select { max-width: 360px; }
.en-demo-field .en-money-field { max-width: 240px; }
.en-rule-list { max-width: 820px; margin: 0 0 16px; padding-left: 20px; font-size: 14px; }
.en-rule-list li + li { margin-top: 6px; }
.en-demo-filterbar { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px; margin-top: 12px; }
.en-demo-filter { flex: 0 1 180px; min-width: 0; }
.en-demo-filter.is-date { flex: 0 0 156px; }
.en-demo-filter.is-short { flex-basis: 128px; }
.en-demo-filter.is-wide { flex: 1 1 200px; }
.en-demo-filter-actions { display: flex; flex-wrap: wrap; gap: 8px; }

.en-demo-result { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; min-height: 34px; margin-bottom: 8px; }
.en-demo-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.en-demo-chip { display: inline-flex; align-items: center; gap: 4px; min-height: 30px; padding: 2px 4px 2px 10px; border: 1px solid #bfdbfe; border-radius: 999px; background: var(--en-ui-info-soft); color: #1e3a8a; font-size: 12px; font-weight: 600; }
.en-demo-chip button { width: 24px; height: 24px; padding: 0; border: 0; border-radius: 50%; background: transparent; color: inherit; font-size: 16px; line-height: 1; }
.en-demo-surface { overflow: hidden; border: 1px solid var(--en-ui-border); border-radius: var(--en-ui-radius); }
.en-demo-scroll { overflow-x: auto; }
.en-demo-table { min-width: 860px; font-size: 14px; }
.en-demo-table thead th { background: #f7f9fb; color: #44586a; font-size: 12px; font-weight: 700; white-space: nowrap; vertical-align: middle; }
.en-demo-table td { vertical-align: middle; }
.en-col-nowrap { white-space: nowrap; }
.en-demo-funnel { width: 28px; height: 28px; display: inline-flex; align-items: center; justify-content: center; margin-left: 4px; padding: 0; border: 0; border-radius: var(--en-ui-radius-control); background: transparent; color: #71818d; vertical-align: middle; }
.en-demo-funnel:hover { background: #eaf1f5; color: var(--en-ui-primary-deep); }
.en-demo-funnel.is-active { background: #fdeaf4; color: var(--en-ui-accent); box-shadow: inset 0 0 0 1px #f3a6cf; }
.en-demo-funnel .en-ui-icon { width: 15px; height: 15px; }
.en-demo-popover { position: fixed; inset: auto; width: min(340px, calc(100vw - 24px)); margin: 0; padding: 14px; border: 1px solid var(--en-ui-border); border-radius: var(--en-ui-radius); background: #fff; color: var(--en-ui-text); box-shadow: var(--en-ui-shadow-pop); font-size: 14px; font-weight: 400; white-space: normal; text-align: left; }
.en-demo-popover::backdrop { background: transparent; }
.en-demo-popover-title { margin: 0 0 10px; font-weight: 700; color: var(--en-ui-primary-deep); }
.en-demo-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
.en-demo-pair.is-money { grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr)); }
.en-demo-error { margin: 8px 0 0; color: var(--en-ui-danger); font-size: 12px; font-weight: 600; }
.en-demo-actions { display: flex; justify-content: space-between; gap: 8px; margin-top: 12px; }
.en-demo-actions > span { display: flex; gap: 8px; }
.en-demo-status.is-hoan-tat { color: var(--en-ui-success); background: var(--en-ui-success-soft); }
.en-demo-status.is-dang-cho { color: var(--en-ui-warning); background: var(--en-ui-warning-soft); }
.en-demo-status.is-da-huy { color: #44586a; background: var(--en-ui-neutral-soft); }

.en-icon-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 8px; margin: 0; padding: 0; list-style: none; }
.en-icon-grid li { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 8px 10px; border: 1px solid var(--en-ui-border); border-radius: var(--en-ui-radius-control); color: var(--en-ui-primary); font-size: 12px; }
.en-icon-grid code { color: var(--en-ui-text); overflow-wrap: anywhere; }
.en-feedback-list { display: grid; gap: 8px; }
.en-feedback { margin: 0; padding: 10px 14px; border-left: 4px solid currentColor; border-radius: var(--en-ui-radius-control); font-size: 14px; }

@media (max-width: 767.98px) {
    :where(.btn), :where(.btn-sm) { min-height: var(--en-ui-tap); }
    .en-btn-icon { width: var(--en-ui-tap); }
    .en-notif-btn { width: 44px; height: 44px; }
    .en-demo-funnel { width: 44px; height: 44px; }
    .en-demo-chip button { width: 36px; height: 36px; }
    .en-settings-nav a { min-height: 44px; }
    .en-settings-nav { top: 64px; }
    .en-settings-intro { flex-direction: column; align-items: flex-start; }
    .en-settings-intro h1 { font-size: 24px; }
    .en-settings-section { padding: 16px; }
    .en-demo-pair { grid-template-columns: 1fr; }
    .en-demo-filter, .en-demo-filter.is-date, .en-demo-filter-actions { flex: 1 1 100%; }
}
