:root{--bg:#f6f8fb;--surface:#fff;--ink:#102a43;--muted:#52667a;--brand:#136f63;--brand-dark:#0b534b;--line:#d9e2ec;--field-border:#7a8ea3;--danger:#9b2c2c;--warn:#8a5d00;--soft:#eaf6f3;--nav-active:#c2410c;--shadow:0 10px 30px rgba(16,42,67,.08);--radius:18px}
*{box-sizing:border-box}[hidden]{display:none!important}html,body{min-height:100%;overflow-x:hidden}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,sans-serif;background:var(--bg);color:var(--ink);line-height:1.55}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}.skip-link{position:absolute;left:-9999px}.skip-link:focus{left:1rem;top:1rem;z-index:999;background:#fff;padding:.7rem;border:2px solid var(--brand)}a{color:var(--brand-dark)}
.app-shell{min-height:100vh;display:grid;grid-template-columns:minmax(220px,260px) minmax(0,1fr)}.sidebar{background:#0b2239;color:#fff;padding:24px 18px;position:sticky;top:0;height:100vh;overflow:hidden;display:flex;flex-direction:column}.brand{font-size:1.35rem;font-weight:800;letter-spacing:-.02em;margin-bottom:28px}.brand small{display:block;font-size:.72rem;font-weight:500;color:#9fb3c8;margin-top:3px}.nav{display:grid;align-content:start;gap:7px;padding-bottom:12px;flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain}.sidebar-footer{flex:0 0 auto;padding-top:14px;border-top:1px solid rgba(255,255,255,.12)}.nav button{border:0;background:transparent;color:#d9e2ec;text-align:left;padding:11px 12px;border-radius:10px;min-height:44px}.nav button:hover,.nav button.active{background:#173f5f;color:#fff}.main{padding:28px;max-width:1450px;width:100%;min-width:0;margin:auto}.topbar{display:flex;justify-content:space-between;gap:16px;align-items:center;margin-bottom:24px;min-width:0}.topbar h1{margin:0;font-size:clamp(1.5rem,2.2vw,1.85rem);overflow-wrap:anywhere}.muted{color:var(--muted)}
.grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:16px}.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:20px;box-shadow:var(--shadow);min-width:0;overflow-wrap:anywhere}.span-12{grid-column:span 12}.span-8{grid-column:span 8}.span-7{grid-column:span 7}.span-6{grid-column:span 6}.span-5{grid-column:span 5}.span-4{grid-column:span 4}.span-3{grid-column:span 3}.card h2,.card h3{margin-top:0}.card h2{font-size:1.15rem;line-height:1.35}.card h3{font-size:1rem}.hero{background:linear-gradient(135deg,#e5f5f2,#fff);border-color:#b7ded7}.kpi{font-size:2rem;font-weight:800}.pill{display:inline-flex;padding:4px 9px;border-radius:999px;background:#edf2f7;color:#486581;font-size:.78rem;max-width:100%;white-space:normal}.pill.success{background:#e5f5f2;color:#0b534b}.pill.warn{background:#fff3cd;color:#6b4f00}.pill.danger{background:#fde8e8;color:#8a1c1c}
.actions{display:flex;gap:10px;flex-wrap:wrap}.btn{border:1px solid var(--line);background:#fff;color:var(--ink);padding:10px 14px;border-radius:11px;font-weight:700;min-height:44px}.btn.primary{background:var(--brand);border-color:var(--brand);color:#fff}.btn.primary:hover{background:var(--brand-dark)}.btn.danger{background:#fff5f5;border-color:#feb2b2;color:var(--danger)}:focus-visible{outline:3px solid var(--brand-dark);outline-offset:2px}.sidebar :focus-visible{outline-color:#9fe3d6}
.form{display:grid;gap:14px;min-width:0}.field{display:grid;gap:6px;min-width:0}.field label{font-weight:700;font-size:.9rem}.field input,.field textarea,.field select{width:100%;max-width:100%;min-width:0;padding:11px 12px;border:1px solid var(--field-border);border-radius:10px;background:#fff;color:var(--ink)}.field textarea{min-height:120px;resize:vertical}.row{display:flex;gap:12px;align-items:end;flex-wrap:wrap;min-width:0}.row>.field{flex:1 1 220px}.error{padding:10px 12px;background:#fff5f5;border:1px solid #feb2b2;border-radius:10px;color:var(--danger)}.notice{padding:12px;background:#f0f7ff;border:1px solid #c8e1ff;border-radius:10px}.safety{padding:14px;background:#fff8e6;border:1px solid #f5c56b;border-radius:12px;color:#5b4300}
.list{display:grid;gap:10px;min-width:0}.list-item{border:1px solid var(--line);border-radius:12px;padding:14px;background:#fff;min-width:0}.list-item h3{margin:.1rem 0}.meta{font-size:.82rem;color:var(--muted);overflow-wrap:anywhere}.chat{height:min(54vh,620px);overflow:auto;padding:14px;background:#f8fafc;border:1px solid var(--line);border-radius:14px;display:flex;flex-direction:column;gap:10px}.bubble{max-width:min(78%,720px);padding:11px 13px;border-radius:14px;white-space:pre-wrap;overflow-wrap:anywhere}.bubble.user{align-self:flex-end;background:#dff3ef}.bubble.assistant{align-self:flex-start;background:#fff;border:1px solid var(--line)}.bubble.safety{align-self:stretch;max-width:100%}.chat-compose{display:flex;gap:10px;margin-top:10px}.chat-compose textarea{flex:1;min-height:48px;max-height:140px}
.table-wrap{overflow:auto;max-width:100%;-webkit-overflow-scrolling:touch}.table{width:100%;border-collapse:collapse;min-width:640px}.table th,.table td{border-bottom:1px solid var(--line);padding:10px;text-align:left;vertical-align:top}.table th{font-size:.82rem;color:var(--muted);background:#f8fafc;position:sticky;top:0}.auth-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}.auth-card{width:min(500px,100%)}.auth-brand{text-align:center;margin-bottom:18px}.auth-brand h1{margin:.2rem 0}.section-title{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.mobile-nav{display:none}.empty{text-align:center;padding:30px;color:var(--muted)}pre,.code-block{max-width:100%;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere}
@media(max-width:1100px){.app-shell{grid-template-columns:220px minmax(0,1fr)}.main{padding:22px}.span-3{grid-column:span 6}}
@media(max-width:900px){.app-shell{display:block}.sidebar{display:none}.main{padding:18px 14px 94px;max-width:none}.mobile-nav{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:30;background:#fff;border-top:1px solid var(--line);justify-content:flex-start;gap:4px;padding:8px max(8px,env(safe-area-inset-right)) calc(8px + env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left));overflow-x:auto;overscroll-behavior-x:contain}.mobile-nav button{border:0;background:none;padding:8px 10px;font-size:.78rem;min-width:max-content;min-height:44px}.span-8,.span-7,.span-6,.span-5,.span-4,.span-3{grid-column:span 12}.topbar{align-items:flex-start;flex-wrap:wrap}.bubble{max-width:90%}}
@media(max-width:560px){.auth-wrap{padding:12px}.card{padding:16px;border-radius:14px}.main{padding-left:10px;padding-right:10px}.grid{gap:12px}.row{flex-direction:column;align-items:stretch}.row>*{width:100%}.topbar{margin-bottom:16px}.table{min-width:560px}.chat-compose{flex-direction:column}.chat-compose .btn{width:100%}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
.protected-viewer{position:relative;user-select:none;-webkit-user-select:none;print-color-adjust:exact}.protected-viewer .watermark{position:sticky;top:0;z-index:5;opacity:.35;font-size:12px;pointer-events:none}@media print{.protected-viewer{display:none!important}.protected-viewer:after{content:'Protected clinical content cannot be printed';display:block}}
:root{--band-good:#2f7d4f;--band-fair:#9a6a00;--band-attention:#c05621;--band-alert:#b42318;--band-neutral:#3d5a80}.assess-fill-neutral{fill:var(--band-neutral)}.assess-fill-good{fill:var(--band-good)}.assess-fill-fair{fill:var(--band-fair)}.assess-fill-attention{fill:var(--band-attention)}.assess-fill-alert{fill:var(--band-alert)}.assess-defs{position:absolute;width:0;height:0;overflow:hidden}
.assess-question{max-width:760px}.assess-progress{display:grid;gap:6px}.assess-progress-text{font-weight:700}.assess-progress progress{width:100%;height:10px;accent-color:var(--brand)}.assess-fieldset{border:0;padding:0;margin:0;min-width:0}.assess-prompt{font-size:1.12rem;font-weight:700;margin-bottom:12px;padding:0;overflow-wrap:anywhere}.assess-prompt:focus{outline:none}.assess-options{display:grid;gap:10px;margin-top:12px}.assess-option{border:1px solid var(--line);border-radius:12px;background:#fff;min-width:0}.assess-option label{display:flex;flex-wrap:wrap;gap:10px;align-items:center;padding:12px 14px;min-height:48px;cursor:pointer}.assess-option input{width:20px;height:20px;flex:none;accent-color:var(--brand)}.assess-option-label{flex:1 1 180px;overflow-wrap:anywhere}.assess-option:has(input:checked){border-color:var(--brand);background:var(--soft);box-shadow:inset 0 0 0 1px var(--brand)}.assess-option:has(input:focus-visible){outline:3px solid var(--brand-dark);outline-offset:2px}.assess-option>.assess-media{padding:0 14px 12px}.assess-nav{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}
.assess-media{margin:8px 0;min-width:0}.assess-media img{display:block;max-width:100%;height:auto;max-height:340px;border-radius:10px;border:1px solid var(--line)}.assess-option .assess-media img{max-height:160px}.assess-media audio{width:100%;max-width:420px}.assess-transcript summary{cursor:pointer;font-weight:600;min-height:44px}
.assess-result{display:grid;gap:18px;margin-top:12px;min-width:0}.assess-overall{display:flex;flex-wrap:wrap;gap:16px;align-items:center}.assess-overall-text{flex:1 1 220px;min-width:0}.assess-overall-text h3{margin:0 0 6px}.assess-gauge{width:min(220px,100%);height:auto;flex:none}.assess-gauge-track{stroke:#e4e9f0}.assess-gauge-score{font-size:34px;font-weight:800;fill:var(--ink)}.assess-gauge-sub{font-size:13px;fill:var(--muted)}
.assess-band{display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:999px;border:1px solid currentColor;font-weight:700;font-size:.86rem;background:#fff}.assess-band-good{color:var(--band-good)}.assess-band-fair{color:var(--band-fair)}.assess-band-attention{color:var(--band-attention)}.assess-band-alert{color:var(--band-alert)}.assess-band-neutral{color:var(--band-neutral)}.assess-profile-code{font-size:2.2rem;font-weight:800;letter-spacing:.12em;margin:.2em 0;color:var(--band-neutral)}.assess-type-letter{font-weight:800;font-size:1.2rem;color:var(--band-neutral)}.assess-poles{display:flex;justify-content:space-between;gap:8px;font-size:.86rem}.assess-bar-mid{stroke:currentColor;stroke-opacity:.35;stroke-width:2}.assess-bar-marker{stroke:#fff;stroke-width:2}.assess-swatch{flex:none;border-radius:3px}
.assess-section h3{margin:0 0 10px}.assess-domains{list-style:none;padding:0;margin:0;display:grid;gap:14px}.assess-domain{min-width:0}.assess-domain-head{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center;margin-bottom:6px}.assess-bar{display:block;width:100%;height:auto}.assess-bar-track{fill:#e4e9f0}.assess-advice{margin:6px 0 0}
.assess-spark{width:min(320px,100%);height:auto;display:block}.assess-spark-base{stroke:var(--line)}.assess-spark-line{stroke:var(--brand)}.assess-spark-dot{fill:var(--brand)}.assess-spark-last{fill:#fff;stroke:var(--brand);stroke-width:2.5}.assess-legend ul{padding-left:18px;display:grid;gap:4px}.assess-legend summary{cursor:pointer;font-weight:700;min-height:44px}.assess-legend-domain{margin-top:10px}.assess-crisis h3{margin-top:0}.assess-crisis ul{padding-left:20px}.assess-steps{padding-left:20px}
@media(max-width:560px){.assess-nav{flex-direction:column-reverse}.assess-nav .btn{width:100%}.assess-gauge{margin:0 auto}}
.article-section{display:grid;gap:12px}.article-heading h2{margin:0}.article-heading p{margin:4px 0 0}
.article-tabs{display:flex;gap:8px;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin;-webkit-overflow-scrolling:touch}
.article-tab{flex:0 0 auto;border:1px solid var(--line);background:var(--surface);color:var(--ink);border-radius:999px;padding:8px 14px;min-height:40px;white-space:nowrap}
.article-tab:hover{border-color:var(--brand)}.article-tab.active{background:var(--brand);border-color:var(--brand);color:#fff}
.article-tab-desc{margin:0}
.article-card{display:flex;flex-direction:column;gap:8px}.article-card h2{font-size:1.05rem;margin:0}.article-card p{margin:0;flex:1}.article-card .btn{align-self:flex-start}
.article-cover{width:calc(100% + 40px);margin:-20px -20px 4px;aspect-ratio:16/9;object-fit:cover;border-radius:var(--radius) var(--radius) 0 0;background:#e6f2f0;display:block}
.article-cover-empty{background:linear-gradient(135deg,#d7eeea,#eef4fb)}
.article-view{max-width:820px;margin:0 auto}.article-view h1{margin:14px 0 4px}.article-lead{font-size:1.08rem;font-weight:500}
.article-figure{margin:14px 0}.article-figure img{width:100%;max-height:440px;object-fit:cover;border-radius:12px;display:block}.article-figure figcaption{font-size:.78rem;color:var(--muted);margin-top:6px}
.article-body h3{margin:20px 0 6px;font-size:1.1rem}.article-body p,.article-body li{line-height:1.7}
@media(max-width:900px){.article-card.span-4{grid-column:span 6}}
@media(max-width:560px){.article-card.span-4{grid-column:span 12}.article-cover{width:calc(100% + 32px);margin:-16px -16px 4px;border-radius:14px 14px 0 0}}
.article-pager{display:flex;flex-wrap:wrap;gap:6px;align-items:center;justify-content:center;margin-top:8px}.article-pager .btn{min-width:44px;min-height:40px;padding:6px 10px}
.article-page.active{background:var(--brand);border-color:var(--brand);color:#fff}.article-page-gap{padding:0 4px;color:var(--muted)}
.article-citation{margin-top:20px;padding-top:14px;border-top:1px solid var(--line)}.article-citation h3{font-size:1rem;margin:0 0 6px}.article-citation p{margin:4px 0}
.care-suggest{border:1px solid var(--line);border-radius:12px;padding:16px}.care-suggest.care-review,.care-suggest.care-urgent{border-width:2px;border-color:var(--primary,#1f6feb)}.care-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;margin:12px 0}.care-card{border:1px solid var(--line);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:6px}.care-card-head{display:flex;justify-content:space-between;align-items:center;gap:8px}.care-card .btn{align-self:flex-start;margin-top:auto}
input,select,textarea{max-width:100%;min-width:0}label>select,label>input:not([type=checkbox]):not([type=radio]){display:block;width:100%;margin-top:4px}
#main form:not(.form-inline) input:not([type=checkbox]):not([type=radio]):not([type=file]),#main form select,#main form textarea,#main .row>input,#main .row>select{padding:10px 12px;border:1px solid var(--field-border);border-radius:10px;background:#fff;color:var(--ink);font:inherit}
.main{margin:0 auto;align-self:start}
.table{min-width:560px}.table td .btn{white-space:nowrap}
/* Staff list on phones: one card per person instead of a squeezed table. */
@media (max-width:640px){#ot-staff .table{min-width:0}#ot-staff thead{display:none}#ot-staff tr{display:block;border-bottom:1px solid var(--line);padding:10px 0}#ot-staff td{display:block;border:0;padding:3px 0;overflow-wrap:anywhere}#ot-staff td:empty{display:none}}
.chat-session{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 12px}.chat-session.active{border-color:var(--brand);background:var(--soft)}.chat-session-open{flex:1;min-width:0;text-align:left;background:none;border:0;padding:4px 0;cursor:pointer;color:inherit;font:inherit;overflow-wrap:anywhere}.chat-sessions{margin-top:12px;max-height:260px;overflow:auto}.bubble.failed{border:1px solid var(--danger)}.chat-failed{margin-top:8px;white-space:normal}.chat-failed .btn{margin-top:6px}.emotion-picker{border:0;padding:0;margin:0}.emotion-picker legend{font-weight:600;margin-bottom:6px}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border:1px solid var(--line);border-radius:999px;background:#fff;font-size:.88rem;cursor:pointer}.mobile-nav .mobile-logout{color:var(--danger)}
/* Design audit fixes (reports/design.md): headings, form controls, tables, tap targets, navigation. */
h1,h2,h3{line-height:1.3}
/* Inputs nested inside a bold .field label must not render typed text and placeholders in bold. */
.field label :is(input,select,textarea){font-weight:400}
/* Controls outside a form/.field (org selectors, table cells, login code) get the same base look. */
#main :is(input:not([type=checkbox],[type=radio],[type=file],[type=range],[type=hidden]),select,textarea),.auth-card :is(input:not([type=checkbox],[type=radio],[type=file],[type=range],[type=hidden]),select,textarea){padding:10px 12px;border:1px solid var(--field-border);border-radius:10px;background:#fff;color:var(--ink)}
#main :is(input:not([type=checkbox],[type=radio],[type=file],[type=range],[type=hidden]),select),.auth-card :is(input:not([type=checkbox],[type=radio],[type=file],[type=range],[type=hidden]),select){min-height:44px}
input[type=checkbox],input[type=radio]{width:20px;height:20px;min-width:20px;min-height:20px;accent-color:var(--brand);vertical-align:middle;flex:none}
summary{cursor:pointer;min-height:44px;padding-block:9px}
/* Tables: keep words, dates and amounts whole (the card's overflow-wrap:anywhere broke them letter by letter); .table-wrap scrolls instead. */
.table th,.table td{overflow-wrap:normal;word-break:normal;min-width:7rem}.table code,.table time,.table .num{white-space:nowrap}#main .table td :is(input:not([type=checkbox],[type=radio]),select){width:100%;min-width:7rem;min-height:40px;padding:8px 10px}
/* Destructive actions read as destructive. */
.btn:is(.delete-journal,.chat-session-delete,.revoke-session,.revoke-passkey,.revoke-scim-token,.io-revoke,.ot-inv-revoke){background:#fff5f5;border-color:#feb2b2;color:var(--danger)}
/* Monospace stack with proper Vietnamese diacritic support. */
pre,code,.code-block{font-family:ui-monospace,"SF Mono","Cascadia Mono","Noto Sans Mono","Liberation Mono",monospace}pre,.code-block{font-size:.86rem}
/* Desktop sidebar (nav-groups.js): a short list of feature groups; each group opens a flyout to the right of the sidebar. */
.nav{gap:4px}.nav button{width:100%}
.nav-group-toggle{display:flex;align-items:center;gap:8px}.nav-group-label{flex:1 1 auto;min-width:0}
.nav-group-count{flex:none;min-width:22px;padding:0 6px;border-radius:999px;background:rgba(255,255,255,.1);color:#bcccdc;font-size:.72rem;line-height:20px;text-align:center}
.nav-chevron{flex:none;width:8px;height:8px;border-top:2px solid currentColor;border-right:2px solid currentColor;transform:rotate(45deg);opacity:.7;margin-right:2px}
.nav .nav-group-toggle.has-active{background:#173f5f;color:#fff;box-shadow:inset 3px 0 0 #7fd6c6;font-weight:700}
.nav .nav-group.open>.nav-group-toggle{background:#1d4b70;color:#fff}.nav .nav-group.open .nav-chevron{opacity:1}
.nav-flyout{position:fixed;z-index:60;width:272px;max-width:calc(100vw - 280px);max-height:calc(100vh - 16px);overflow-y:auto;overscroll-behavior:contain;padding:10px;background:#0f2c47;border:1px solid rgba(255,255,255,.14);border-radius:14px;box-shadow:0 18px 40px rgba(6,20,36,.35);display:grid;gap:2px}
.nav-flyout.wide{width:560px;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:10px;align-items:start}.nav-flyout.wide .nav-flyout-title{grid-column:1/-1}
.nav-flyout-title{font-size:.74rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:#9fb3c8;padding:4px 12px 8px}
.nav-section{display:grid;gap:2px;min-width:0}.nav-flyout.wide .nav-section{margin-bottom:8px}
.nav-section-label{font-size:.76rem;font-weight:700;color:#9fe3d6;padding:6px 12px 2px}
.nav .nav-flyout button{min-height:40px;padding:9px 12px}
.nav button.active{box-shadow:inset 3px 0 0 #7fd6c6;font-weight:700}
@media(max-width:1100px){.nav-flyout.wide{width:480px}}
@media(max-width:900px){.nav-flyout{display:none!important}}
.sidebar-footer>div:first-child{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;overflow-wrap:anywhere}
@media(max-width:900px){
/* Bottom bar: a few key routes plus "Thêm"; the sheet above it lists every entry, groups as accordions. */
.mobile-nav{overflow:visible;justify-content:space-around;gap:2px;box-shadow:0 -6px 18px rgba(16,42,67,.06)}
.mobile-nav>button{flex:1 1 auto;min-width:0;padding:6px 4px;line-height:1.2;font-size:.8rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mobile-nav>.mobile-more{flex:0 0 auto;padding:6px 10px;display:flex;align-items:center;justify-content:center;gap:6px}.mobile-more::after{content:"";width:6px;height:6px;border-top:2px solid currentColor;border-left:2px solid currentColor;transform:rotate(45deg) translate(1px,1px)}
.mobile-nav .mobile-more[aria-expanded="true"],.mobile-nav .mobile-more.has-active{color:var(--brand-dark);font-weight:700}.mobile-nav .mobile-more.has-active{color:var(--nav-active)}
.mobile-sheet{position:fixed;left:0;right:0;bottom:calc(60px + env(safe-area-inset-bottom));z-index:40;max-height:calc(100vh - 120px);max-height:calc(100dvh - 120px);overflow-y:auto;overscroll-behavior:contain;background:#fff;border-top:1px solid var(--line);border-radius:18px 18px 0 0;box-shadow:0 -14px 34px rgba(16,42,67,.18);padding:6px 14px 14px}
.mobile-sheet-head{display:flex;align-items:center;justify-content:space-between;gap:12px;position:sticky;top:-6px;background:#fff;padding:8px 0;z-index:1;border-bottom:1px solid var(--line)}.mobile-sheet-head h2{margin:0;font-size:1rem}
.mobile-sheet-body{display:grid;gap:2px;padding-top:6px}
.mobile-nav .mobile-sheet button,.mobile-sheet summary{display:flex;align-items:center;width:100%;text-align:left;border:0;background:none;color:var(--ink);padding:10px 12px;border-radius:10px;min-height:44px;font-size:.95rem}
.mobile-nav .mobile-sheet .mobile-sheet-close{width:auto;border:1px solid var(--line);font-weight:700;padding:6px 14px}
.mobile-sheet summary{font-weight:700;list-style:none;justify-content:space-between}.mobile-sheet summary::-webkit-details-marker{display:none}
.mobile-sheet summary::after{content:"";width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg);margin-right:4px}.mobile-group[open]>summary::after{transform:rotate(-135deg)}
.mobile-group-list{display:grid;gap:2px;padding:0 0 6px 12px;border-left:2px solid var(--soft);margin-left:12px}
.mobile-sheet .nav-section-label{font-size:.76rem;font-weight:700;color:var(--muted);padding:8px 12px 2px}
.mobile-nav .mobile-sheet button.active{background:#fff4ed;color:var(--nav-active);font-weight:700;box-shadow:inset 3px 0 0 var(--nav-active)}
.mobile-nav .mobile-sheet .mobile-logout{color:var(--danger);border-top:1px solid var(--line);border-radius:0;margin-top:6px}
body.mobile-sheet-open{overflow:hidden}
.mobile-nav button{font-size:.84rem;color:var(--ink);border-radius:8px}
.mobile-nav button.active{color:var(--nav-active);font-weight:700;box-shadow:none}.mobile-nav button:hover,.mobile-nav button:focus-visible{box-shadow:inset 0 -3px 0 var(--brand)}
/* Chat: the composer stays reachable above the fixed bottom nav. */
.chat{height:calc(100vh - 320px);height:calc(100dvh - 320px);min-height:260px}
.chat-compose{position:sticky;bottom:calc(66px + env(safe-area-inset-bottom));z-index:2;background:var(--surface);padding:8px 0}
}
@media(max-width:560px){
/* In a column .row the 220px flex-basis became a 220px height for every field. */
.row>.field{flex:0 0 auto}
}
/* Accessibility (a11y.js): screen-reader-only announcers, programmatic focus targets and the session warning. */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
h1[tabindex="-1"]:focus,main[tabindex="-1"]:focus{outline:none}
.session-warning{position:fixed;z-index:1000;left:50%;top:12px;transform:translateX(-50%);width:min(560px,calc(100% - 24px));padding:14px 16px;background:#fff8e6;border:2px solid #8a5d00;border-radius:12px;color:#3d2c00;box-shadow:var(--shadow)}.session-warning p{margin:0 0 10px}.session-warning-error{color:var(--danger);font-weight:700}
/* Admin action results and record references (admin-format.js): readable summaries, not raw JSON. */
.result-output:empty{display:none}.result-output{margin-top:12px;max-width:100%;overflow:auto}dl.result-summary{display:grid;grid-template-columns:minmax(140px,max-content) 1fr;gap:6px 14px;margin:0}dl.result-summary dt{color:var(--muted);font-size:.86rem}dl.result-summary dd{margin:0;overflow-wrap:anywhere}dl.result-summary dl.result-summary{grid-template-columns:minmax(120px,max-content) 1fr}.ref{white-space:nowrap}@media (max-width:640px){dl.result-summary{grid-template-columns:1fr}dl.result-summary dd{margin-bottom:6px}}
/* Professional verification: credential badge on patient-facing cards, qualification rows. */
.pv-badge{margin-bottom:8px}.pv-badge .meta{margin-top:4px;line-height:1.45}.pv-qual{border:0;padding:0;margin:0 0 8px;flex-wrap:wrap}
/* Assessments (assessment-catalog.js, #assessment, #assessment-take, #assessment-result): catalog, focused test page and result page with charts. */
.assess-cat-icon{flex:none;display:block}.assess-cat-mental{color:#1d5f8a}.assess-cat-mental .assess-cat-bg{fill:#e3f1fb}.assess-cat-wellbeing{color:#8a5a00}.assess-cat-wellbeing .assess-cat-bg{fill:#fdf1dc}.assess-cat-work{color:#4b3c99}.assess-cat-work .assess-cat-bg{fill:#ece8fb}.assess-cat-personality{color:#8f2c5a}.assess-cat-personality .assess-cat-bg{fill:#fbe6ef}.assess-cat-career{color:#13665a}.assess-cat-career .assess-cat-bg{fill:#e2f4ee}.assess-cat-other{color:#486581}.assess-cat-other .assess-cat-bg{fill:#edf2f7}
.assess-hero{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:20px;align-items:center;padding:26px 28px;margin-bottom:18px;border-radius:22px;border:1px solid #b7ded7;background:linear-gradient(135deg,#e5f5f2 0%,#f4fbf9 55%,#eef4fb 100%)}
.assess-hero h1{margin:.1em 0 .35em;font-size:clamp(1.45rem,2.6vw,2rem);line-height:1.25}.assess-hero h1:focus{outline:none}.assess-hero p{margin:0 0 8px;max-width:62ch}.assess-hero-kicker{font-size:.8rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--brand-dark)}.assess-hero-note{font-size:.88rem;color:var(--muted)}.assess-hero-art{width:100%;height:auto}
.assess-filters:empty{display:none}.assess-chips{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 18px}.assess-chip{display:inline-flex;align-items:center;gap:8px;min-height:44px;padding:6px 14px 6px 8px;border:1px solid var(--line);border-radius:999px;background:#fff;color:var(--ink);font-weight:600;font-size:.92rem}.assess-chip:hover{border-color:var(--brand)}.assess-chip[data-assess-filter="all"]{padding-left:14px}.assess-chip.active{background:var(--brand);border-color:var(--brand);color:#fff}.assess-chip-count{min-width:22px;padding:0 7px;border-radius:999px;background:#edf2f7;color:#334e68;font-size:.76rem;line-height:20px;text-align:center}.assess-chip.active .assess-chip-count{background:rgba(255,255,255,.22);color:#fff}
.assess-block{margin-bottom:22px}.assess-block-title{font-size:1.15rem;margin:0 0 12px}
.assess-cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,290px),1fr));gap:16px}
.assess-card{display:flex;flex-direction:column;gap:10px;min-width:0;padding:18px;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);overflow-wrap:anywhere;transition:transform .15s ease,box-shadow .15s ease}.assess-card:hover{transform:translateY(-2px);box-shadow:0 14px 34px rgba(16,42,67,.12)}
.assess-card-head{display:flex;align-items:center;gap:10px}.assess-card-cat{font-size:.8rem;font-weight:700;color:var(--muted)}.assess-card h3{margin:0;font-size:1.06rem;line-height:1.35}.assess-card-blurb{margin:0;color:#334e68;flex:1 1 auto}
.assess-facts{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.84rem;color:var(--muted)}.assess-facts li{display:inline-flex;align-items:center;gap:5px}
.assess-card-last{margin:0}.assess-card-progress{display:grid;gap:4px}.assess-meter{height:8px;border-radius:999px;background:#e4e9f0;overflow:hidden}.assess-meter span{display:block;height:100%;background:var(--brand);border-radius:inherit}
.assess-card-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:4px}.assess-card-actions .btn{flex:1 1 auto;text-align:center}a.btn{display:inline-flex;align-items:center;justify-content:center;text-decoration:none}
.assess-history-card{margin-top:4px}.assess-history{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.assess-history-link{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;color:var(--ink);text-decoration:none;background:#fff}.assess-history-link:hover{border-color:var(--brand);background:var(--soft)}
.assess-history-main{display:grid;gap:2px;min-width:0}.assess-history-result{font-weight:700;font-size:.9rem;text-align:right;max-width:280px}.assess-history-go{font-size:1.4rem;color:var(--muted);line-height:1}
.assess-tone-good{color:var(--band-good)}.assess-tone-fair{color:var(--band-fair)}.assess-tone-attention{color:var(--band-attention)}.assess-tone-alert{color:var(--band-alert)}.assess-tone-neutral{color:var(--band-neutral)}
.assess-take-shell{min-height:100vh;min-height:100dvh;background:var(--bg)}
.assess-take-head{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 16px;background:rgba(255,255,255,.96);border-bottom:1px solid var(--line)}
.assess-exit{display:inline-flex;align-items:center;gap:4px;padding-left:10px}.assess-take-brand{font-weight:800;color:var(--muted);font-size:.9rem}
.assess-take-main{max-width:760px;margin:0 auto;padding:20px 16px 48px}.assess-take-main:focus{outline:none}
.assess-take-intro{display:flex;gap:14px;align-items:flex-start;margin-bottom:12px}.assess-take-introtext{min-width:0}.assess-take-cat{margin:0;font-size:.8rem;font-weight:700;color:var(--brand-dark)}.assess-take-title{margin:2px 0 4px;font-size:clamp(1.25rem,3.4vw,1.6rem);line-height:1.3;overflow-wrap:anywhere}.assess-take-title:focus{outline:none}.assess-take-blurb{margin:0;color:var(--muted)}
.assess-take-instr{margin:0 0 14px;padding:12px 14px;border-radius:12px;background:#f0f7ff;border:1px solid #c8e1ff;font-size:.94rem}
.assess-take-card{padding:22px}.assess-take-foot{margin-top:12px;text-align:center}
.assess-question{max-width:none}.assess-progress{gap:8px;margin-bottom:6px}.assess-progress-row{display:flex;justify-content:space-between;align-items:baseline;gap:8px;flex-wrap:wrap}
.assess-progress progress{-webkit-appearance:none;appearance:none;width:100%;height:10px;border:0;border-radius:999px;background:#e4e9f0;overflow:hidden}.assess-progress progress::-webkit-progress-bar{background:#e4e9f0;border-radius:999px}.assess-progress progress::-webkit-progress-value{background:var(--brand);border-radius:999px;transition:width .25s ease}.assess-progress progress::-moz-progress-bar{background:var(--brand);border-radius:999px}
.assess-prompt{font-size:clamp(1.08rem,2.4vw,1.25rem);line-height:1.45;margin:14px 0 4px}
.assess-options{gap:10px;margin-top:14px}.assess-option{border:1.5px solid var(--line);border-radius:14px;transition:border-color .12s ease,background .12s ease}.assess-option:hover{border-color:var(--brand)}
.assess-option label{position:relative;padding:14px 16px;min-height:56px;font-size:1.02rem;gap:12px}.assess-option label>input[type=radio]{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.assess-option-key{flex:none;display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;border:2px solid var(--field-border);font-size:.85rem;font-weight:800;color:var(--muted);background:#fff}.assess-option:has(input:checked) .assess-option-key{background:var(--brand);border-color:var(--brand);color:#fff}.assess-option:has(input:checked){border-color:var(--brand);background:var(--soft);box-shadow:inset 0 0 0 1px var(--brand)}.assess-option:has(input:checked) .assess-option-label{font-weight:700}
.assess-option label .assess-media,.assess-option>.assess-media{position:relative;z-index:1}.assess-nav{margin-top:6px}.assess-nav .btn{min-width:130px}.assess-save-status{margin-top:8px;min-height:1.2em}
.assess-dialog{border:0;border-radius:18px;padding:22px;max-width:min(440px,calc(100vw - 32px));box-shadow:0 24px 60px rgba(16,42,67,.3);color:var(--ink)}.assess-dialog::backdrop{background:rgba(16,42,67,.45)}.assess-dialog h2{margin:0 0 8px;font-size:1.2rem}.assess-dialog-actions{display:flex;flex-wrap:wrap;gap:10px;justify-content:flex-end;margin-top:16px}
.assess-crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:12px;font-size:.92rem}.assess-crumbs a{font-weight:700}
.assess-result-card{padding:24px}.assess-result-card .assess-result{margin-top:0}
.assess-overall{display:grid;gap:14px;padding:18px;border-radius:16px;background:linear-gradient(160deg,#f3faf8,#fff 70%);border:1px solid #d7eeea}
.assess-overall-body{display:flex;flex-wrap:wrap;gap:18px;align-items:center}.assess-result-id{display:flex;align-items:center;gap:14px}.assess-result-idtext{min-width:0}.assess-result-cat{margin:0;font-size:.8rem;font-weight:700;color:var(--brand-dark)}.assess-result-name{margin:2px 0;font-size:clamp(1.3rem,3vw,1.7rem);line-height:1.3}.assess-result-name:focus{outline:none}.assess-result-idtext .meta{margin:0}
.assess-headline .assess-band{font-size:1rem;padding:6px 14px}.assess-gauge{width:min(260px,100%)}.assess-gauge-range{stroke-opacity:.26}.assess-gauge-marker{fill:#fff;stroke:var(--ink);stroke-width:3}.assess-gauge-tick{font-size:10px;fill:var(--muted)}
.assess-stroke-good{stroke:var(--band-good)}.assess-stroke-fair{stroke:var(--band-fair)}.assess-stroke-attention{stroke:var(--band-attention)}.assess-stroke-alert{stroke:var(--band-alert)}.assess-stroke-neutral{stroke:var(--band-neutral)}
.assess-scale{list-style:none;margin:10px 0 0;padding:0;display:grid;gap:4px;font-size:.86rem}.assess-scale-item{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:4px 8px;border-radius:8px}.assess-scale-item.current{background:#fff;box-shadow:inset 0 0 0 1.5px var(--ink);font-weight:700}.assess-scale-range{min-width:52px;font-variant-numeric:tabular-nums}.assess-scale-label{flex:1 1 140px;min-width:0}.assess-scale-you{padding:1px 8px;border-radius:999px;background:var(--ink);color:#fff;font-size:.74rem}
.assess-result .assess-section>h2{font-size:1.15rem;margin:0 0 10px}.assess-charts{display:grid;gap:4px}.assess-chart{margin:0}
.assess-radar{display:block;width:100%;max-width:440px;height:auto;margin:0 auto}.assess-radar-ring{fill:none;stroke:#d9e2ec}.assess-radar-axis{stroke:#e4e9f0}.assess-radar-area{fill:rgba(61,90,128,.2);stroke:var(--band-neutral);stroke-width:2.5;stroke-linejoin:round}.assess-radar-dot{fill:var(--band-neutral);stroke:#fff;stroke-width:1.5}.assess-radar-dot.top{fill:var(--brand-dark)}
.assess-radar-label{font-size:12.5px;fill:var(--ink)}.assess-radar-label.top{font-weight:700}.assess-radar-letter{font-size:18px;font-weight:800;fill:var(--muted)}.assess-radar-letter.top{fill:var(--brand-dark)}.assess-radar-val{font-size:11.5px;fill:var(--muted);font-weight:400}
.assess-typechart{display:block;width:100%;max-width:480px;height:auto;margin:0 auto}.assess-type-pole{font-size:11.5px;fill:var(--muted)}.assess-type-dot{fill:#fff;stroke:#9fb3c8;stroke-width:1.5}.assess-type-dot.on{fill:var(--band-neutral);stroke:var(--band-neutral)}.assess-type-chartletter{font-size:14px;font-weight:800;fill:var(--muted)}.assess-type-chartletter.on{fill:#fff}.assess-type-fill{fill:var(--band-neutral);fill-opacity:.85}.assess-type-mid{stroke:var(--ink);stroke-opacity:.45;stroke-width:1.5}.assess-type-marker{fill:#fff;stroke:var(--band-neutral);stroke-width:3}
.assess-spark{width:100%;max-width:440px}.assess-spark-grid{stroke:#e4e9f0}.assess-spark-axis{font-size:10px;fill:var(--muted)}.assess-spark-value{font-size:11px;fill:var(--ink)}.assess-spark-value.last{font-weight:800;fill:var(--brand-dark)}
.assess-ex-pending{display:flex;align-items:center;gap:10px;margin:0 0 8px;padding:8px 12px;border-radius:10px;background:#f0f7ff;color:#243b53;font-size:.9rem}.assess-dots{display:inline-flex;gap:4px}.assess-dots span{width:6px;height:6px;border-radius:50%;background:var(--brand);animation:assess-dot 1s infinite ease-in-out}.assess-dots span:nth-child(2){animation-delay:.15s}.assess-dots span:nth-child(3){animation-delay:.3s}@keyframes assess-dot{0%,80%,100%{opacity:.25}40%{opacity:1}}
.assess-result-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:16px}
@media(max-width:900px){.assess-hero{grid-template-columns:minmax(0,1fr) 140px;padding:20px}}
@media(max-width:560px){.assess-hero{grid-template-columns:1fr;padding:18px 16px;border-radius:16px}.assess-hero-art{display:none}.assess-chip{font-size:.86rem;padding-right:10px}
.assess-history-link{grid-template-columns:auto minmax(0,1fr) auto;row-gap:4px}.assess-history-result{grid-column:2/3;grid-row:2;text-align:left;max-width:none}.assess-history-go{grid-column:3;grid-row:1/3}
.assess-take-main{padding:14px 12px 40px}.assess-take-card{padding:16px}.assess-take-intro .assess-cat-icon{width:40px;height:40px}.assess-option label{padding:12px 12px;font-size:1rem}
.assess-result-card{padding:16px}.assess-overall{padding:14px}.assess-overall-body{justify-content:center}.assess-result-id .assess-cat-icon{width:44px;height:44px}.assess-result-actions .btn{flex:1 1 100%}.assess-dialog-actions .btn{flex:1 1 100%}}
.assess-result .assess-bar{max-width:560px}.assess-domain .assess-bar{margin:2px 0 4px}
/* Result chart picker and per-purpose charts */
.assess-chart-picker{display:flex;flex-wrap:wrap;gap:0;margin:2px 0 12px;border:1.5px solid var(--brand-dark);border-radius:12px;overflow:hidden;width:fit-content;max-width:100%}
.assess-chart-opt{min-height:44px;min-width:44px;padding:8px 14px;border:0;border-left:1.5px solid var(--brand-dark);background:#fff;color:var(--brand-dark);font:inherit;font-weight:700;cursor:pointer;flex:1 1 auto}
.assess-chart-opt:first-child{border-left:0}.assess-chart-opt[aria-pressed="true"]{background:var(--brand-dark);color:#fff}.assess-chart-opt:focus-visible{outline:3px solid var(--ink);outline-offset:-4px}
.assess-chart-group+.assess-chart-group{margin-top:18px;padding-top:14px;border-top:1px solid var(--line)}.assess-group-title{font-size:1rem;margin:0 0 6px}.assess-group-score{margin:0 0 8px}
.assess-barrows{list-style:none;margin:0;padding:0;display:grid;gap:14px}.assess-barrow-head{display:flex;justify-content:space-between;align-items:baseline;gap:10px}.assess-barrow-name{font-weight:700;min-width:0}.assess-barrow-val{font-weight:800;font-size:1.05rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.assess-zbar{display:block;width:100%;max-width:560px;height:24px;margin:4px 0}.assess-zone{fill-opacity:.3}.assess-zone-sep{stroke:#fff;stroke-width:2}.assess-zbar-mark{stroke:var(--ink);stroke-width:3}
.assess-barrow-foot{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.assess-zone-legend{list-style:none;margin:12px 0 0;padding:0;display:flex;flex-wrap:wrap;gap:6px 14px;font-size:.84rem}.assess-zone-legend li{display:flex;align-items:center;gap:6px}
.assess-step-0{fill-opacity:.14;stroke-opacity:.14}.assess-step-1{fill-opacity:.24;stroke-opacity:.24}.assess-step-2{fill-opacity:.36;stroke-opacity:.36}.assess-step-3{fill-opacity:.5;stroke-opacity:.5}.assess-step-4{fill-opacity:.64;stroke-opacity:.64}.assess-step-5{fill-opacity:.76;stroke-opacity:.76}.assess-step-6{fill-opacity:.88;stroke-opacity:.88}
.assess-gauge-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px}.assess-gauge-item{margin:0;text-align:center;padding:10px;border:1px solid var(--line);border-radius:12px;min-width:0}.assess-gauge-item figcaption{margin-bottom:4px}.assess-gauge-item .assess-gauge{width:100%;max-width:200px}.assess-gauge-item p{margin:4px 0 0}
.assess-gauge-one{display:flex;flex-wrap:wrap;gap:16px;align-items:center;margin:0}.assess-gauge-one .assess-scale{flex:1 1 220px;margin:0}
.assess-trend-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.assess-trend-item{margin:0;min-width:0}.assess-trend-item figcaption{margin-bottom:4px}
.assess-purpose-list{list-style:none;margin:8px 0;padding:0;display:grid;gap:6px}.assess-purpose-list li{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px}.assess-purpose-name{font-weight:700;flex:1 1 160px;min-width:0}.assess-purpose-score{font-weight:800;font-variant-numeric:tabular-nums}
.assess-score-line{margin:0 0 4px;font-size:1.05rem}.assess-score-line strong{font-size:2rem;line-height:1}.assess-row-group+.assess-row-group{margin-top:12px}
@media (max-width:480px){.assess-chart-picker{width:100%;flex-wrap:nowrap}.assess-chart-opt{padding:8px 6px;font-size:.88rem;flex:1 1 0;min-width:0}}
.manual-transfer{display:grid;gap:14px;max-width:820px}.manual-transfer h1{margin:0}.manual-transfer p{margin:0}
.transfer-layout{display:flex;flex-wrap:wrap;gap:20px;align-items:flex-start;min-width:0}
.transfer-qr{margin:0;flex:0 0 auto;width:min(240px,100%);display:grid;gap:6px}.transfer-qr svg{width:100%;height:auto;display:block;border:1px solid var(--line);border-radius:10px;background:#fff}.transfer-qr figcaption{font-size:.82rem;color:var(--muted)}
.transfer-details{flex:1 1 280px;display:grid;gap:8px;min-width:0}
.transfer-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px 10px;padding:8px 0;border-bottom:1px solid var(--line);min-width:0}.transfer-label{flex:0 0 150px;color:var(--muted);font-size:.9rem}.transfer-value{flex:1 1 140px;overflow-wrap:anywhere;font-variant-numeric:tabular-nums}.transfer-copy{min-height:36px;padding:6px 12px}.transfer-hint{display:block;color:var(--muted);font-size:.85rem;margin-top:2px}
.transfer-actions{display:flex;flex-wrap:wrap;gap:10px}
.transfer-qr-save{width:100%;min-height:44px}.transfer-qr-hint{font-size:.8rem}
.transfer-queue .list-item form{display:grid;gap:10px;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));align-items:end;margin-top:10px}
.transfer-forwarder{margin:12px 0 16px}.transfer-forwarder h3{margin:0 0 4px}.transfer-forwarder-facts{display:grid;grid-template-columns:minmax(0,max-content) minmax(0,1fr);gap:6px 14px;margin:10px 0}.transfer-forwarder-facts dt{font-weight:600}.transfer-forwarder-facts dd{margin:0;min-width:0;overflow-wrap:anywhere}.transfer-forwarder-sample{white-space:pre-wrap;overflow-wrap:anywhere;background:#fff;border:1px solid var(--line);border-radius:10px;padding:10px;font-size:.85rem}@media (max-width:640px){.transfer-forwarder-facts{grid-template-columns:minmax(0,1fr)}.transfer-forwarder-facts dd{margin-bottom:6px}}
@media(max-width:560px){.transfer-label{flex-basis:100%}}
/* Retention: Lộ trình của tôi, Tiến triển, Báo cáo tháng */
.path-activity{display:grid;gap:6px;min-width:0}.path-activity h3{margin:.2rem 0}.path-activity p{margin:0}.path-steps{margin:.2rem 0 .4rem;padding-left:1.3rem;display:grid;gap:4px}.path-progress{display:grid;gap:6px;margin:10px 0}.path-progress progress{width:100%;height:12px;accent-color:var(--brand)}.path-week{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:8px 0;background:#fff}.path-week summary{font-weight:700}.path-week .list{margin-top:10px}.list-item.path-current{border-color:var(--brand);box-shadow:0 0 0 2px var(--soft)}
.viz{margin:8px 0 0;min-width:0}.viz-chart{width:100%;height:auto;max-height:280px;display:block}.viz-grid{stroke:#e4e9f0;stroke-width:1}.viz-axis{font-size:11px;fill:var(--muted)}.viz-legend{list-style:none;display:flex;flex-wrap:wrap;gap:6px 14px;padding:0;margin:8px 0 0;font-size:.86rem;color:var(--ink)}.viz-legend li{display:flex;align-items:center;gap:6px}.viz-swatch{width:26px;height:10px;display:inline-block;flex:none}.viz-table{margin-top:8px}.viz-table summary{color:var(--brand-dark)}.viz-table .table{min-width:0}
.retention-change{margin-top:10px;padding:10px 12px;border-radius:12px;background:#f8fafc;border:1px solid var(--line);overflow-wrap:anywhere}.retention-change ul{margin:6px 0 0;padding-left:1.2rem}.retention-kpis{margin:10px 0}.monthly-open{font:inherit;color:inherit;width:100%}
@media (max-width:640px){.path-activity .row .btn{flex:1 1 100%}.viz-axis{font-size:13px}}
/* Top bar of the signed-in app (site-shell.js): brand on phones, Hỗ trợ khẩn cấp and the avatar account menu. */
.app-column{min-width:0;display:flex;flex-direction:column}.app-column>.main{margin:0 auto}
.app-topbar{position:sticky;top:0;z-index:40;display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:64px;padding:10px 28px;background:rgba(246,248,251,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.app-topbar-brand{font-weight:800;font-size:1.15rem;letter-spacing:-.02em;color:var(--ink);visibility:hidden}
.app-topbar-actions{display:flex;align-items:center;gap:12px;min-width:0}
.app-topbar-urgent{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:999px;border:1px solid #feb2b2;background:#fff5f5;color:var(--danger);font-weight:700;font-size:.9rem;text-decoration:none;white-space:nowrap}.app-topbar-urgent:hover{background:#fde8e8}
.avatar{display:inline-grid;place-items:center;flex:0 0 auto;border-radius:50%;overflow:hidden;color:#fff;font-weight:700;line-height:1;background:var(--brand)}.avatar img{width:100%;height:100%;object-fit:cover;display:block}
.avatar-sm{width:36px;height:36px;font-size:.9rem}.avatar-lg{width:48px;height:48px;font-size:1.1rem}
.account-menu{position:relative}
.avatar-button{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:3px 10px 3px 3px;border:1px solid var(--line);border-radius:999px;background:var(--surface);color:var(--ink)}.avatar-button:hover,.account-menu.open .avatar-button{border-color:var(--field-border);background:var(--soft)}
.avatar-chevron{width:8px;height:8px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;transform:rotate(45deg) translate(-2px,-2px);transition:transform .15s}.account-menu.open .avatar-chevron{transform:rotate(225deg) translate(-2px,-2px)}
.account-menu-panel{position:absolute;right:0;top:calc(100% + 8px);z-index:70;width:min(300px,calc(100vw - 32px));display:grid;gap:2px;padding:8px;background:var(--surface);border:1px solid var(--line);border-radius:14px;box-shadow:0 18px 40px rgba(16,42,67,.16)}
.account-menu-head{display:flex;align-items:center;gap:12px;padding:8px 10px 12px;margin-bottom:4px;border-bottom:1px solid var(--line);min-width:0}.account-menu-who{display:grid;min-width:0}.account-menu-who strong{overflow-wrap:anywhere}.account-menu-who span{color:var(--muted);font-size:.86rem;overflow-wrap:anywhere}
.account-menu-items{display:grid;gap:2px}
.account-menu-item{display:flex;align-items:center;width:100%;min-height:44px;padding:10px 12px;border:0;border-radius:10px;background:none;color:var(--ink);text-align:left;font-weight:600}.account-menu-item:hover,.account-menu-item:focus-visible{background:var(--soft)}.account-menu-item:focus-visible{outline:3px solid var(--brand-dark);outline-offset:-3px}
.account-menu-item.active{color:var(--nav-active);box-shadow:inset 3px 0 0 var(--nav-active);background:#fff4ed}
.account-menu-sep{height:1px;margin:4px 0;background:var(--line)}.account-menu-logout{color:var(--danger)}
/* Global footer (every page): brand line, link columns, copyright. */
.site-footer{margin-top:32px;padding:40px 28px 24px;background:var(--surface);border-top:1px solid var(--line);color:var(--ink)}
.site-footer-inner{max-width:1450px;margin:0 auto;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,3fr);gap:32px}
.site-footer-name{font-weight:800;font-size:1.2rem;letter-spacing:-.02em}.site-footer-brand p{margin:4px 0 0}.site-footer-brand .site-footer-note{margin-top:12px;font-size:.88rem;color:var(--muted);max-width:42ch}
.site-footer-cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:24px}
.site-footer-col h2{margin:0 0 8px;font-size:.78rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.site-footer-col ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.site-footer-col a{display:inline-flex;align-items:center;min-height:36px;color:var(--ink);text-decoration:none;border-radius:6px;overflow-wrap:anywhere}.site-footer-col a:hover{color:var(--brand-dark);text-decoration:underline}
.site-footer-col a.footer-urgent{color:var(--danger);font-weight:700}
.site-footer-bottom{max-width:1450px;margin:28px auto 0;padding-top:16px;border-top:1px solid var(--line);display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;font-size:.85rem;color:var(--muted)}.site-footer-bottom p{margin:0}
/* Bảo mật: latest sign-in per device kind, full history collapsed. */
.sign-in-list{grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));margin-top:14px}.sign-in-row .btn{margin-top:10px}.sign-in-head{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.security-history{margin-top:16px;border-top:1px solid var(--line);padding-top:8px}.security-history>summary{display:flex;align-items:center;gap:8px;font-weight:700;color:var(--brand-dark)}.security-history h3{margin:16px 0 4px;font-size:1rem}
@media(max-width:1100px){.site-footer-cols{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.app-topbar{padding:8px 16px;min-height:60px}.app-topbar-brand{visibility:visible}.app-shell .main{padding-bottom:24px}.site-footer{padding:28px 16px 20px}.site-footer.in-app{padding-bottom:calc(96px + env(safe-area-inset-bottom))}.site-footer-inner{grid-template-columns:minmax(0,1fr);gap:24px}}
@media(max-width:560px){.site-footer-cols{grid-template-columns:minmax(0,1fr);gap:18px}.app-topbar-actions{gap:8px}.app-topbar-urgent{padding:0 10px;font-size:.82rem}}
/* Navigation states (Khue 2026-10-08): the page you are on is dark orange; the item under the pointer or keyboard focus gets the underline bar. */
.nav button:hover:not(.active),.nav button:focus-visible:not(.active),.nav-group-toggle:hover:not(.has-active){background:transparent;color:#fff;box-shadow:inset 0 -3px 0 #7fd6c6}
.nav button.active,.nav-group-toggle.has-active{background:var(--nav-active);color:#fff;font-weight:700;box-shadow:none}
.nav button.active:hover,.nav-group-toggle.has-active:hover{box-shadow:inset 0 -3px 0 #ffd2b8}
.nav-group.open>.nav-group-toggle:not(.has-active){background:#1d4b70}
.account-menu-item:hover:not(.active){box-shadow:inset 0 -3px 0 var(--brand)}
.mobile-nav .mobile-more:hover,.mobile-nav .mobile-more:focus-visible{box-shadow:inset 0 -3px 0 var(--brand)}
.assess-resume{margin:0 0 20px;padding:18px 20px;border:1px solid #f5c9a8;border-radius:18px;background:#fff8f2}.assess-resume h2{margin:0 0 4px;font-size:1.1rem}.assess-resume-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}.assess-resume-item{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:#fff}.assess-resume-text{flex:1 1 220px;min-width:0;display:grid;gap:4px;overflow-wrap:anywhere}
@media print{.app-topbar,.site-footer{display:none!important}}
.pay-method-dialog{border:0;border-radius:18px;padding:22px;width:min(460px,calc(100vw - 32px));box-shadow:0 24px 60px rgba(16,42,67,.3);color:var(--ink)}.pay-method-dialog::backdrop{background:rgba(16,42,67,.45)}.pay-method-dialog h2{margin:0 0 12px;font-size:1.2rem}.pay-method-list{display:grid;gap:10px;margin-bottom:12px}.pay-method-choice{display:grid;gap:4px;text-align:left;width:100%;padding:14px}.pay-method-choice .meta{font-weight:400}.pay-method-choice:hover{border-color:var(--brand);background:var(--soft)}.pay-method-form .row{justify-content:flex-end}
.plan-status:empty{display:none}.plan-status{margin-top:10px}.plan-deep{margin:8px 0 12px;font-size:.88rem;padding:10px 12px;border-radius:12px;background:var(--soft)}.plan-unavailable{margin-bottom:14px}.plan-admin-config{margin-top:10px;padding-top:10px;border-top:1px solid #f0d58c}.plan-admin-config ul{margin:6px 0 0;padding-left:20px}.plan-admin-config code{overflow-wrap:anywhere}
.assess-card-deep{margin:4px 0 8px}.assess-related{margin-top:16px}.assess-related h2{margin-bottom:4px}.assess-related-list{list-style:none;margin:12px 0 0;padding:0;display:grid;gap:10px}.assess-related-item{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border:1px solid var(--line);border-radius:14px}.assess-related-item>div{flex:1 1 240px;min-width:0}.assess-related-item p{margin:4px 0 0}
/* Chăm sóc bản thân: lock on paid menu entries; Tìm bác sĩ tâm lý; Nhật ký (mood words, tag chips, mood bars). */
.nav-lock{margin-left:6px;font-size:.8em;opacity:.85}
.care-match-steps{list-style:none;padding:0;margin:14px 0;display:grid;gap:10px}.care-match-step{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:#fff}.care-match-step>div{flex:1 1 240px;min-width:0}.care-match-step.done{background:#f3faf8}
.mood-picker,.tag-picker{border:0;padding:0;margin:0 0 12px;min-width:0}.mood-picker legend,.tag-picker legend{font-weight:600;margin-bottom:6px;padding:0}
.mood-choices,.tag-chips{display:flex;flex-wrap:wrap;gap:8px}
.mood-choice,.tag-chip{display:inline-flex;align-items:center;gap:6px;min-height:44px;padding:6px 12px;border:1px solid var(--line);border-radius:999px;background:#fff;cursor:pointer}
.mood-choice input,.tag-chip input{appearance:none;-webkit-appearance:none;width:0;height:0;margin:0;padding:0;border:0;opacity:0}
.mood-choice:has(input:checked),.tag-chip:has(input:checked){border-color:var(--brand);background:#e6f2f0;font-weight:600}
.mood-choice:has(input:focus-visible),.tag-chip:has(input:focus-visible){outline:3px solid var(--brand);outline-offset:2px}
.mood-emoji{font-size:1.25rem;line-height:1}.tag-chip.legacy{border-style:dashed}
.journal-tags{display:flex;flex-wrap:wrap;gap:6px;margin:4px 0}
.journal-mood-chart{margin:0 0 14px}.journal-mood-chart h3{font-size:.95rem;margin:0 0 8px}
.mood-bars{list-style:none;margin:0;padding:0;display:flex;align-items:flex-end;gap:6px;overflow-x:auto}
.mood-bar{flex:1 0 28px;max-width:44px;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;gap:2px;font-size:.7rem;color:var(--muted)}
.mood-bar-fill{display:block;width:100%;max-height:80px;border-radius:6px 6px 0 0;background:var(--brand);opacity:.8}
.mood-bar.mood-1 .mood-bar-fill{min-height:16px;height:16px}.mood-bar.mood-2 .mood-bar-fill{min-height:32px;height:32px}.mood-bar.mood-3 .mood-bar-fill{height:48px;background:#a0aec0}.mood-bar.mood-4 .mood-bar-fill{height:64px}.mood-bar.mood-5 .mood-bar-fill{height:80px}
.mood-bar.mood-1 .mood-bar-fill,.mood-bar.mood-2 .mood-bar-fill{background:#c2410c}
.mood-bar-emoji{font-size:1rem}.mood-legend{margin-top:6px}
.marketplace-health ul{padding-left:20px}
/* Platform admin console (/quan-tri, admin-console.js): a separate page with its own sign-in. */
/* clip, not hidden: body overflow-x:hidden makes the body a scroll container, so the sticky sidebar scrolled away with long pages. */
body.console-body{overflow-x:clip}
.console-modal{position:fixed;inset:0;background:rgba(16,42,67,.55);display:grid;place-items:center;padding:16px;z-index:1000}.console-modal .card{width:min(380px,100%)}
.setting-row{box-shadow:none;border-style:dashed}.setting-row .row>label.pill{gap:6px;align-items:center;font-size:.88rem;padding:6px 10px}.report-kpi .kpi{font-size:1.5rem}
/* Console layout (admin-console.js): a header bar (menu button on phones, bell slot, avatar menu), a compact
   grouped sidebar on desktop that becomes a drawer on phones, and compact pages. */
.console-shell{min-height:100vh;--console-head:52px}
.console-header{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:10px;height:var(--console-head);padding:0 16px;background:#1a1f36;color:#fff}
.console-brand{color:#fff;text-decoration:none;font-weight:800;font-size:1rem;letter-spacing:-.01em;display:flex;align-items:baseline;gap:8px;white-space:nowrap;min-width:0}.console-brand small{font-weight:500;font-size:.78rem;color:#a9b4c8}
.console-header-right{margin-left:auto;display:flex;align-items:center;gap:8px}#header-bell:empty{display:none}
.console-burger{display:none;flex-direction:column;justify-content:center;gap:4px;width:40px;height:40px;padding:0 10px;border:0;border-radius:8px;background:transparent}.console-burger span{display:block;height:2px;background:#fff;border-radius:2px}.console-burger:hover,.console-burger[aria-expanded="true"]{background:rgba(255,255,255,.12)}
.console-user{position:relative}.console-avatar{width:36px;height:36px;border-radius:50%;border:2px solid rgba(255,255,255,.35);background:#2f6f8f;color:#fff;font-weight:700;font-size:.82rem;display:grid;place-items:center;padding:0}.console-avatar:hover,.console-avatar[aria-expanded="true"]{border-color:#fff}
.console-user-menu{position:absolute;right:0;top:calc(100% + 8px);width:min(280px,calc(100vw - 16px));background:var(--surface);color:var(--ink);border:1px solid var(--line);border-radius:12px;box-shadow:0 12px 32px rgba(16,42,67,.2);padding:12px;display:grid;gap:6px;z-index:60}
.console-user-name{font-weight:700;overflow-wrap:anywhere}.console-user-email,.console-user-idle{font-size:.82rem;color:var(--muted);overflow-wrap:anywhere}.console-user-menu .btn{width:100%;margin-top:4px}.console-badge{background:#1a1f36;color:#fff}
.console-login .brand{margin-bottom:12px;font-weight:800;font-size:1.2rem}.console-login .brand small{display:block;font-weight:600;font-size:.85rem}
.console-frame{display:grid;grid-template-columns:216px minmax(0,1fr);align-items:start}
.console-shell .console-sidebar{position:sticky;top:var(--console-head);height:calc(100vh - var(--console-head));padding:10px 8px 16px;background:#1a1f36;overflow-y:auto;display:block;color:#fff}
.console-drawer-head{display:none}
.console-shell .nav{display:flex;flex-direction:column;gap:1px;padding:0}.console-shell .nav-section{display:flex;flex-direction:column;margin-bottom:8px}
.console-shell .nav-section-label{font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;color:#8d9ab3;padding:6px 10px 2px}
.console-shell .nav button{min-height:34px;padding:6px 10px;font-size:.88rem;border-radius:8px;color:#d9e2ec;line-height:1.3}
.console-shell .nav button:hover:not(.active),.console-shell .nav button:focus-visible:not(.active){background:transparent;box-shadow:inset 0 -2px 0 #7fd6c6;color:#fff}
.console-shell .nav button.active,.console-shell .nav button.active:hover{background:var(--nav-active);color:#fff;font-weight:700;box-shadow:none}
.console-backdrop{display:none}
.console-shell .main{padding:16px 20px 32px;max-width:1280px;margin:0;width:100%}
.console-page-head{margin:0 0 12px}.console-page-head h1{font-size:1.3rem;margin:0;line-height:1.3}.console-page-head p{margin:2px 0 0;font-size:.88rem}
.console-shell .grid{gap:12px}.console-shell .card{padding:14px 16px;border-radius:12px;box-shadow:none}
.console-shell h2{font-size:1.02rem;margin:0 0 8px}.console-shell .card p.muted,.console-shell p.muted{font-size:.88rem}.console-shell h3{font-size:.95rem;margin:10px 0 6px}.console-shell .kpi{font-size:1.5rem}.console-shell p{margin:6px 0}
.console-shell .btn{min-height:38px;padding:7px 12px;border-radius:9px;font-size:.9rem}.console-shell .form{gap:10px}
.console-shell .field input,.console-shell .field select,.console-shell .field textarea{padding:8px 10px}
.console-shell .table td,.console-shell .table th{padding:7px 8px;font-size:.88rem}.console-shell .list-item{padding:10px 12px}
@media(max-width:900px){
.console-burger{display:flex}.console-frame{display:block}
.console-shell .console-sidebar{position:fixed;top:0;left:0;bottom:0;height:auto;width:min(300px,86vw);z-index:70;transform:translateX(-105%);visibility:hidden;transition:transform .2s ease,visibility .2s;box-shadow:0 0 40px rgba(0,0,0,.3);padding:0 8px 24px}
.console-shell.drawer-open .console-sidebar{transform:none;visibility:visible}
.console-drawer-head{display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;background:#1a1f36;padding:10px 4px 8px 10px;font-weight:800;z-index:1}
.console-drawer-close{width:40px;height:40px;border:0;border-radius:8px;background:transparent;color:#fff;font-size:1.5rem;line-height:1}.console-drawer-close:hover{background:rgba(255,255,255,.12)}
.console-shell .nav button{min-height:44px;font-size:.95rem}
.console-backdrop{display:block;position:fixed;inset:0;z-index:65;background:rgba(10,20,35,.45)}
.console-shell .main{padding:12px 12px 28px}
.console-shell .table{display:block;overflow-x:auto;min-width:0;max-width:100%}
.console-shell .row{flex-direction:row;flex-wrap:wrap;align-items:center}.console-shell .row>*{width:auto;max-width:100%}.console-shell .row>.field{flex:1 1 100%}
.console-shell .grid>.span-3{grid-column:span 6}.console-shell .report-kpi .kpi{font-size:1.2rem}}
@media(max-width:560px){.console-brand small{display:none}.console-header{padding:0 8px 0 4px;gap:6px}.console-page-head h1{font-size:1.15rem}}
@media(prefers-reduced-motion:reduce){.console-shell .console-sidebar{transition:none}}
/* Tổng quan (admin-attention.js): what waits on an administrator. */
.attention-list{list-style:none;margin:0;padding:0;display:grid;gap:6px}
.attention-item{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:10px 12px;border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--ink);font:inherit}button.attention-item:hover{border-color:var(--brand)}
.attention-count{flex:none;min-width:40px;height:32px;padding:0 8px;border-radius:8px;display:grid;place-items:center;font-weight:800;font-size:1.05rem;background:#fff3cd;color:#6b4f00}.attention-count.danger{background:#fde8e8;color:#8a1c1c}.attention-count.info{background:#e6f0fa;color:#1d4e89}
.attention-text{flex:1 1 auto;min-width:0;display:grid;gap:1px;overflow-wrap:anywhere}.attention-text .muted{font-size:.84rem}.attention-go{flex:none;font-size:1.3rem;color:var(--muted)}
/* Khách hàng chưa thể thanh toán (admin-attention.js paymentAttentionItems) and Kiểm tra thanh toán. */
.attention-item.attention-critical{border:2px solid #b42318;background:#fff5f5}.attention-lines{display:grid;gap:3px;margin-top:4px;font-size:.86rem;color:#7a1a12}.attention-lines span::before{content:"• "}
.payment-check{margin:0 0 14px}.payment-check h3{margin:0 0 4px}.payment-check-lines{margin:0;padding-left:18px;display:grid;gap:3px}.payment-check-lines code{overflow-wrap:anywhere}.payment-check-rails{list-style:none;margin:10px 0;padding:0;display:grid;gap:8px}.payment-check-rail{border:1px solid var(--line);border-radius:10px;padding:10px 12px;overflow-wrap:anywhere}.payment-check-head{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center;margin-bottom:4px}
.attention-clear,.attention-none,.attention-failed{margin:10px 0 0;font-size:.88rem}.attention-clear summary{cursor:pointer;color:var(--muted)}.attention-clear p{font-size:.84rem}.attention-run{margin-bottom:10px;display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}
/* Xưởng nội dung (admin-content.js): run progress, tabs and the paged list. */
.content-run{margin-top:10px;border:1px solid var(--line);border-radius:10px;padding:10px 12px;background:#f8fafc}.content-run.active{border-color:#9fd3c9;background:var(--soft)}
.content-run-head{display:flex;flex-wrap:wrap;gap:2px 12px;align-items:baseline;justify-content:space-between}.content-run-head .muted{font-size:.86rem}
.content-run-bar{display:block;width:100%;height:10px;margin:8px 0 4px;-webkit-appearance:none;appearance:none;border:0;border-radius:6px;background:#dde7ee;overflow:hidden}
.content-run-bar::-webkit-progress-bar{background:#dde7ee;border-radius:6px}.content-run-bar::-webkit-progress-value{background:var(--brand);border-radius:6px}.content-run-bar::-moz-progress-bar{background:var(--brand);border-radius:6px}
.content-run-note{font-size:.84rem}
.content-run-rows{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:4px;grid-template-columns:repeat(auto-fill,minmax(260px,1fr))}
.run-row{display:flex;align-items:flex-start;gap:8px;padding:6px 8px;border-radius:8px;background:#fff;border:1px solid var(--line);font-size:.88rem}
.run-state{flex:none;min-width:96px;font-weight:700;font-size:.78rem;padding:2px 6px;border-radius:6px;background:#edf2f7;color:#486581;text-align:center}
.run-running .run-state{background:#d7efe9;color:#0b534b}.run-published .run-state{background:#e5f5f2;color:#0b534b}.run-error .run-state{background:#fde8e8;color:#8a1c1c}
.run-running .run-state:before{content:'';display:inline-block;width:7px;height:7px;border-radius:50%;background:currentColor;margin-right:5px;vertical-align:middle;animation:run-pulse 1s infinite alternate}
@keyframes run-pulse{from{opacity:.2}to{opacity:1}}
.run-label{flex:1 1 auto;min-width:0}.run-label small{display:block;color:var(--danger);font-size:.8rem;overflow-wrap:anywhere}.run-skipped .run-label small{color:var(--muted)}
.run-time{flex:none;font-variant-numeric:tabular-nums;font-size:.8rem}.content-run-close{margin-top:8px}
.content-list-head{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center;margin-bottom:6px}.content-list-head h2{margin:0}
.content-status-filter{display:flex;align-items:center;gap:6px;font-size:.88rem;font-weight:600;white-space:nowrap}.content-status-filter select{padding:6px 8px;border:1px solid var(--field-border);border-radius:8px;background:#fff;min-height:36px}
.content-tabs{margin-bottom:6px}.console-shell .content-tabs .article-tab{min-height:36px;padding:5px 12px;font-size:.88rem}
.content-tab-count{display:inline-block;min-width:20px;margin-left:4px;padding:0 6px;border-radius:999px;background:rgba(16,42,67,.08);font-size:.75rem;text-align:center}.article-tab.active .content-tab-count{background:rgba(255,255,255,.25)}
.content-rows{list-style:none;margin:0;padding:0}
.content-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px 12px;align-items:center;padding:8px 0;border-bottom:1px solid var(--line)}
.content-row-title{display:block;overflow-wrap:anywhere;line-height:1.35}.content-row .meta{font-size:.8rem;color:var(--muted);margin-top:2px}.content-row .pill{padding:1px 7px;font-size:.74rem}
.content-row-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.console-shell .content-row-actions .btn{min-height:32px;padding:4px 10px;font-size:.84rem}
.content-edit-row{grid-column:1/-1;padding:8px 0}.content-create>summary{cursor:pointer}.content-create>summary h2{display:inline;margin:0}.content-create[open]>summary{margin-bottom:10px}
@media(max-width:560px){.content-row{grid-template-columns:minmax(0,1fr)}.content-row-actions{justify-content:flex-start}.run-state{min-width:86px}.content-run-rows{grid-template-columns:minmax(0,1fr)}}
.mfa-qr{width:220px;max-width:100%;margin:12px 0;padding:8px;background:#fff;border-radius:8px}.mfa-qr svg{display:block;width:100%;height:auto}
.req-mark{color:var(--danger);font-weight:700;margin-left:2px}.req-note{margin:0 0 8px;font-size:.85rem}.field-missing,input.field-missing,select.field-missing,textarea.field-missing{border:2px solid var(--danger)!important;background:#fff5f5}.label-missing{color:var(--danger)}

/* Kiến thức library (library-ui.js): search, type and category filters at the top. */
.library-filters{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}.library-filters>*{min-width:0}.library-topics{flex-wrap:wrap;overflow:visible}.library-search{display:flex;gap:8px;flex-wrap:wrap}.library-search input{flex:1 1 240px;min-width:0;padding:11px 12px;border:1px solid var(--field-border);border-radius:10px;background:#fff;color:var(--ink);font:inherit}
.library-types{display:flex;gap:6px;flex-wrap:wrap}.library-type{border:1px solid var(--line);background:#fff;color:var(--ink);border-radius:10px;padding:8px 12px;min-height:40px;font-weight:600}.library-type.active{background:var(--ink);border-color:var(--ink);color:#fff}
.library-count{display:inline-block;min-width:1.4em;padding:0 6px;margin-left:4px;border-radius:999px;background:rgba(16,42,67,.08);font-size:.78rem;font-weight:700;text-align:center}.active>.library-count{background:rgba(255,255,255,.22)}
.library-topics .article-tab[data-empty]{opacity:.55}.library-status{font-weight:600}.library-pills{display:flex;gap:6px;flex-wrap:wrap}.library-kind{background:#fff3e0;color:#7a3e00}.library-lesson .library-kind{background:#e5f5f2;color:#0b534b}
.library-refs ul{padding-left:1.2rem;margin:6px 0}.library-learn{margin-top:16px}
@media(max-width:560px){.library-topics{flex-wrap:nowrap;overflow-x:auto}.library-search .btn{flex:1 1 auto}.library-types{display:grid;grid-template-columns:1fr 1fr}}
/* Topic tabs of Kiến thức and Học tập: wrapped tabs on wide screens, one horizontally scrollable chip row on phones. */
.library-searchbar{padding:14px 16px}.library-tabbar,.lp-tabbar{display:grid;gap:10px;min-width:0}.library-tabbar>*,.lp-tabbar>*{min-width:0}
.scroll-tabs{flex-wrap:wrap;overflow:visible;padding-bottom:2px}.scroll-tabs .article-tab{min-height:40px}.scroll-tabs .article-tab[data-empty]{opacity:.55}
.library-types .library-type{min-height:36px;padding:6px 10px;font-size:.88rem}.library-view .article-view{margin-top:0}
.lp-panel{align-items:stretch}.lp-panel-status{font-weight:600}.lp-upgrade .btn{margin-left:6px}
.lp-card{display:flex;flex-direction:column;gap:6px}.lp-card h3{margin:2px 0 0;font-size:1.02rem;line-height:1.35}.lp-card p{margin:0}.lp-card .lp-step-actions{margin-top:auto;padding-top:8px}
.lp-card-pills{display:flex;gap:6px;flex-wrap:wrap}.lp-card-state{font-weight:700}.lp-card.lp-available,.lp-card.lp-started{border-color:var(--brand);box-shadow:0 0 0 2px var(--soft)}.lp-card.lp-locked,.lp-card.lp-plan_locked,.lp-card.lp-term_locked{background:#f8fafc}.lp-card.lp-locked h3,.lp-card.lp-plan_locked h3{color:var(--muted)}
.lp-pager:empty,.library-pager:empty{display:none}
@media(max-width:1100px) and (min-width:901px){.lp-card.span-4,.library-card.span-4{grid-column:span 6}}
@media(max-width:560px){.scroll-tabs{flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x proximity;margin:0 -16px;padding:0 16px 6px;scroll-padding-inline:16px}.scroll-tabs .article-tab{scroll-snap-align:start}
  .library-tabbar .library-types{display:flex;flex-wrap:nowrap;overflow-x:auto;overscroll-behavior-x:contain;margin:0 -16px;padding:0 16px 4px}.library-tabbar .library-type{flex:0 0 auto;white-space:nowrap}
  .main:has(#knowledge-library),.main:has(#learning-root){padding-left:16px;padding-right:16px}.lp-upgrade .btn{margin:8px 0 0;width:100%}}
/* Học tập (learning-path-ui.js): levels, a numbered stepper, practices and sharing. */
.lp-hero{display:grid;gap:12px}.lp-hero h2{margin:.4rem 0 .2rem}.lp-hero p{margin:0}.lp-hero-top{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:flex-start}.lp-overall{text-align:right}.lp-overall .kpi{line-height:1;color:var(--brand-dark)}
.lp-meter{height:10px;border-radius:999px;background:#e4e9f0;overflow:hidden}.lp-meter span{display:block;height:100%;background:var(--brand);border-radius:inherit}
.lp-about summary,.lp-level summary{cursor:pointer;min-height:44px}.lp-about p{margin:.5rem 0}
.lp-level summary{list-style:none;display:grid;gap:6px}.lp-level summary::-webkit-details-marker{display:none}.lp-level-head{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.lp-level-head h2{margin:0}.lp-level-no{font-weight:800;color:var(--brand-dark);text-transform:uppercase;font-size:.8rem;letter-spacing:.06em}
.lp-level summary p{margin:0}.lp-level-progress{display:grid;grid-template-columns:auto 1fr;gap:10px;align-items:center;font-size:.86rem;font-weight:700}.lp-level-done .lp-level-no::after{content:" ✓"}
.lp-steps{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:0}.lp-step{display:grid;grid-template-columns:40px minmax(0,1fr);gap:12px;position:relative;padding-bottom:16px}.lp-step:not(:last-child)::before{content:"";position:absolute;left:19px;top:40px;bottom:0;width:2px;background:var(--line)}
.lp-dot{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-weight:800;border:2px solid var(--line);background:#fff;color:var(--muted)}
.lp-completed .lp-dot{background:var(--brand);border-color:var(--brand);color:#fff}.lp-available .lp-dot,.lp-started .lp-dot{border-color:var(--brand);color:var(--brand-dark);box-shadow:0 0 0 4px var(--soft)}.lp-locked .lp-dot,.lp-plan_locked .lp-dot{font-size:.9rem}
.lp-step-body{border:1px solid var(--line);border-radius:12px;padding:12px 14px;background:#fff;min-width:0}.lp-available .lp-step-body,.lp-started .lp-step-body{border-color:var(--brand);box-shadow:0 0 0 2px var(--soft)}.lp-locked .lp-step-body,.lp-plan_locked .lp-step-body{background:#f8fafc}
.lp-locked h3,.lp-plan_locked h3,.lp-locked p,.lp-plan_locked p{color:var(--muted)}
.lp-step-head{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:baseline}.lp-step-head h3{margin:0;font-size:1rem}.lp-state{font-size:.8rem;font-weight:700;color:var(--muted)}.lp-completed .lp-state{color:var(--brand-dark)}
.lp-step-body p{margin:.35rem 0}.lp-tags{display:flex;gap:4px 12px;flex-wrap:wrap}.lp-extra{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.lp-step-actions{margin-top:8px}
.lp-practices{list-style:none;padding:0;margin:0 0 12px;display:grid;gap:10px}.lp-practice-head{display:flex;justify-content:space-between;gap:8px;flex-wrap:wrap;align-items:center}.lp-practices .row{margin-top:8px}.lp-share-list{list-style:none;padding:0;margin:0;display:grid;gap:10px}.lp-share-list .list-item{display:grid;gap:8px}
.lp-lesson .lp-lesson-meta{margin-top:12px}.lp-sources{margin-top:20px;padding:14px;border-radius:12px;background:#f8fafc;border:1px solid var(--line)}.lp-sources h3{margin:0 0 6px;font-size:1rem}.lp-sources ul{margin:0;padding-left:1.2rem;display:grid;gap:4px}
.lp-practice-note{margin-top:16px}.lp-quiz{margin-top:20px;padding-top:16px;border-top:1px solid var(--line)}.lp-quiz h3{margin:0}.lp-question{border:1px solid var(--line);border-radius:12px;padding:12px 14px;margin:0;min-width:0}.lp-question legend{font-weight:700;padding:0 4px}
.lp-option{display:flex;gap:10px;align-items:center;padding:8px 6px;min-height:44px;cursor:pointer;border-radius:8px}.lp-option:hover{background:var(--soft)}.lp-option input{width:20px;height:20px;accent-color:var(--brand);flex:none}
.lp-right{border-color:var(--brand);background:#f3fbf9}.lp-wrong{border-color:#f5c56b;background:#fffaf0}.lp-feedback:not(:empty){margin-top:6px}.lp-result:not(:empty){margin-top:14px}
@media(max-width:560px){.lp-overall{text-align:left}.lp-step{grid-template-columns:32px minmax(0,1fr);gap:8px}.lp-dot{width:32px;height:32px}.lp-step:not(:last-child)::before{left:15px;top:32px}}
.lp-toggle{font-size:.86rem;font-weight:700;color:var(--brand-dark)}.lp-level details[open] .lp-toggle-show,.lp-level details:not([open]) .lp-toggle-hide{display:none}
/* Role menus (workspace-nav.js): role switcher above the sidebar menu and in the mobile "Thêm" sheet; ?muc= hides the other parts of a page. */
.ws-switch{display:grid;gap:4px;margin:-12px 0 16px}.ws-switch label{font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;color:#9fb3c8}.ws-switch select{width:100%;min-height:44px;padding:8px 10px;border-radius:10px;border:1px solid #2c5282;background:#173f5f;color:#fff}.mobile-sheet .ws-switch{margin:0 0 10px;padding-bottom:10px;border-bottom:1px solid var(--line)}.mobile-sheet .ws-switch label{color:var(--muted)}.mobile-sheet .ws-switch select{background:#fff;color:var(--ink);border-color:var(--field-border)}.ws-hidden{display:none!important}label.check{display:flex;gap:8px;align-items:flex-start;font-weight:500}label.check input{margin-top:4px}
/* Kế hoạch luyện tập (practice-plan-ui.js) */
.pp-hero{display:grid;gap:10px}.pp-hero h2{margin:.3rem 0 0}.pp-hero p{margin:0}
.pp-item-head{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.pp-slot{font-size:.78rem;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.03em}
.pp-done{background:#f3fbf9;border-color:#b7e1d8}.pp-items{margin-top:12px}
.pp-kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(132px,1fr));gap:12px;margin:10px 0}.pp-kpis strong{font-size:1.25rem;display:block;white-space:nowrap}
.pp-reasons{padding-left:18px;margin:6px 0}.pp-reminder{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:8px}.pp-reminder input[type=time]{min-height:44px;padding:6px 10px;border:1px solid var(--field-border);border-radius:10px}
.pp-check-row{display:flex;gap:8px;align-items:center;min-height:44px}.pp-check-row input{width:20px;height:20px;accent-color:var(--brand)}
.pp-basis summary{cursor:pointer;font-size:.86rem;font-weight:700;color:var(--brand-dark);min-height:44px}
.pp-q,.pp-suds{border:1px solid var(--line);border-radius:12px;padding:10px 12px;margin:0;min-width:0}.pp-q legend,.pp-suds legend{font-weight:700;padding:0 4px}
.pp-scale{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:2px}
.pp-suds-scale{display:grid;grid-template-columns:repeat(11,minmax(0,1fr));gap:4px}.pp-suds-scale label{display:grid;justify-items:center;gap:2px;padding:6px 0;border-radius:8px;cursor:pointer;min-height:44px}.pp-suds-scale label:hover{background:var(--soft)}.pp-suds-scale input{width:20px;height:20px;accent-color:var(--brand)}
.pp-suds-ends{display:flex;justify-content:space-between;gap:8px}
.pp-timer{text-align:center;display:grid;gap:12px}.pp-clock{font-size:clamp(3rem,14vw,5.5rem);font-weight:800;font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--brand-dark);line-height:1.1}
.pp-timer .row{justify-content:center}
.pp-chart{width:100%;max-width:420px;height:auto;display:block;margin:6px 0}.pp-axis{font-size:11px;fill:var(--muted)}.pp-label{font-size:11px;font-weight:700;fill:var(--ink)}.pp-base{stroke:var(--line);stroke-width:1}.pp-grid{stroke:var(--line);stroke-dasharray:3 3}
.pp-bar rect:hover{opacity:.85}.pp-legend{list-style:none;display:flex;gap:14px;flex-wrap:wrap;padding:0;margin:6px 0;font-size:.86rem}.pp-swatch{display:inline-block;width:12px;height:12px;border-radius:3px;margin-right:6px;vertical-align:-1px}
.pp-table summary{cursor:pointer;font-size:.86rem;min-height:44px}.pp-table .table{min-width:0}
.pp-result{display:grid;gap:8px}.pp-pass{border-color:var(--brand)}.pp-saved{margin:8px 0}
@media(max-width:900px){.pp-today.span-7,.pp-term.span-5,.pp-effect.span-6,.pp-skills.span-6{grid-column:span 12}}
@media(max-width:560px){.pp-suds-scale{grid-template-columns:repeat(6,minmax(0,1fr))}.pp-timer .row{flex-direction:column}}
/* "Theo tháng" / "Theo năm" (plans-ui.js intervalToggleHtml): always one row. A two-column grid of its own,
   so no .row phone rule can stack it; the labels never wrap and shrink with the switch (container units),
   because Chrome on Android with large text zooms the page down to 200-280 CSS px. */
.plan-interval{display:block;margin:0 0 12px}.plan-interval>.meta{display:block;margin-top:8px}
.plan-interval-switch{container-type:inline-size;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);width:min(100%,420px);gap:0}
.plan-interval-switch>.btn.plan-interval-choice{width:100%;min-width:0;margin:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:10px 4px;line-height:1.2;font-size:.95rem;font-size:clamp(10px,calc((50cqi - 14px)/6.3),1rem);border-radius:0}
.plan-interval-switch>.btn.plan-interval-choice:first-child{border-radius:10px 0 0 10px}.plan-interval-switch>.btn.plan-interval-choice:last-child{border-radius:0 10px 10px 0;margin-left:-1px}
/* Provider tiers (docs/PROVIDER_TIERS.md): provider dashboard, care tier card, service price preview, pricing console page. */
.pd-role-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px}.pd-role{border:1px solid var(--line);border-radius:12px;padding:12px 14px}.pd-role h3{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:0 0 4px}
.pd-head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.pd-month{display:flex;align-items:center;gap:8px;white-space:nowrap}.pd-month input{min-height:44px}
.pd-tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px;margin:12px 0}.pd-tile{border:1px solid var(--line);border-radius:12px;padding:10px 12px;min-width:0}.pd-tile .kpi{font-size:1.25rem;overflow-wrap:anywhere}.pd-tile.warn{background:#fff8e1}.pd-tile.danger{background:#fdf1f1}.pd-tile.success{background:#eef8f6}
.pd-export .row{flex-wrap:wrap;align-items:flex-end}.pd-penalties{margin:12px 0}
.svc-price-details{min-width:0;max-width:100%}.svc-price-details .table-wrap{width:100%}.care-tier strong{display:block;margin-bottom:4px}.svc-price-preview{display:block;margin:8px 0}.svc-cancel-rules ul{margin:6px 0 0;padding-left:20px}
.apr-head{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}.apr-fields{display:grid;grid-template-columns:minmax(140px,220px) minmax(0,1fr) auto;gap:10px;align-items:end;border:0;padding:0;margin:8px 0 0}.apr-fields label{display:grid;gap:4px}.apr-unit{display:flex;align-items:center;gap:6px}.apr-unit input{min-width:0;flex:1}.apr-fields input,.apr-fields select,.apr-fields .btn{min-height:44px}
@media(max-width:560px){.apr-fields{grid-template-columns:1fr}.pd-tiles{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* Duyệt thanh toán (payment-approval.js) and the console menu count */
.nav-badge{display:inline-block;min-width:1.4em;padding:0 .4em;margin-left:6px;border-radius:999px;background:#ffb703;color:#102a43;font-size:.75rem;font-weight:800;line-height:1.5;text-align:center;vertical-align:middle}
.pa-panel h2{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:18px}.pa-head{display:flex;align-items:center;gap:10px;min-width:0}.pa-head h3{margin:0;flex:1 1 auto;min-width:0;overflow-wrap:anywhere}
.pa-check{flex:0 0 auto;white-space:nowrap;display:inline-flex;align-items:center;gap:6px;min-height:44px;cursor:pointer}.pa-check input{width:22px;height:22px;margin:0}
.pa-reason{margin:8px 0;padding:8px 10px;border-radius:8px;background:#fff4e5;border-left:4px solid #f0a020;color:#5c3b00}
.pa-pair-label{margin-top:8px;font-weight:700}.pa-pair{margin:4px 0 8px;padding:8px 10px;border:1px solid var(--line);border-radius:8px;background:#f6fbfa;display:grid;gap:3px;min-width:0;overflow-wrap:anywhere}
.pa-bulk{position:sticky;top:0;z-index:2;display:flex;flex-wrap:wrap;gap:10px;align-items:center;justify-content:space-between;padding:8px 10px;margin:10px 0;border:1px solid var(--line);border-radius:10px;background:#fff}
.pa-item .row{margin-top:8px;flex-wrap:wrap}.pa-highlight{border-color:var(--brand);box-shadow:0 0 0 2px var(--soft)}.pa-crosslink{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.pa-evidence summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.pa-invoices .btn{margin-top:4px}
@media(max-width:560px){.pa-bulk .btn{width:100%}.pa-item .row .btn{flex:1 1 100%}}
/* Kỹ năng mới tuần này (learning-path-ui.js weeklyHtml) and the automatic-content status (admin-format.js automationHtml). */
.lp-weekly-new{border-left:4px solid var(--brand)}.lp-weekly-head{display:flex;flex-wrap:wrap;gap:6px 10px;align-items:center}.lp-weekly h2{margin:.4rem 0 .2rem}
.content-automation{margin-top:8px;display:grid;grid-template-columns:minmax(0,1fr);gap:4px;min-width:0;max-width:100%}.content-automation>*{min-width:0;overflow-wrap:anywhere}.content-automation .auto-jobs summary{cursor:pointer;min-height:44px;display:flex;align-items:center}.content-automation .table{min-width:640px}.auto-error{color:#9a3412;overflow-wrap:anywhere}
