/* ==========================================================================
   CareHub Survey — design system
   Brand: CareHub green. primary #12914c · accent #f2a93c (warm) · bg #eef3ee
   Enterprise, flat, modern. Arial, smallest 13px. Tables full-bordered with
   a primary-coloured header. Sparing accent, minimal margins/padding.
   ========================================================================== */
:root{
  --primary:#12914c;        /* màu chủ đạo (CareHub green) */
  --primary-2:#0d7a3f;      /* hover/darker */
  --primary-3:#0a5c30;      /* darkest — headings */
  --primary-soft:#e7f5ec;   /* tint surface */
  --primary-line:#bfe3cd;   /* tinted border */
  --accent:#f2a93c;         /* màu nhấn (amber, pairs with green) */
  --accent-2:#e0942a;       /* accent hover */
  --accent-soft:#fdf2dd;    /* pale amber */
  --bg:#eef3ee;             /* nền */
  --surface:#ffffff;
  --surface-soft:#f4f9f5;
  --line:#dbe6dd;
  --line-strong:#c6d6c9;
  --text:#16261c;
  --muted:#5b6b60;
  --danger:#c0392b;
  --ok:#12914c;
  --warn:#b7791f;
  --radius:8px;
  --shadow:0 1px 2px rgba(10,60,33,.06);
  --shadow-soft:0 12px 30px rgba(10,60,33,.12);
  --font-sans:Arial,"Helvetica Neue",Helvetica,"Segoe UI",Roboto,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:13.5px;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
body *:not(.fa-solid):not(.fa-regular):not(.fa-brands),button,input,select,textarea,pre,code,kbd,samp{font-family:var(--font-sans)}
.fa-solid,.fa-regular,.fa-brands{font-family:"Font Awesome 6 Free"!important}
button,input,select,textarea{font:inherit;min-width:0}
button{border:1px solid var(--primary);background:var(--primary);color:#fff;padding:9px 14px;border-radius:var(--radius);cursor:pointer;font-weight:700;line-height:1.15;transition:background .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease}
button:not(:disabled):hover{background:#fff;border-color:var(--primary);color:var(--primary-3)}
button:focus-visible{outline:2px solid var(--accent);outline-offset:1px}
button.secondary{background:#fff;color:var(--primary);border-color:var(--line-strong)}
button.secondary:hover{background:#fff;border-color:var(--primary);color:var(--primary-3)}
button.accent{background:var(--accent);border-color:var(--accent);color:var(--primary-3)}
button.accent:hover{background:#fff;border-color:var(--accent);color:var(--primary-3)}
button.warn{background:var(--danger);border-color:var(--danger);color:#fff}
button.warn:hover{background:#fff;border-color:var(--danger);color:var(--danger)}
button:disabled{opacity:1;cursor:not-allowed;background:#eef0f5;border-color:#dde1ea;color:#9aa2b2;box-shadow:none}
a{color:var(--primary);font-weight:700;text-decoration:none}a:hover{text-decoration:underline}
pre{white-space:pre-wrap;background:var(--surface-soft);border:1px solid var(--line);border-radius:var(--radius);padding:10px;color:#22402f;max-width:100%;overflow-wrap:anywhere;word-break:break-word}
/* Nội dung OCR đọc được: chữ vừa phải, bẻ dòng token dài, cao tối đa có scroll — không tràn ra ngoài thẻ. */
/* Modal xếp chồng (overlay) — z trên app-modal(1000), dưới ui-dialog(1500). Dùng cho đối chiếu ảnh|text khi xem hồ sơ (web). */
.app-overlay-backdrop{position:fixed;inset:0;z-index:1400;background:rgba(11,24,38,.5);display:flex;align-items:center;justify-content:center;padding:24px}
.app-overlay-backdrop .app-overlay{width:min(1120px,calc(100vw - 48px));max-height:90vh;background:#fff;display:flex;flex-direction:column;border-radius:12px;overflow:hidden;box-shadow:0 24px 60px rgba(14,36,69,.28)}
.app-overlay .app-modal-body{background:#fff;flex:1;overflow:auto}
.evidence-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;align-items:start}
.evidence-col{min-width:0;display:grid;gap:8px;align-content:start}
.evidence-col h4{margin:0;font-size:13px;font-weight:800;color:var(--primary-3)}
.evidence-col-media .evidence-media{display:block;background:#f6faf7;border:1px solid var(--line);border-radius:8px;overflow:auto;max-height:74vh;text-decoration:none}
.evidence-col-media .evidence-media img{display:block;width:100%;height:auto}
.evidence-pdf{width:100%;height:74vh;border:1px solid var(--line);border-radius:8px;background:#fff}
.evidence-text{margin:0;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word;font-size:13px;line-height:1.6;color:var(--text);background:#f8faf9;border:1px solid var(--line);border-radius:8px;padding:12px;max-height:74vh;overflow:auto}
.ocr-view-btn{justify-self:start;display:inline-flex;align-items:center;gap:7px}
@media(max-width:760px){.evidence-grid{grid-template-columns:1fr}.evidence-col-media .evidence-media,.evidence-text,.evidence-pdf{max-height:none}.evidence-pdf{height:60vh}}
.ocr-raw-preview{max-width:100%;min-width:0}
.ocr-raw-preview summary{font-size:13px;font-weight:700;color:var(--primary);cursor:pointer}
.ocr-raw-preview pre{font-size:12px;line-height:1.5;margin:6px 0 0;max-height:340px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;word-break:break-word}
h1,h2,h3{color:var(--primary-3);line-height:1.25;letter-spacing:-.015em}

.app-shell{min-height:100vh;display:flex;flex-direction:column}
.topbar{background:#fff;color:var(--text);padding:12px 22px;display:flex;justify-content:space-between;align-items:center;gap:12px;border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}
.brand{font-weight:800;font-size:16px;display:flex;align-items:center;column-gap:10px;letter-spacing:-.01em;color:var(--primary-3);min-width:0}
.brand-logo{width:34px;height:34px;border-radius:8px;object-fit:cover;flex:0 0 auto;box-shadow:0 0 0 1px var(--line)}
.brand-text{display:flex;flex-direction:column;min-width:0}
.brand-name{font-weight:800;line-height:1.15;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.brand small{font-weight:400;color:var(--muted);font-size:13px;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.top-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.user-chip{border:1px solid var(--line);background:var(--surface-soft);padding:6px 10px;border-radius:999px;color:var(--muted);font-weight:700}

.layout{display:grid;grid-template-columns:236px 1fr;gap:16px;padding:16px 18px 20px;flex:1;min-height:0}
.sidebar{background:#fff;border:1px solid var(--line);padding:10px;border-radius:var(--radius);height:max-content;position:sticky;top:76px;box-shadow:var(--shadow)}
.nav-title{font-weight:800;color:var(--muted);margin:3px 4px 10px;font-size:13px;text-transform:none;letter-spacing:.08em}
.nav{display:flex;flex-direction:column;gap:5px}
.nav button{display:block;width:100%;margin:0;text-align:left;border-radius:var(--radius);padding:10px 11px;background:transparent;border-color:transparent;color:#37514a;font-weight:700}
.nav button.secondary{background:transparent;border-color:transparent;color:#37514a}
.nav button:hover,.nav button.secondary:hover{background:var(--primary-soft);border-color:transparent;color:var(--primary-3)}
.nav button.accent{background:var(--primary-soft);border-color:var(--primary-line);color:var(--primary-3);box-shadow:inset 3px 0 0 var(--accent)}
.main{min-width:0}

.card{background:#fff;border:1px solid var(--line);padding:18px;margin-bottom:14px;border-radius:var(--radius);box-shadow:var(--shadow)}
.card h1,.card h2,.card h3{margin:0 0 11px}
.card h1{font-size:22px}.card h2{font-size:18px}.card h3{font-size:15px}
.card p{margin-top:0}
.subtle{background:var(--surface-soft);box-shadow:none}

.pipeline{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:14px 0 4px}
.step{border:1px solid var(--line);background:#fff;padding:12px;border-radius:var(--radius);min-height:104px}
.step b{color:var(--primary-3);font-size:14px}
.step p{margin:7px 0 0;color:var(--muted)}
.step .num{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;background:var(--accent-soft);color:var(--primary-3);border:1px solid var(--accent);border-radius:6px;margin-right:7px;font-weight:800}

.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}
.two-col{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(280px,.65fr);gap:14px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.row.nowrap{flex-wrap:nowrap}
.field{display:flex;flex-direction:column;gap:5px;margin-bottom:10px}
.field label{font-weight:700;color:var(--primary-3);font-size:13px}
.field input,.field select,.field textarea{border:1px solid var(--line-strong);padding:9px 10px;border-radius:var(--radius);background:#fff;color:var(--text);width:100%;transition:border-color .15s ease,box-shadow .15s ease}
.field textarea{min-height:96px;resize:vertical}
.field input:focus,.field select:focus,.field textarea:focus{outline:0;border-color:var(--primary);box-shadow:0 0 0 3px rgba(18,145,76,.18)}

/* Tables: full-bordered, primary-coloured header (spec §9) */
.table-wrap{overflow:auto;border:1px solid var(--line-strong);background:#fff;border-radius:var(--radius)}
table{width:100%;border-collapse:collapse;background:#fff;min-width:680px}
th,td{border:1px solid var(--line-strong);padding:10px 11px;text-align:left;vertical-align:top}
th{background:var(--primary);color:#fff;font-weight:700;white-space:nowrap;font-size:13px;letter-spacing:.01em}
tbody tr:nth-child(even) td{background:var(--surface-soft)}
tbody tr:hover td{background:var(--primary-soft)}
.compact-table table{min-width:520px}

.kv{display:grid;grid-template-columns:160px 1fr;border:1px solid var(--line-strong);border-radius:var(--radius);overflow:hidden;background:#fff}
.kv div,.kv b{padding:9px 10px;border-bottom:1px solid var(--line)}
.kv b{color:var(--primary-3);background:var(--surface-soft)}
.kv div:nth-last-child(-n+2),.kv b:nth-last-child(-n+2){border-bottom:0}

.pill{display:inline-flex;align-items:center;gap:5px;border:1px solid var(--line-strong);padding:3px 8px;border-radius:999px;background:var(--surface-soft);font-weight:700;font-size:13px;white-space:nowrap;color:#37514a}
.pill.ok{color:var(--ok);border-color:#a9dcc1;background:#eef9f3}
.pill.warn{color:var(--warn);border-color:#ebd08e;background:#fff8e6}
.pill.danger{color:var(--danger);border-color:#eeb3ac;background:#fdf3f2}
.pill.accent{color:var(--primary-3);border-color:var(--accent);background:var(--accent-soft)}
.permission-pills{display:flex;gap:6px;flex-wrap:wrap;align-items:flex-start}
.permission-pill{display:inline-flex;align-items:center;border:1px solid var(--primary-line);background:#fff;color:var(--primary-3);border-radius:999px;padding:4px 9px;font-size:12px;font-weight:700;line-height:1.2;white-space:nowrap}
.permission-group{display:grid;gap:8px}
.permission-choice{display:grid;grid-template-columns:auto 1fr;gap:9px;align-items:flex-start;border:1px solid var(--line);background:#fff;border-radius:var(--radius);padding:9px 10px;cursor:pointer}
.permission-choice:hover{border-color:var(--primary-line);background:var(--primary-soft)}
.permission-choice input{margin-top:3px}.permission-choice span{display:flex;flex-direction:column;gap:2px}.permission-choice small{color:var(--muted);font-size:12px;font-weight:400}
.muted{color:var(--muted)}
.error{color:var(--danger);font-weight:700}
.success{color:var(--ok);font-weight:700}

body.auth-mode{overflow:hidden}
.login-wrap{min-height:100vh;min-height:100dvh;height:100dvh;display:flex;justify-content:center;padding:24px 16px;background:radial-gradient(120% 120% at 50% 0%,var(--primary-soft) 0%,var(--bg) 55%);overflow:auto;-webkit-overflow-scrolling:touch}
.login{max-width:420px;width:100%;margin:auto}
.login.card{padding:30px 28px;box-shadow:var(--shadow-soft);border-top:4px solid var(--primary)}
.login-brand{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.login-logo{width:52px;height:52px;border-radius:12px;object-fit:cover;box-shadow:0 0 0 1px var(--line)}
.login .logo{font-size:26px;color:var(--primary-3);font-weight:900;letter-spacing:-.02em;line-height:1.05}
.login-sub{color:var(--muted);font-weight:600;font-size:13px;margin-top:2px}
.login-intro{margin:2px 0 16px}
.login-btn{width:100%;padding:11px 14px;font-size:15px;margin-top:4px}
.login-foot{text-align:center;margin:16px 0 0;font-size:13px}

.capture-box{border:1px solid var(--primary-line);background:#fff;padding:12px;border-radius:var(--radius);margin:12px 0 16px}
.capture-box input[type=file]{padding:10px;background:#fff;border:1px solid var(--line-strong);border-radius:var(--radius);width:100%;min-height:46px}
.capture-panel{display:grid;gap:14px}.capture-panel-head h3{margin:0 0 4px;color:var(--primary-3)}.capture-panel-head p{margin:0}.capture-input{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}.capture-file-card{display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid var(--line);background:#fff;border-radius:8px;padding:14px 15px;cursor:pointer;transition:border-color .16s ease,background .16s ease}.capture-file-card:hover{border-color:var(--primary-line);background:#fbfdfb}.capture-file-icon{width:38px;height:38px;border-radius:8px;background:var(--primary-soft);color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:900}.capture-file-main{display:grid;gap:3px;min-width:0}.capture-file-main b{color:var(--primary-3)}.capture-file-name{font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.capture-file-name.has-file{color:var(--primary);font-weight:800}.capture-file-action{font-size:13px;font-weight:800;color:var(--primary);background:#f4faf6;border-radius:999px;padding:7px 10px;white-space:nowrap}.capture-actions{display:flex;justify-content:flex-start}.capture-actions button{min-width:126px}.capture-progress{display:flex;align-items:flex-start;gap:12px;border:0;background:#fff;padding:8px 0}.capture-progress b{color:var(--primary-3)}.capture-progress p{margin:4px 0 0}.spinner{width:24px;height:24px;border-radius:50%;border:3px solid #dfeee5;border-top-color:var(--primary);animation:spin .8s linear infinite;flex:0 0 auto}@keyframes spin{to{transform:rotate(360deg)}}.session-workspace{display:grid;gap:12px}.active-session-card{display:flex;justify-content:space-between;gap:12px;align-items:flex-start;border:0;background:#f6faf7;border-radius:8px;padding:13px 14px}.active-session-card h3{margin:3px 0 4px;color:var(--primary-3)}.active-session-card p{margin:0}.eyebrow{font-size:11px;text-transform:none;letter-spacing:.05em;font-weight:900;color:var(--muted)}
.mobile-only-note{display:none}


html.modal-open,body.modal-open{overflow:hidden!important;overscroll-behavior:none;background:#fff!important}
body.modal-open{position:fixed;left:0;right:0;width:100%;height:var(--modal-vh,100dvh);touch-action:none}
body.modal-open .app-shell{pointer-events:none;user-select:none;visibility:hidden}
body.modal-open .app-modal-backdrop{pointer-events:auto;touch-action:none}
.app-modal-backdrop{position:fixed;left:0;right:0;top:var(--modal-vv-top,0px);bottom:auto;z-index:1000;background:rgba(10,24,44,.42);display:flex;align-items:center;justify-content:center;padding:22px;height:100vh;height:var(--modal-vh,100dvh);overflow:hidden;overscroll-behavior:contain;touch-action:none}
.app-modal{width:min(1180px,100%);max-height:min(92vh,920px);background:#fff;border:1px solid var(--line-strong);border-radius:8px;box-shadow:0 18px 50px rgba(14,36,69,.18);display:flex;flex-direction:column;overflow:hidden}
.app-modal-half{width:min(760px,100%)}
.app-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);background:#fff}
.app-modal-head h2{margin:0;font-size:18px;color:var(--primary-3)}
.app-modal-head button{font-size:22px;line-height:1;min-width:38px;padding:5px 10px}
.app-modal-body{padding:16px;overflow:auto;background:var(--bg);min-height:0;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.app-modal-body>.record-editor,.app-modal-body>.card{background:#fff}
/* Popup hồ sơ đầy đủ: nền trắng liền mạch (không để nền xanh var(--bg) tách rời nội dung bên trong) */
.record-detail-modal .app-modal-body{background:#fff}
.modal-card{box-shadow:none;margin:0}
.app-modal-group-page{width:100vw;height:100dvh;height:var(--modal-vh,100dvh);max-height:none;border:0;border-radius:0;box-shadow:none;background:var(--bg)}
.group-page-backdrop{align-items:stretch;justify-content:stretch;padding:0;background:var(--bg)}
.app-modal-group-page .app-modal-head{position:sticky;top:0;z-index:5;padding:12px 18px;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 1px 0 rgba(10,60,33,.04)}
.app-modal-group-page .app-modal-head h2{font-size:19px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.app-modal-group-page .app-modal-head button{font-size:14px;line-height:1.2;min-width:auto;padding:8px 12px;white-space:nowrap}
.app-modal-group-page .app-modal-body{padding:16px 18px 22px;background:var(--bg);flex:1;overflow:auto}
.group-page-body{max-width:1280px;margin:0 auto;width:100%}

.record-editor{display:grid;grid-template-columns:minmax(0,1fr) minmax(320px,.42fr);gap:14px}
.record-editor-header{grid-column:1/-1;display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:0 0 12px;border-bottom:1px solid var(--line-strong)}
.record-header-id{display:flex;align-items:baseline;flex-wrap:wrap;gap:8px;min-width:0}
.record-header-id h3{margin:0;font-size:20px;line-height:1.2;color:var(--primary-3);overflow-wrap:anywhere}
.record-header-id .rec-code{font-weight:800;color:var(--muted);font-size:13px;background:#f1f5f3;border-radius:999px;padding:2px 10px}
.record-editor-header .rec-badges{display:flex;flex-wrap:wrap;gap:6px;margin-left:auto}
.record-editor input[id^="ek_"],.record-editor input[id^="ev_"],.record-editor input[id^="sa_"],.record-editor textarea[id^="sa_"],.record-editor select[id^="sa_"],.review-controls select,.review-controls textarea{border:1px solid var(--line-strong);padding:7px 8px;border-radius:var(--radius);width:100%;background:#fff}
.record-editor textarea[id^="sa_"]{min-height:58px;resize:vertical}
.record-editor .compact-table{margin-bottom:8px}
.ai-review-panel{border:1px solid var(--primary-line);background:#fff;border-radius:var(--radius);padding:12px;margin:12px 0}
.review-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;align-items:flex-start;border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:10px}.review-head h3{margin:0 0 6px}.review-head p{margin:0}
.autofill-btn{flex:0 0 auto;margin-left:auto;display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
/* Link "Đọc lại bằng AI" — kín đáo (tự điền là mặc định, link chỉ dùng khi cần đọc lại). */
.autofill-retry{flex:0 0 auto;margin-left:auto;display:inline-flex;align-items:center;gap:6px;white-space:nowrap;background:transparent;border:0;color:var(--primary);font-weight:700;font-size:12.5px;padding:2px 4px}
.autofill-retry:hover:not(:disabled){background:transparent;border:0;color:var(--primary-3);text-decoration:underline}
.autofill-retry:disabled{opacity:.5}
.autofill-status{display:flex;align-items:center;gap:8px;min-height:22px;margin:-2px 0 10px;font-size:13px}
.review-controls{display:grid;grid-template-columns:220px minmax(0,1fr);gap:10px;align-items:start}.review-controls .field{margin:0}.review-controls .field span{font-weight:700;color:var(--primary-3);font-size:13px}.review-note textarea{min-height:70px}
.ai-review-panel h4{margin:14px 0 8px;color:var(--primary-3)}.review-table .table-wrap{margin-bottom:6px}.review-save-row{justify-content:flex-end;margin-top:10px}
.json-area{font-family:var(--font-sans);min-height:190px}

.flash{position:fixed;top:82px;right:20px;z-index:1200;width:min(420px,calc(100vw - 32px));pointer-events:none}
.flash>.toast-message{pointer-events:auto;display:grid;grid-template-columns:28px minmax(0,1fr) 28px;gap:10px;align-items:flex-start;background:#fff;color:var(--text);border:1px solid #d7e2da;border-left-width:4px;border-radius:8px;padding:12px 12px 12px 11px;margin-bottom:10px;box-shadow:0 14px 34px rgba(12,33,21,.16);animation:toastIn .18s ease-out}
.toast-message.toast-success{border-left-color:var(--ok)}
.toast-message.toast-error{border-left-color:var(--danger)}
.toast-icon{width:24px;height:24px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;font-weight:900;font-size:14px;line-height:1;background:#edf7f1;color:var(--ok)}
.toast-error .toast-icon{background:#fdf0ef;color:var(--danger)}
.toast-text{font-weight:700;color:var(--text);line-height:1.35;padding-top:2px}
.toast-close{width:24px;height:24px;min-width:24px;padding:0;border:0!important;background:transparent!important;color:#7a857f!important;font-size:20px;line-height:1;box-shadow:none!important}
.toast-close:hover{color:var(--text)!important;background:#f3f5f4!important}
@keyframes toastIn{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:translateY(0)}}
.empty{border:1px dashed var(--line-strong);padding:16px;background:var(--surface-soft);color:var(--muted);border-radius:var(--radius);text-align:center}
.empty.mini{padding:10px;text-align:left}
.mobile-disclosure{border:1px solid var(--line);border-radius:var(--radius);background:#fff;overflow:hidden}
.mobile-disclosure>summary{list-style:none;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 13px;cursor:pointer;font-weight:800;color:var(--primary-3)}
.mobile-disclosure>summary::-webkit-details-marker{display:none}
.mobile-disclosure>summary:after{content:'\2b';font-family:'Font Awesome 6 Free';display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border:1px solid var(--primary-line);border-radius:50%;background:var(--primary-soft);color:var(--primary-3);font-weight:900;font-size:12px;flex:0 0 auto}
.mobile-disclosure[open]>summary{border-bottom:1px solid var(--line)}
.mobile-disclosure[open]>summary:after{content:'\f068'}
.mobile-disclosure>summary small{color:var(--muted);font-weight:600;text-align:right;line-height:1.25}
.mobile-disclosure-body{padding:12px 13px}.mobile-disclosure-body>*:last-child{margin-bottom:0}
.card.mobile-disclosure{padding:0}.card.mobile-disclosure>.mobile-disclosure-body{padding:14px}.card.mobile-disclosure>summary{padding:14px}
.compact-section-head{border-bottom:0;padding-bottom:0;margin-bottom:10px}.compact-section-head p{margin:0}

.stat{border:1px solid var(--line);background:#fff;padding:14px;border-radius:var(--radius);box-shadow:var(--shadow)}
.stat strong{font-size:15px;color:var(--primary-3);display:block;margin-bottom:8px}
.health-line{display:flex;gap:6px;flex-wrap:wrap;margin-top:8px}

/* Dashboard */
.dashboard{display:flex;flex-direction:column;gap:14px}
.dash-hero{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:end;gap:16px;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-2) 100%);color:#fff;padding:22px;border-radius:var(--radius)}
.dash-hero h1{font-size:26px;margin-bottom:8px;color:#fff}
.dash-hero p{max-width:760px;color:rgba(255,255,255,.85);margin-bottom:0}
.eyebrow{display:inline-flex;align-items:center;width:max-content;color:var(--muted);font-size:12px;font-weight:700;letter-spacing:0;margin-bottom:8px}
.hero-actions,.mobile-cta{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}
.hero-actions button.secondary{background:rgba(255,255,255,.12);color:#fff;border-color:rgba(255,255,255,.4)}
.hero-actions button.secondary:hover{background:rgba(255,255,255,.2);color:#fff}
.metric-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.metric{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:16px;box-shadow:var(--shadow);min-width:0}
.metric-label{display:block;color:var(--muted);font-weight:700;font-size:13px}
.metric strong{display:block;font-size:30px;line-height:1.05;color:var(--primary-3);margin:7px 0}
.metric-desc{font-size:13px;color:var(--muted);font-weight:700}
.metric-desc.ok{color:var(--ok)}.metric-desc.warn{color:var(--warn)}
.metric-badge{display:flex;margin:7px 0}.group-summary-grid .metric-badge{margin:6px 0}
.dash-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.65fr);gap:14px;align-items:start}
.dash-grid-single{grid-template-columns:minmax(0,1fr)}
.dash-grid-single .campaign-list{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px}
.dash-grid-single .campaign-card{min-height:82px}
.section-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;margin-bottom:12px;border-bottom:1px solid var(--line);padding-bottom:10px}
.section-head h2{margin-bottom:3px}.section-head p{margin:0}
.campaign-list{display:flex;flex-direction:column;gap:9px}
.campaign-card{width:100%;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;padding:12px;border-radius:var(--radius);background:#fff;border:1px solid var(--line);color:var(--text)}
.campaign-card:hover{background:var(--primary-soft);border-color:var(--primary-line)}
.campaign-card b{display:block;color:var(--primary-3);font-size:14px;margin-bottom:2px}
.campaign-card span.muted{display:block;font-weight:600;font-size:13px}
.service-list{display:flex;flex-direction:column;gap:9px;margin:6px 0 14px}
.service-row{display:flex;justify-content:space-between;align-items:center;gap:8px;border:1px solid var(--line);background:var(--surface-soft);border-radius:var(--radius);padding:9px 10px}
.service-row>span{font-weight:700;color:var(--primary-3)}

.list-toolbar{display:grid;grid-template-columns:minmax(220px,1fr) 130px auto;gap:10px;align-items:end;margin-bottom:12px}
.list-toolbar .field{margin-bottom:0}.mobile-search-toolbar{position:relative;grid-template-columns:minmax(0,1fr) 44px 44px}.toolbar-list-options{grid-column:auto;position:relative;overflow:visible}.toolbar-list-options>summary{list-style:none;border:1px solid var(--line-strong);background:#fff;color:var(--primary-3);cursor:pointer;align-items:center!important;justify-content:center!important}.toolbar-list-options>summary::-webkit-details-marker{display:none}.toolbar-list-options>summary:after{display:none!important;content:none!important}.toolbar-list-options>summary small{position:absolute;right:4px;bottom:3px;min-width:15px;height:15px;border-radius:999px;background:var(--primary);color:#fff;font-size:10px;line-height:15px;text-align:center;font-weight:900}.toolbar-list-options .mobile-disclosure-body{position:absolute;right:0;top:calc(100% + 8px);z-index:20;width:min(282px,calc(100vw - 28px));display:grid;grid-template-columns:1fr;gap:8px;align-items:end;background:#fff;border:1px solid var(--line-strong);border-radius:8px;padding:10px;box-shadow:0 12px 28px rgba(12,33,21,.14)}.toolbar-list-options .field{margin:0}.toolbar-list-options button{min-height:40px;width:100%}
.pager{display:flex;justify-content:flex-end;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.table-actions{margin-top:10px}
.group-name-cell{display:grid;gap:2px}.group-name-cell b{color:var(--primary-3)}.group-name-cell small{font-weight:600}
.group-modal-body{display:grid;gap:12px}.group-detail-loading{border:1px dashed var(--line-strong);background:#fff;border-radius:5px;padding:18px;color:var(--muted)}
.group-detail-shell{display:grid;gap:12px}.group-summary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.group-summary-grid .metric{padding:13px}.group-summary-grid .metric strong{font-size:23px}
.group-business-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px;align-items:start}.business-panel,.group-chat-panel,.permission-editor{background:#fff;border:1px solid var(--line);border-radius:5px;padding:14px;box-shadow:var(--shadow)}
.business-panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px;border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:12px}.business-panel-head h3{margin:0 0 4px}.business-panel-head p{margin:0}
.business-action-bar{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:9px;align-items:end;border:1px solid var(--line);background:var(--surface-soft);border-radius:5px;padding:10px;margin-top:10px}.business-action-bar .field{margin:0}.business-action-bar select{background:#fff;font-weight:700;color:var(--primary-3)}.member-add-bar{grid-template-columns:minmax(0,1fr) 160px auto}.business-action-bar button{min-height:40px}.danger-text{color:var(--danger)!important}
.group-chat-panel{display:grid;gap:12px}.chat-workspace{display:grid;grid-template-columns:1fr;gap:10px;align-items:start}.chat-workspace.chatgpt-style{max-width:980px;margin:0 auto;width:100%}.chat-history{border:1px solid var(--line);background:var(--surface-soft);border-radius:5px;padding:12px;max-height:430px;overflow:auto}.chat-empty{border:1px dashed var(--line-strong);background:#fff;border-radius:5px;padding:14px;text-align:center;color:var(--muted)}.chat-thread{display:grid;gap:12px}.chat-message-pair{display:grid;gap:7px}.chat-bubble{border:1px solid var(--line);border-radius:8px;padding:10px 12px;background:#fff}.chat-bubble.user{justify-self:end;max-width:78%;background:var(--primary);border-color:var(--primary);color:#fff}.chat-bubble.assistant{max-width:92%;background:#fff}.chat-bubble-label{font-size:12px;font-weight:800;margin-bottom:5px;color:inherit;opacity:.75;text-transform:none;letter-spacing:.04em}.chat-formatted{font-size:14px;line-height:1.55;color:var(--text)}.chat-formatted p{margin:0 0 8px}.chat-formatted p:last-child{margin-bottom:0}.chat-formatted ul{margin:7px 0 8px 18px;padding:0}.chat-formatted li{margin:4px 0}.chat-formatted strong{color:var(--primary-3)}.chat-source{margin-top:8px;font-size:13px;border-top:1px solid var(--line);padding-top:7px}.chat-source-badge{display:inline-flex;align-items:center;gap:6px;font-size:11px;font-weight:800;border-radius:999px;padding:3px 9px;margin-bottom:6px;letter-spacing:.01em}.chat-source-quant{background:rgba(18,145,76,.12);color:var(--primary-3,#0a6e39);border:1px solid rgba(18,145,76,.3)}.chat-source-qual{background:rgba(242,169,60,.16);color:#8a5d04;border:1px solid rgba(242,169,60,.45)}.chat-typing{color:var(--muted);font-style:italic}.chat-composer{display:grid;grid-template-columns:minmax(0,1fr) 42px;gap:8px;align-items:end;border:1px solid var(--line-strong);background:#fff;border-radius:18px;padding:8px 8px 8px 14px;box-shadow:0 1px 3px rgba(10,60,33,.06)}.chat-composer:focus-within{border-color:var(--primary-line);box-shadow:0 0 0 3px rgba(18,145,76,.12)}.chat-composer textarea{border:0!important;box-shadow:none!important;outline:0!important;padding:8px 0!important;min-height:38px;max-height:140px;resize:none;background:transparent!important;color:var(--text);font-size:15px;line-height:1.45}.chat-send-btn{width:42px;height:42px;min-width:42px;min-height:42px;border-radius:50%;padding:0;display:inline-flex;align-items:center;justify-content:center;font-size:20px;line-height:1;background:var(--primary);color:#fff}.chat-send-btn:hover{background:var(--primary-2)}.chat-composer-hint{font-size:12px;text-align:center}
.business-export-row{display:flex;flex-wrap:wrap;gap:8px}.export-chip{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line-strong);background:#fff;border-radius:5px;padding:8px 12px;font-weight:800;color:var(--primary-3)}.export-chip:hover{background:var(--primary-soft);border-color:var(--primary-line);text-decoration:none}
.reference-disclosure{border-radius:5px}.reference-body{display:grid;gap:10px}.reference-upload-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.reference-upload-row input[type=file]{padding:9px;background:#fff;border:1px solid var(--line-strong);border-radius:5px;width:100%}.reference-list .table-wrap{margin-top:4px}.permission-editor{position:relative}.permission-editor .field{max-width:360px}
.otp-box input{border:1px solid var(--line-strong);padding:9px 10px;border-radius:var(--radius);background:#fff;min-width:120px}
.thumb{width:76px;height:54px;object-fit:cover;border:1px solid var(--line-strong);border-radius:var(--radius);background:#fff}

/* Surveyor-first responsive workspace */
.locale-control{display:flex;align-items:center;gap:6px;border:1px solid var(--line);background:var(--surface-soft);padding:5px 8px;border-radius:999px;color:var(--muted);font-weight:700;font-size:13px}
.locale-control select{border:0;background:transparent;font-weight:800;color:var(--primary-3);outline:0}
.surveyor-workspace{gap:12px}
.surveyor-hero{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:14px;align-items:stretch;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-2) 100%);color:#fff;padding:22px;border-radius:var(--radius)}
.surveyor-hero h1{font-size:27px;margin-bottom:7px;color:#fff}
.surveyor-hero p{max-width:740px;margin-bottom:0;color:rgba(255,255,255,.85)}
.locale-card{border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.1);border-radius:var(--radius);color:rgba(255,255,255,.85);overflow:hidden}.locale-card>summary{color:#fff;padding:12px;background:transparent}.locale-card>summary small{color:rgba(255,255,255,.78)}.locale-card>summary:after{border-color:rgba(255,255,255,.35);background:rgba(255,255,255,.12);color:#fff}.locale-card[open]>summary{border-bottom-color:rgba(255,255,255,.2)}.locale-card .mobile-disclosure-body{display:flex;flex-direction:column;gap:5px;padding:12px}.locale-card b{color:#fff}
.surveyor-grid{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(0,1.2fr);gap:14px;align-items:start}
.campaign-choice-list{display:flex;flex-direction:column;gap:8px}
.campaign-choice{width:100%;display:flex;justify-content:space-between;align-items:center;gap:10px;background:#fff;color:var(--text);border:1px solid var(--line);text-align:left;border-radius:var(--radius);padding:12px}
.compact-campaign-picker .section-head{align-items:flex-start}.campaign-select-box{display:grid;gap:10px}.campaign-select-box .field{margin:0}.campaign-select-box select{font-weight:800;color:var(--primary-3);background:#fff}.campaign-select-current{margin:0}.campaign-select-current span{min-width:0}.campaign-select-current b,.campaign-select-current small{display:block;overflow:hidden;text-overflow:ellipsis}.campaign-select-current b{white-space:nowrap}.campaign-select-current small{color:var(--muted);font-weight:700;margin-top:2px}.checkin-required-card{background:var(--primary-soft);border:1px solid var(--primary-line);text-align:left}.checkin-required-card b{display:block;color:var(--primary-3);margin-bottom:4px}.checkin-required-card p{margin:0;color:var(--muted)}
.campaign-choice:hover,.campaign-choice.is-selected{background:var(--primary-soft);border-color:var(--primary-line);color:var(--primary-3)}
.campaign-choice.is-selected{box-shadow:inset 3px 0 0 var(--accent)}
.campaign-choice b{display:block}
.campaign-choice small{display:block;color:var(--muted);font-weight:700;margin-top:2px}
.selected-campaign{display:flex;justify-content:space-between;gap:10px;align-items:center;border:1px solid var(--line);background:var(--surface-soft);border-radius:var(--radius);padding:10px;margin-bottom:10px}
.gps-check-card{border:1px solid var(--line);background:#fff;border-radius:5px;padding:11px 12px;margin:8px 0 12px}
.gps-check-head{display:flex;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px}.gps-check-card p{margin:6px 0 3px}.gps-help{font-size:13px}
.mini-map{position:relative;display:block;overflow:hidden;border:1px solid #dce8df;border-radius:5px;background:#eef4f0;height:150px;margin:8px 0;text-decoration:none;color:inherit}.slippy-map{isolation:isolate;touch-action:manipulation}.map-tile-layer{position:absolute;inset:0;z-index:1;overflow:hidden;background:#eef4f0}.map-tile-layer img{position:absolute;width:256px;height:256px;max-width:none;filter:saturate(.72) contrast(.96) brightness(1.04);opacity:.96}.map-crosshair{position:absolute;left:50%;top:50%;width:34px;height:34px;transform:translate(-50%,-50%);border:1px solid rgba(18,145,76,.35);border-radius:50%;z-index:3;pointer-events:none}.map-crosshair:before,.map-crosshair:after{content:'';position:absolute;background:rgba(18,145,76,.55)}.map-crosshair:before{left:50%;top:-6px;width:1px;height:46px}.map-crosshair:after{top:50%;left:-6px;width:46px;height:1px}.map-pin{position:absolute;left:50%;top:50%;transform:translate(-50%,-92%) rotate(-45deg);width:20px;height:20px;border-radius:50% 50% 50% 0;background:#d92d20;color:#fff;border:2px solid #fff;box-shadow:0 6px 14px rgba(30,45,36,.20);font-size:0;z-index:4;pointer-events:none}.map-pin:after{content:'';position:absolute;inset:4px;border-radius:50%;background:#fff}.map-open-label{position:absolute;right:8px;bottom:8px;background:rgba(255,255,255,.96);border:1px solid #dce8df;border-radius:5px;padding:7px 10px;font-size:12px;font-weight:800;color:var(--primary-3);box-shadow:0 4px 12px rgba(15,80,42,.08);z-index:5}.map-pick-label{left:10px;right:auto}.map-zoom-controls{position:absolute;right:10px;top:10px;z-index:6;display:flex;flex-direction:column;gap:6px}.map-zoom-controls button{width:34px;height:34px;min-height:34px;padding:0;border-radius:5px;border:1px solid #dce8df;background:rgba(255,255,255,.97);color:var(--primary-3);font-size:20px;line-height:1;font-weight:900;box-shadow:0 3px 10px rgba(15,80,42,.08)}.map-zoom-controls button:hover{background:var(--primary-soft);border-color:var(--primary-line);color:var(--primary-3)}.session-map{width:220px;height:120px;margin:0 0 6px}.campaign-map{height:170px}
.campaign-form-layout{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;align-items:start}
.campaign-basic-card,.campaign-location-card{border:1px solid var(--line);background:var(--surface-soft);border-radius:5px;padding:12px}
.campaign-location-card{background:#fff;border-color:#d9e7df}
.compact-head{margin-bottom:10px;padding-bottom:8px}.compact-head h3{font-size:15px}.compact-head p{font-size:13px;max-width:620px}.location-guide-steps{margin:8px 0 0;padding-left:0;list-style:none;display:grid;gap:7px;max-width:760px}.location-guide-steps li{position:relative;padding:8px 10px 8px 38px;border:1px solid var(--line);border-radius:5px;background:var(--surface-soft);color:var(--muted);font-size:13px;line-height:1.4}.location-guide-steps li:before{content:counter(list-item);position:absolute;left:10px;top:8px;width:20px;height:20px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--primary);color:#fff;font-size:12px;font-weight:900}
.campaign-map-box{border:1px solid #dce8df;border-radius:5px;background:#f6faf7;overflow:hidden;margin-bottom:10px;min-height:218px}
.map-placeholder{min-height:218px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:18px;color:var(--muted);background:linear-gradient(135deg,#f8fbf9,#eef6f1)}
.map-placeholder strong{color:var(--primary-3);font-size:16px;margin-bottom:6px}.map-placeholder p{max-width:520px;margin:0}
.campaign-map-preview{position:relative;display:block;height:248px;background:linear-gradient(135deg,#f7fbf8,#eef6f1);overflow:hidden;text-decoration:none;color:inherit;cursor:crosshair}.campaign-map-preview:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,255,255,.02) 44%,rgba(255,255,255,.20));pointer-events:none;z-index:2}.campaign-map-preview.is-pickable:hover .map-crosshair{border-color:rgba(18,145,76,.8)}.map-fallback{position:absolute;inset:0;display:none;align-items:center;justify-content:center;font-weight:800;color:var(--primary-3);text-align:center;padding:18px;background:linear-gradient(135deg,#f8fbf9,#eef6f1)}
.map-radius-ring{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);border:2px solid rgba(18,145,76,.9);background:rgba(18,145,76,.11);border-radius:50%;box-shadow:0 0 0 1px rgba(255,255,255,.95);pointer-events:none;z-index:3}
.map-radius-label{position:absolute;left:10px;bottom:10px;background:rgba(255,255,255,.96);border:1px solid #dce8df;border-radius:5px;padding:7px 10px;font-weight:800;color:var(--primary-3);font-size:13px;box-shadow:0 4px 12px rgba(15,80,42,.08);z-index:5}
.location-actions{display:grid;grid-template-columns:1fr;gap:8px;align-items:stretch;margin-bottom:10px}.location-actions .field{margin:0}.location-actions .field span{font-weight:700;color:var(--primary-3);font-size:13px}.map-link-field input{min-height:43px}.location-button-row{display:grid;grid-template-columns:1.25fr .9fr .9fr;gap:8px}.location-button-row button{width:100%;min-width:0;white-space:normal;padding-left:8px;padding-right:8px;line-height:1.25;border-radius:5px}.location-results{display:grid;gap:7px}.location-results.is-empty{display:none}.location-searching{padding:9px 10px;border:1px dashed var(--line-strong);border-radius:5px;background:var(--surface-soft)}.location-result{display:block;width:100%;text-align:left;background:#fff;color:var(--ink);border:1px solid var(--line-strong);border-radius:5px;padding:9px 34px 9px 10px;min-height:0;position:relative}.location-result:after{content:'›';position:absolute;right:12px;top:50%;transform:translateY(-50%);color:var(--primary);font-size:22px;font-weight:800;line-height:1}.location-result:hover{border-color:var(--primary);background:var(--primary-soft)}.location-result-title{display:block;font-weight:800;color:var(--primary-3);margin-bottom:3px}.location-result small{display:block;color:var(--muted);font-weight:600;line-height:1.35}.clear-location-btn{justify-self:start;background:transparent!important;color:var(--muted)!important;border:0!important;box-shadow:none!important;padding:4px 0!important;min-height:auto!important;text-align:left}.clear-location-btn:hover{color:var(--danger)!important;text-decoration:underline}
.radius-control{border:1px solid var(--line);background:var(--surface-soft);border-radius:5px;padding:10px}.radius-control input[type=range]{width:100%;accent-color:var(--primary);margin:8px 0}.radius-control p{margin:0;font-size:13px}.radius-line{display:flex;justify-content:space-between;gap:10px;align-items:center;font-weight:700;color:var(--primary-3)}.radius-line b{font-size:16px;color:var(--primary)}
.gps-admin-cell{display:flex;flex-direction:column;gap:4px;min-width:220px}.gps-admin-cell small{color:var(--muted);font-size:12px;line-height:1.35}
.campaign-create-action{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:12px}.campaign-create-action h2{margin:0 0 4px}.campaign-create-action p{margin:0}.campaign-create-action button{white-space:nowrap}.campaign-create-modal-body{display:grid;gap:14px}.app-modal-campaign-create{width:min(1080px,calc(100vw - 36px));max-height:min(90vh,860px)}.app-modal-campaign-create .campaign-form-layout{grid-template-columns:minmax(280px,.85fr) minmax(360px,1.15fr)}.modal-actions{display:flex;justify-content:flex-end;gap:8px;position:sticky;bottom:-16px;margin:0 -16px -16px;padding:12px 16px;background:#fff;border-top:1px solid var(--line);z-index:4}
.campaign-create-panel{padding:0;overflow:hidden}.campaign-create-summary{list-style:none;display:flex;justify-content:space-between;align-items:center;gap:10px;padding:16px 18px;cursor:pointer;font-weight:800;color:var(--primary-3)}.campaign-create-summary::-webkit-details-marker{display:none}.campaign-create-summary:after{content:'\2b';font-family:'Font Awesome 6 Free';display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border:1px solid var(--primary-line);border-radius:50%;background:var(--primary-soft);color:var(--primary-3);font-weight:900}.campaign-create-panel[open] .campaign-create-summary{border-bottom:1px solid var(--line)}.campaign-create-panel[open] .campaign-create-summary:after{content:'−'}.campaign-create-summary small{font-weight:600;color:var(--muted)}.campaign-create-body{padding:16px 18px 18px}
.campaign-detail-layout{align-items:start}.campaign-mobile-status{border:1px solid var(--primary-line);background:var(--surface-soft);border-radius:var(--radius);padding:10px 12px;margin:10px 0 12px}.status-row{display:flex;justify-content:space-between;gap:10px;align-items:flex-start;padding:6px 0;border-bottom:1px solid var(--line)}.status-row:last-of-type{border-bottom:0}.status-row b{color:var(--primary-3)}.campaign-detail-map{height:160px;margin:8px 0 10px}.mobile-flow-steps{margin:8px 0 0;padding-left:20px;color:var(--muted)}.mobile-flow-steps li{margin:3px 0}.campaign-detail-actions{align-items:stretch}.campaign-detail-actions button{min-height:42px}.campaign-work-panel{min-height:70px}.create-record-card>button{width:100%;min-height:42px}.upload-box button{width:100%}.upload-count-box{margin-top:8px;background:var(--surface-soft)}
.quick-form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}
.quick-form .field{margin:0}
.quick-form .field:nth-child(4),.quick-form button{grid-column:1 / -1}
.quick-form input[type=file]{padding:10px;background:#fff;border:1px solid var(--line-strong);border-radius:var(--radius);width:100%;min-height:46px}
.record-create-form{display:grid;gap:10px}.record-create-form .field{margin:0}.record-create-form button{width:100%;min-height:44px}.record-create-status{min-height:24px;display:flex;align-items:center;gap:8px;font-weight:700}.mini-spinner{width:16px;height:16px;border-radius:50%;border:2px solid #dfeee5;border-top-color:var(--primary);animation:spin .8s linear infinite;flex:0 0 auto}.records-workspace{display:grid;gap:12px}.record-list-create-cta{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center;border:1px solid var(--line);background:#fff;border-radius:var(--radius);padding:12px}.record-list-create-cta p{margin:2px 0 0}.record-list-create-cta button{white-space:nowrap}.record-mobile-list{display:grid;gap:8px}.record-mobile-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;background:#fff;border:1px solid #e8f1ec;border-radius:10px;padding:8px 8px 8px 9px;box-shadow:0 1px 0 rgba(10,60,33,.04);min-width:0}.record-mobile-main{display:grid;grid-template-columns:46px minmax(0,1fr);gap:10px;align-items:center;min-width:0;width:100%;padding:0;border:0;background:transparent!important;color:var(--text)!important;text-align:left;box-shadow:none}.record-mobile-main:hover{text-decoration:none;background:transparent!important}.record-mobile-thumb{width:46px;height:42px;display:flex;align-items:center;justify-content:center;border-radius:7px;overflow:hidden;background:#f4f8f5;border:1px solid #edf3ef}.record-mobile-thumb .thumb,.record-mobile-thumb .evidence-thumb{width:100%;height:100%;object-fit:cover;border:0;border-radius:0}.record-mobile-text{display:grid;gap:2px;min-width:0}.record-mobile-text b,.record-mobile-text small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record-mobile-text b{color:var(--primary-3);font-size:14px}.record-mobile-text small{color:var(--muted);font-weight:600;font-size:12px}.record-mobile-meta{display:flex;gap:5px;align-items:center}.record-mobile-meta .pill{font-size:11px;padding:3px 7px;border:0}.record-list-actions.icon-actions{display:flex;gap:6px;align-items:center}.icon-btn{display:inline-flex;align-items:center;justify-content:center}.icon-actions .icon-btn{width:36px;height:36px;min-width:36px;min-height:36px;padding:0;border-radius:999px;font-size:22px;line-height:1;font-weight:900}.icon-actions .warn.icon-btn{font-size:20px}.record-list-create-cta b{display:block;color:var(--primary-3);margin-bottom:2px}.record-list-create-cta button{min-height:42px}.app-modal-record-create-page{width:min(560px,calc(100vw - 32px));max-height:min(92vh,760px)}.record-create-mobile-page{max-width:560px;margin:0 auto}.record-create-mobile-page .card{margin:0}.record-create-mobile-page h3{margin-top:0}
.field-hint{margin:6px 0 0;font-size:13px}
.selected-files{margin-top:8px;border:1px solid var(--line);border-radius:var(--radius);background:#fff;padding:8px}
.selected-files.empty{background:var(--surface-soft);color:var(--muted)}
.selected-files-summary{font-weight:800;color:var(--primary-3);margin-bottom:7px}
.selected-files-list{display:grid;gap:7px}
.selected-file{display:grid;grid-template-columns:44px minmax(0,1fr) auto;gap:8px;align-items:center;border:1px solid var(--line);border-radius:var(--radius);padding:6px;background:var(--surface-soft)}
.selected-file img,.file-chip{width:44px;height:44px;border-radius:var(--radius);object-fit:cover;background:#fff;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;font-weight:800;font-size:12px;color:var(--primary-3)}
.selected-file-meta{min-width:0;display:flex;flex-direction:column;gap:2px}.selected-file-meta b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.selected-file-meta small{color:var(--muted)}
.mini-btn{padding:5px 8px;min-height:30px}
.quick-upload-card{border-color:var(--primary-line)}
.quick-upload-card>.muted{margin-bottom:12px}
.quick-upload-card h3{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);font-size:16px}
.quick-upload-card h3:first-of-type{margin-top:12px}
.quick-upload-card .row{margin-bottom:14px}
.quick-upload-card .capture-box{background:var(--surface-soft);border-style:solid;margin-bottom:4px}
.quick-upload-card .selected-campaign{background:var(--primary-soft);margin-bottom:12px}
.history-card{padding:18px}
.history-list{display:flex;flex-direction:column;gap:10px}
.history-item{border:1px solid var(--line);background:#fff;border-radius:var(--radius);padding:12px;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px}
.history-title{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:2px}
.history-columns{display:grid;grid-template-columns:210px minmax(0,1fr);gap:12px;margin-top:10px}
.history-columns h3{font-size:13px;margin:0 0 6px;color:var(--primary-3)}
.history-actions{display:flex;align-items:flex-start}
.value-list{display:grid;grid-template-columns:minmax(110px,.35fr) minmax(0,1fr);gap:0;border:1px solid var(--line-strong);border-radius:var(--radius);overflow:hidden;margin:0;background:#fff}
.value-list dt,.value-list dd{padding:7px 8px;border-bottom:1px solid var(--line);margin:0;min-width:0}
.value-list dt{font-weight:700;background:var(--surface-soft);color:var(--primary-3)}
.value-list dd{overflow-wrap:anywhere}
.value-list dt:nth-last-child(-n+2),.value-list dd:nth-last-child(-n+2){border-bottom:0}
.history-item .thumb{width:160px;height:108px;border-radius:var(--radius)}

/* Mobile hamburger navigation */
.mobile-menu-toggle{display:none;align-items:center;gap:7px;white-space:nowrap}
.mobile-menu-toggle .hamburger{font-size:18px;line-height:1;font-weight:900;color:var(--primary-3)}
.nav-backdrop{display:none}

/* ---- Responsive ---- */
@media (min-width: 861px) and (max-width: 1180px){
  .layout{grid-template-columns:208px 1fr;gap:14px;padding:14px}
  .metric-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .dash-grid{grid-template-columns:1fr}
  .pipeline{grid-template-columns:repeat(2,1fr)}
}
@media (max-width: 980px){
  .surveyor-hero,.surveyor-grid{grid-template-columns:1fr}
  .campaign-form-layout{grid-template-columns:1fr}
  .location-button-row{grid-template-columns:1fr}
  .location-button-row button{width:100%}
  .quick-form{grid-template-columns:1fr 1fr}
  .history-columns{grid-template-columns:170px minmax(0,1fr)}
  .history-item .thumb{width:140px;height:96px}
}
@media (max-width: 860px){
  .app-shell{padding-bottom:0}
  .topbar{display:flex;align-items:center;gap:10px;position:sticky;top:0;z-index:45;background:#fff;box-shadow:0 1px 0 var(--line)}
  .brand{min-width:0;flex:1}.brand small{display:none}.brand-logo{width:30px;height:30px}
  .top-actions{margin-left:auto;flex-wrap:nowrap;gap:6px}
  .top-actions button{padding:8px 10px}
  .user-chip{display:none}
  .locale-control{padding:6px 7px}.locale-control span{display:none}
  .mobile-menu-toggle{display:inline-flex;min-height:36px;padding:8px 10px;border-color:var(--primary-line);background:var(--primary-soft);color:var(--primary-3)}
  .mobile-menu-label{font-size:13px;font-weight:800}
  .layout{display:block;padding:10px 10px 14px}
  .sidebar{position:fixed;top:57px;right:10px;left:auto;bottom:auto;width:min(320px,calc(100vw - 20px));max-height:calc(100vh - 72px);overflow:auto;z-index:50;margin:0;padding:10px;border-radius:var(--radius);background:#fff;box-shadow:var(--shadow-soft);transform:translateY(-8px) scale(.98);opacity:0;pointer-events:none;transition:opacity .14s ease,transform .14s ease}
  .sidebar.is-open{opacity:1;pointer-events:auto;transform:translateY(0) scale(1)}
  .nav-backdrop{display:block;position:fixed;inset:0;z-index:44;border:0;background:rgba(10,60,33,.28);padding:0;border-radius:0;box-shadow:none;color:transparent}
  .nav-title{display:block;margin:2px 4px 8px;font-size:13px}
  .nav{display:flex;flex-direction:column;gap:6px}
  .nav button{width:100%;min-height:42px;padding:10px 12px;text-align:left;justify-content:flex-start;font-size:13px;line-height:1.2;white-space:normal}
  .two-col,.record-editor,.review-controls{grid-template-columns:1fr}
  .group-summary-grid,.group-business-grid,.chat-workspace{grid-template-columns:1fr}
  .business-action-bar,.member-add-bar,.reference-upload-row{grid-template-columns:1fr}
  .business-action-bar button,.reference-upload-row button{width:100%}
  .group-chat-panel,.business-panel,.permission-editor{padding:12px}
  .pipeline{display:flex;overflow-x:auto;gap:9px;padding-bottom:2px;scroll-snap-type:x mandatory}
  .step{min-width:178px;scroll-snap-align:start;min-height:96px}
  .grid{grid-template-columns:1fr}
  .dashboard{gap:10px}
  .dash-hero{grid-template-columns:1fr;padding:16px}
  .dash-hero h1{font-size:23px}
  .hero-actions{justify-content:stretch}
  .hero-actions button,.mobile-cta button{flex:1;min-height:42px}
  .metric-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}
  .metric{padding:13px}.metric strong{font-size:24px}
  .dash-grid{grid-template-columns:1fr;gap:10px}
  .section-head{align-items:center}
  .surveyor-hero{padding:16px}.surveyor-hero h1{font-size:23px}
  .table-wrap{margin-left:-2px;margin-right:-2px}
  table{min-width:620px}
  .flash{top:62px}
}
@media (max-width: 720px){
  .list-toolbar{grid-template-columns:1fr}
  .list-toolbar.mobile-search-toolbar{grid-template-columns:minmax(0,1fr) 44px 44px}
  .pager{justify-content:flex-start}
  .otp-box .row{align-items:stretch}.otp-box input,.otp-box button{width:100%}
  .quick-form{grid-template-columns:1fr}
  .history-item{grid-template-columns:1fr}
  .history-actions button{width:100%}
  .history-columns{grid-template-columns:1fr}
  .history-item .thumb{width:100%;height:auto;max-height:220px}
  .thumb{width:64px;height:48px}
  .campaign-detail-actions{display:grid;grid-template-columns:1fr;gap:8px}.campaign-detail-actions button,.record-primary-actions button{width:100%}
  .create-record-card{display:none}
  .record-list-create-cta{grid-template-columns:1fr;padding:11px}.record-list-create-cta button{width:100%;min-height:44px}.record-list-create-cta p{font-size:13px}
  .record-create-page-backdrop{align-items:stretch;padding:0;background:var(--bg)}.app-modal-record-create-page{width:100%;height:100dvh;height:var(--modal-vh,100dvh);max-height:none;border:0;border-radius:0;box-shadow:none}.app-modal-record-create-page .app-modal-head{position:sticky;top:0;z-index:5;background:#fff}.app-modal-record-create-page .app-modal-head h2{font-size:16px}.app-modal-record-create-page .app-modal-head button{font-size:13px;line-height:1.2;min-width:auto;padding:8px 10px}.app-modal-record-create-page .app-modal-body{padding:10px;background:var(--bg);flex:1;overflow:auto}.record-create-mobile-page{max-width:none}.modal-record-create-form input{font-size:16px}.modal-record-create-form button{min-height:46px}
  .campaign-create-action{display:grid;grid-template-columns:1fr;gap:10px}.campaign-create-action button{width:100%}
  .campaign-create-summary{padding:13px 14px}.campaign-create-summary small,.mobile-disclosure>summary small{display:none}.campaign-create-body{padding:13px 14px 14px}
  .campaign-mobile-status{padding:9px}.status-row{display:grid;grid-template-columns:1fr;gap:4px}.campaign-detail-map{height:130px}.mobile-flow-steps{font-size:13px}
  .history-disclosure{margin-bottom:10px}.history-list{gap:8px}.history-item{padding:10px}.history-title{margin-bottom:0}
  .ai-review-panel{padding:10px;margin:10px 0}.review-head{display:grid;grid-template-columns:1fr;gap:8px}.review-head p{display:none}
  .resource-status-disclosure,.record-json-disclosure{margin-top:8px}.upload-box{padding:10px}.upload-box p{display:none}
  .admin-create-disclosure{margin-bottom:10px}
}
@media (max-width: 520px){
  html,body{font-size:13px}
  .topbar{padding:9px 10px}
  .top-actions{gap:5px}.top-actions button{padding:8px 9px}
  .mobile-menu-toggle{padding:8px 9px}.mobile-menu-label{display:none}
  .sidebar{top:54px;right:8px;width:min(292px,calc(100vw - 16px))}
  .layout{padding:8px}
  .brand{font-size:14px}.brand-logo{width:28px;height:28px}
  .card{padding:14px}.card h1{font-size:19px}.card h2{font-size:17px}
  .app-modal-group-page .app-modal-head{align-items:flex-start;flex-direction:column}
  .app-modal-group-page .app-modal-head h2{white-space:normal;line-height:1.25}
  .app-modal-group-page .app-modal-head button{width:100%;text-align:center}
  .group-summary-grid{grid-template-columns:1fr}
  .chat-composer{grid-template-columns:minmax(0,1fr) 38px;border-radius:16px;padding:7px 7px 7px 12px}
  .chat-send-btn{width:38px;height:38px;min-width:38px;min-height:38px;font-size:18px}
  .chat-composer textarea{font-size:16px;min-height:36px}
  .chat-history{padding:9px;max-height:360px}
  .chat-bubble.user,.chat-bubble.assistant{max-width:100%}
  .dash-hero h1{font-size:22px}
  .metric-grid{grid-template-columns:1fr 1fr}.metric strong{font-size:22px}
  .kv{grid-template-columns:1fr}.kv b{border-bottom:0}.kv div{border-bottom:1px solid var(--line)}
  .login-wrap{padding:16px 10px}.login.card{padding:22px 18px}.login-logo{width:46px;height:46px}.login .logo{font-size:23px}
  .table-wrap{overflow:visible;border:0;background:transparent;border-radius:0;margin-left:0;margin-right:0}
  .table-wrap table,.compact-table table{min-width:0;width:100%;display:block;border-collapse:separate;border-spacing:0;background:transparent}
  .table-wrap thead{display:none}
  .table-wrap tbody,.table-wrap tr,.table-wrap td{display:block;width:100%}
  .table-wrap tbody{display:flex;flex-direction:column;gap:8px}
  .table-wrap tr{border:1px solid var(--line-strong);border-radius:var(--radius);overflow:hidden;background:#fff}
  .table-wrap td{border:0;border-bottom:1px solid var(--line);padding:8px 10px;background:#fff;overflow-wrap:anywhere}
  .table-wrap td:last-child{border-bottom:0}
  .table-wrap tbody tr:nth-child(even) td,.table-wrap tbody tr:hover td{background:#fff}
  .table-wrap td::before{content:attr(data-label);display:block;margin-bottom:3px;color:var(--primary-3);font-size:12px;font-weight:800}
  .table-wrap td[data-label=""]::before,.table-wrap td[data-empty="true"]::before{display:none}
  .table-wrap td[data-empty="true"]{padding:0}
  .table-wrap .row{align-items:stretch}
  .table-wrap .row button,.table-wrap td>button{width:100%}
  /* iOS tự phóng to khi focus input có font < 16px → ép MỌI ô nhập ≥16px trên mobile (gồm ô sửa giá trị trường .rf-input, ô câu hỏi sa_, v.v.). */
  input,select,textarea,.field input,.field select,.field textarea,.rf-input input{font-size:16px}
  .campaign-map-box{min-height:180px}.campaign-map-preview{height:200px}.map-placeholder{min-height:180px}
  .session-map,.campaign-detail-map{width:100%;height:135px}.gps-admin-cell{min-width:0}.gps-admin-cell small{overflow-wrap:anywhere}
  .selected-file{grid-template-columns:40px minmax(0,1fr) auto}.selected-file img,.file-chip{width:40px;height:40px}
}

/* Floating background-batch OCR badge (global, survives view switches) */
.batch-badge{position:fixed;right:16px;bottom:16px;z-index:60;display:inline-flex;align-items:center;gap:9px;background:#fff;border:1px solid var(--line-strong);border-left:4px solid var(--primary);border-radius:10px;padding:10px 14px;box-shadow:var(--shadow-soft);font-weight:700;font-size:13px;color:var(--primary-3);cursor:pointer;max-width:min(320px,calc(100vw - 32px))}
.batch-badge:hover{border-color:var(--primary-line)}
.batch-badge.is-done{border-left-color:var(--ok)}
.batch-badge-dot{width:10px;height:10px;border-radius:50%;background:var(--accent);flex:0 0 auto}
.batch-badge.is-active .batch-badge-dot{background:var(--primary);animation:batchpulse 1s ease-in-out infinite}
.batch-badge.is-done .batch-badge-dot{background:var(--ok);animation:none}
@keyframes batchpulse{0%,100%{opacity:1;transform:scale(1)}50%{opacity:.35;transform:scale(.65)}}
@media (max-width:860px){.batch-badge{bottom:auto;top:64px;right:8px;padding:8px 11px}}

.work-loading-card{min-height:136px;align-items:center;justify-content:center;background:#fff;border-radius:8px}.work-loading-card .spinner{width:34px;height:34px;border-width:3px}.answer-review-list{display:grid;gap:10px}.answer-review-card{border:0;background:#fff;border-radius:8px;box-shadow:0 1px 0 rgba(10,60,33,.07);padding:12px}.answer-review-card-head{display:flex;justify-content:space-between;gap:10px;align-items:center;margin-bottom:10px}.answer-index{display:inline-flex;align-items:center;justify-content:center;min-width:36px;height:28px;padding:0 10px;border-radius:999px;background:#eef7f1;color:var(--primary-3);font-weight:900}.answer-review-fields{display:grid;grid-template-columns:92px minmax(0,1.3fr) minmax(130px,.55fr);gap:10px;align-items:start}.answer-review-fields .field{margin:0}.answer-question-field,.answer-value-field,.answer-note-field{grid-column:auto}.answer-note-field{grid-column:2 / -1}.answer-review-help{margin:2px 0 0}.answer-review-card.is-removed,.answer-review-fields.is-removed{opacity:.45}.reading-banner{display:grid;grid-template-columns:24px minmax(0,1fr);gap:10px;align-items:center;background:#f4fbf6;border:0;border-radius:8px;padding:11px 12px;color:var(--primary-3)}.reading-banner small{display:block;color:var(--muted);font-weight:600;margin-top:2px}.resource-status-panel{display:grid;gap:10px}.resource-status-head{background:#fff;border-radius:8px;padding:10px 11px;box-shadow:0 1px 0 rgba(10,60,33,.05)}.record-upload-status{min-height:28px;display:flex;align-items:center;gap:8px;font-weight:700}.capture-progress{display:flex;gap:12px;align-items:center}.spinner{width:26px;height:26px;border-radius:50%;border:3px solid #dfeee5;border-top-color:var(--primary);animation:spin .8s linear infinite;flex:0 0 auto}@keyframes spin{to{transform:rotate(360deg)}}
@media(max-width:860px){.answer-review-fields{grid-template-columns:1fr;gap:9px}.answer-note-field,.answer-question-field,.answer-value-field{grid-column:auto}.answer-review-card{padding:11px}.review-controls{grid-template-columns:1fr}.ai-review-panel{border-color:transparent;box-shadow:0 1px 0 rgba(10,60,33,.05);padding:11px}.work-loading-card{min-height:150px}.capture-progress{align-items:flex-start}.campaign-work-panel{min-height:130px}}

.record-upload-flow{display:grid;gap:12px;border:0;background:#fff;box-shadow:0 1px 0 rgba(10,60,33,.05);padding:13px;margin:0 0 10px}.upload-flow-head{display:grid;grid-template-columns:30px minmax(0,1fr);gap:10px;align-items:start}.upload-flow-head p{margin:3px 0 0}.step-badge{width:28px;height:28px;border-radius:999px;background:var(--primary);color:#fff;display:inline-flex;align-items:center;justify-content:center;font-weight:900}.upload-drop-card{display:grid;grid-template-columns:42px minmax(0,1fr);gap:10px;align-items:center;border:1px dashed var(--primary-line);border-radius:7px;background:#f8fcf9;padding:13px;cursor:pointer;color:var(--primary-3);font-weight:900}.upload-drop-card small{grid-column:2;color:var(--muted);font-weight:600}.upload-drop-icon{width:40px;height:40px;border-radius:8px;background:#e8f6ee;color:var(--primary);display:flex;align-items:center;justify-content:center;font-size:28px;line-height:1}.record-upload-status{display:flex;align-items:center;gap:8px;min-height:24px;font-weight:700}.record-upload-flow button#record_upload_btn{width:100%;min-height:44px}.upload-count-box.empty{display:grid;gap:3px;text-align:left}.upload-count-box.empty b{color:var(--primary-3)}.upload-count-box.empty small{color:var(--muted)}.resource-status-panel{display:grid;gap:10px}.resource-status-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}.resource-status-head p{margin:3px 0 0}.reading-banner{display:grid;grid-template-columns:20px minmax(0,1fr);gap:9px;align-items:start;background:#fff8e8;border:1px solid #f3dfac;color:#7d560d;border-radius:7px;padding:10px}.reading-banner small{display:block;margin-top:2px}.resource-card-list{display:grid;gap:10px}.resource-card{display:grid;grid-template-columns:150px minmax(0,1fr);gap:10px;background:#fff;border:0;border-radius:7px;box-shadow:0 1px 0 rgba(10,60,33,.07);padding:9px;overflow:hidden}.resource-card-preview{min-width:0}.resource-image-link{display:block;width:100%;height:280px;background:#f6faf7;border-radius:6px;overflow:auto;text-decoration:none;touch-action:pan-x pan-y}.resource-image-hint{display:block;padding:5px 7px;font-size:12px;font-weight:800;color:var(--primary);background:#eef8f2;text-align:center}.resource-image{display:block;width:100%;height:calc(100% - 28px);object-fit:contain;background:#f8faf9}.resource-card-body{display:grid;gap:7px;align-content:start;min-width:0}.resource-card-title{display:flex;justify-content:space-between;gap:8px;align-items:flex-start}.resource-card-title b{min-width:0;overflow-wrap:anywhere;color:var(--primary-3)}.resource-meta{display:flex;gap:8px;flex-wrap:wrap;color:var(--muted);font-size:12px}.pdf-preview,.image-fallback{height:132px;border-radius:6px;background:#f6faf7;color:var(--primary-3);display:flex;flex-direction:column;align-items:center;justify-content:center;text-decoration:none;font-weight:900}.pdf-preview span{font-size:22px}.pdf-preview small,.image-fallback small{color:var(--muted);font-weight:600;margin-top:4px}.error-text{color:var(--danger);background:#fff4f3}.selected-files .selected-file img{object-fit:cover}
@media(max-width:860px){.record-upload-flow{padding:12px;margin:0 0 10px}.upload-drop-card{grid-template-columns:38px minmax(0,1fr);padding:12px}.upload-drop-card small{grid-column:1 / -1}.resource-status-head{grid-template-columns:1fr}.resource-status-head button{width:100%}.resource-card{grid-template-columns:1fr;padding:8px}.resource-image-link,.pdf-preview,.image-fallback{height:min(68vh,720px)}.resource-card-title{display:grid;grid-template-columns:1fr;gap:6px}.selected-files-list{grid-template-columns:1fr}.selected-file{grid-template-columns:64px minmax(0,1fr) auto}.selected-file img,.file-chip{width:64px;height:64px}.upload-box p{display:block!important}}
@media(max-width:520px){.resource-image-link,.pdf-preview,.image-fallback{height:min(70vh,760px)}.record-editor-side{display:grid;gap:10px}.resource-status-disclosure{margin-top:0}.selected-file-meta b{white-space:normal}.upload-flow-head{grid-template-columns:28px minmax(0,1fr)}}

/* Evidence images (mỗi hồ sơ lưu ảnh phiếu làm bằng chứng) */
.evidence-thumb{width:64px;height:48px;object-fit:cover}
.evidence-none{font-size:13px}
.evidence-cover{display:block;margin:0 0 11px;border:1px solid var(--line-strong);border-radius:var(--radius);overflow:hidden;max-width:280px}
.evidence-cover img{display:block;width:100%;height:auto;max-height:220px;object-fit:cover}
@media (max-width:520px){.evidence-thumb{width:54px;height:42px}.evidence-cover{max-width:100%}}


@media(max-width:760px){
  .app-modal-backdrop{align-items:stretch;padding:0;background:#fff}
  .app-modal,.app-modal-half{width:100%;height:100dvh;height:var(--modal-vh,100dvh);max-height:none;border:0;border-radius:0;box-shadow:none}
  .app-modal-head{position:sticky;top:0;z-index:2;padding:12px 14px}
  .app-modal-body{padding:12px;overflow:auto}
  .app-modal-group-page .app-modal-head{padding:10px 12px;gap:8px}
  .app-modal-group-page .app-modal-head h2{font-size:16px}
  .app-modal-group-page .app-modal-head button{padding:8px 9px;font-size:13px}
  .app-modal-group-page .app-modal-body{padding:10px;background:var(--bg)}
  .group-page-body{max-width:none}
  .group-summary-grid{grid-template-columns:1fr 1fr}
  .app-modal-body .record-editor{grid-template-columns:1fr}
  .campaign-create-backdrop{align-items:center;justify-content:center;padding:12px;background:rgba(10,24,44,.42)}
  .campaign-create-backdrop .app-modal-campaign-create{width:100%;height:auto;max-height:92dvh;border:1px solid var(--line-strong);border-radius:8px;box-shadow:0 18px 50px rgba(14,36,69,.18)}
  .campaign-create-backdrop .app-modal-body{padding:12px;background:var(--bg)}
  .campaign-create-backdrop .campaign-form-layout{grid-template-columns:1fr}
  .campaign-create-backdrop .campaign-map-preview{height:210px}
  .modal-actions{bottom:-12px;margin:0 -12px -12px;padding:10px 12px}.modal-actions button{flex:1}
}

/* Commercial-grade campaign location picker */
.location-picker-shell{position:relative;border:1px solid #dce8df;border-radius:6px;overflow:hidden;background:#fff;margin-bottom:10px}
.location-picker-shell .campaign-map-box{border:0;border-radius:0;margin:0;min-height:300px}
.location-picker-shell .campaign-map-preview{height:320px;cursor:grab;touch-action:none;user-select:none}
.location-picker-shell .campaign-map-preview.is-dragging{cursor:grabbing}
.location-picker-shell .map-tile-layer{will-change:transform;transition:none}
.location-picker-shell .map-pin{width:28px;height:28px;box-shadow:0 8px 20px rgba(30,45,36,.28)}
.location-picker-shell .map-pin:before{content:'';position:absolute;left:50%;bottom:-8px;transform:translateX(-50%) rotate(45deg);width:10px;height:10px;background:#d92d20;border-right:2px solid #fff;border-bottom:2px solid #fff;border-radius:0 0 2px 0}
.location-picker-shell .map-pin:after{inset:6px;z-index:1}
.location-picker-shell .map-crosshair{width:46px;height:46px;border-color:rgba(18,145,76,.28)}
.location-picker-shell .map-crosshair:before{top:-8px;height:62px}.location-picker-shell .map-crosshair:after{left:-8px;width:62px}
.selected-location-strip{display:flex;justify-content:space-between;gap:10px;align-items:center;padding:9px 11px;background:#fff;border-top:1px solid #dce8df;color:var(--muted);font-size:13px}
.selected-location-strip b{color:var(--primary-3);white-space:nowrap}.selected-location-strip span{text-align:right;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.location-results{border:1px solid var(--line);border-radius:6px;background:#fff;overflow:hidden;box-shadow:0 8px 24px rgba(10,60,33,.08)}
.location-results-head{padding:9px 11px;background:var(--surface-soft);border-bottom:1px solid var(--line);font-weight:800;color:var(--primary-3);font-size:13px}
.location-result{border:0;border-bottom:1px solid var(--line);border-radius:0;padding:11px 92px 11px 12px;background:#fff;box-shadow:none}
.location-result:last-child{border-bottom:0}.location-result.is-suggested{background:#f8fcfa}.location-result em{position:absolute;right:12px;top:50%;transform:translateY(-50%);font-style:normal;font-size:12px;font-weight:900;color:var(--primary);border:1px solid var(--primary-line);border-radius:999px;padding:4px 8px;background:#fff}.location-result:after{display:none}
.location-result:hover em{background:var(--primary);border-color:var(--primary);color:#fff}.location-result-title{font-size:14px}.location-result small{padding-right:8px}
@media (max-width:520px){.location-picker-shell .campaign-map-box{min-height:240px}.location-picker-shell .campaign-map-preview{height:250px}.selected-location-strip{display:grid;grid-template-columns:1fr}.selected-location-strip span{text-align:left;white-space:normal}.location-result{padding-right:12px}.location-result em{position:static;display:inline-flex;transform:none;margin-top:7px}}

/* Smooth campaign delete confirmation */
.app-modal-confirm{width:min(500px,calc(100vw - 32px));max-height:min(92vh,620px);border:0;border-radius:10px;box-shadow:0 18px 44px rgba(13,31,52,.18);flex:0 0 auto}
.app-modal-confirm .app-modal-head{padding:18px 22px 8px;border-bottom:0;background:#fff}.app-modal-confirm .app-modal-head h2{font-size:19px;letter-spacing:-.01em}.app-modal-confirm .app-modal-head button{min-width:34px;width:34px;height:34px;padding:0;border:0;background:#f4f7f5;color:var(--primary);border-radius:50%;font-size:22px}.app-modal-confirm .app-modal-head button:hover{background:#e9f1ec}.app-modal-confirm .app-modal-body{padding:0 22px 22px;background:#fff}
.delete-confirm-backdrop{background:rgba(11,24,38,.38);backdrop-filter:blur(2px);align-items:center;justify-content:center;padding:20px}
/* In-app confirm/prompt dialog (thay confirm()/prompt() trình duyệt). z-index trên modal(1000) và toast(1200). */
.ui-dialog-backdrop{position:fixed;inset:0;z-index:1500;background:rgba(11,24,38,.42);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;padding:20px;animation:toastIn .14s ease-out}
.ui-dialog{flex:0 0 auto}
.ui-dialog-body{display:grid;gap:14px}
.ui-dialog-copy{margin:0;line-height:1.5;color:var(--text);font-size:15px}
.ui-dialog-field{margin:0}
.ui-dialog-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:2px;position:static}
.ui-dialog-actions button{min-height:40px;border-radius:7px;padding:8px 18px}
@media(max-width:520px){.ui-dialog-actions{display:grid;grid-template-columns:1fr 1fr}.ui-dialog-actions button{width:100%}}
/* Surveyor: lưới card đợt khảo sát — số card/hàng tự theo độ rộng màn hình, có phân trang */
.surveyor-card-workspace{display:grid;gap:12px}
.surveyor-cards-block{display:grid;gap:12px}
.surveyor-card-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px}
.surveyor-campaign-card{gap:12px;align-content:start}
.surveyor-card-session{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.surveyor-card-session small{font-weight:800;text-transform:none;letter-spacing:.04em;font-size:11px}
.surveyor-card-detail{justify-self:start;align-self:start;width:fit-content;max-width:100%;background:none;border:0;padding:2px 8px 2px 0;margin:-2px 0;min-height:auto;color:var(--primary);font-weight:700;display:inline-flex;align-items:center;gap:6px;cursor:pointer;transition:color .15s ease}
.surveyor-card-detail i{font-size:11px;transition:transform .15s ease}
.surveyor-card-detail:hover{color:var(--primary-3)}
.surveyor-card-detail:hover i{transform:translateX(3px)}
.surveyor-card-detail:focus-visible{outline:2px solid var(--primary);outline-offset:2px;border-radius:4px}
.surveyor-campaign-card .campaign-card-actions button{display:inline-flex;align-items:center;justify-content:center;gap:7px}
/* Khai báo trường dữ liệu của đợt: tên + bắt buộc/tùy chọn + xóa */
.col-def-field .col-def-hint{margin:0 0 8px}
.col-def-list{display:grid;gap:8px}
.col-def-row{display:grid;grid-template-columns:minmax(0,1fr) 200px 40px;gap:8px;align-items:center}
.col-def-row .col-def-name,.col-def-row .col-def-required{border:1px solid var(--line-strong);padding:9px 10px;border-radius:var(--radius);background:#fff;color:var(--text);width:100%}
.col-def-row .col-def-name:focus,.col-def-row .col-def-required:focus{outline:0;border-color:var(--primary);box-shadow:0 0 0 3px rgba(18,145,76,.18)}
.col-def-remove{min-width:40px;width:40px;height:40px;padding:0;display:inline-flex;align-items:center;justify-content:center}
.col-def-add{margin-top:10px;display:inline-flex;align-items:center;gap:7px}
.record-create-status.error{color:var(--danger)}
@media(max-width:520px){.col-def-row{grid-template-columns:minmax(0,1fr) 40px;grid-template-areas:'name remove' 'req req';gap:6px}.col-def-row .col-def-name{grid-area:name}.col-def-row .col-def-remove{grid-area:remove}.col-def-row .col-def-required{grid-area:req}}
/* Badge mở rộng */
.pill.slate{color:#5b6b63;border-color:#dbe3dd;background:#eef2ef}
.pill.info{color:#2563eb;border-color:#bcd0f7;background:#e8effd}
/* Bảng hồ sơ truyền thống FULL BORDER (desktop/iPad) */
.records-table-wrap{overflow-x:auto;border:1px solid var(--line-strong);border-radius:8px;background:#fff;-webkit-overflow-scrolling:touch}
.records-table{width:100%;border-collapse:collapse;font-size:13px}
.records-table th,.records-table td{border:1px solid var(--line-strong);padding:9px 11px;text-align:left;vertical-align:middle}
.records-table thead th{position:sticky;top:0;z-index:1;background:#f5f6f8;color:#374151;font-size:12px;font-weight:700;text-transform:none;letter-spacing:0;white-space:nowrap}
.records-table tbody tr:nth-child(even){background:#fafcfb}
.records-table tbody tr:hover{background:var(--primary-soft);cursor:pointer}
.records-table tbody tr.is-selected{background:#e6f4ed;box-shadow:inset 3px 0 0 var(--primary)}
.records-table td.records-thumb-cell{width:58px}
.records-table .evidence-thumb{width:42px;height:42px;object-fit:cover;border-radius:6px;border:1px solid var(--line);display:block}
.records-table .evidence-none{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:6px;background:var(--surface-soft);color:var(--muted)}
.records-table td.records-action-cell{white-space:nowrap}
.records-table .records-action-cell .row{display:flex;gap:6px}
.records-table .mini-btn{padding:5px 10px;font-size:12px;min-height:32px}
.records-table .records-empty-cell{padding:0}
/* Toolbar + tab lọc hồ sơ */
.records-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:10px}
.records-search{flex:1 1 240px;display:flex;align-items:center;gap:8px;border:1px solid var(--line-strong);border-radius:8px;padding:0 11px;background:#fff;min-height:42px}
.records-search i{color:var(--muted)}
.records-search input{border:0;outline:0;background:none;width:100%;padding:9px 0;font:inherit;color:var(--text)}
.records-topic-filter{flex:0 1 220px;margin:0;min-width:190px}
.records-topic-filter span{font-weight:800;color:var(--primary-3);font-size:13px}
.records-topic-filter select{min-height:42px;width:100%;background:#fff}
.records-toolbar-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.records-create-btn,.gps-sim-toggle{display:inline-flex;align-items:center;gap:7px;white-space:nowrap}
.gps-sim-toggle.ok-tone{border-color:#a9dcc1;color:var(--ok)}
.gps-sim-toggle.danger{border-color:#eeb3ac;color:var(--danger);background:#fff}
.records-filter-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px;overflow-x:auto;scrollbar-width:none;-ms-overflow-style:none}
.records-filter-tabs::-webkit-scrollbar{display:none;width:0;height:0}
.records-filter-tab{background:#fff;border:1px solid var(--line-strong);border-radius:999px;color:var(--muted);font-weight:700;padding:6px 12px;min-height:auto;display:inline-flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap;font-size:13px;transition:background .14s ease,border-color .14s ease,color .14s ease}
.records-filter-tab:hover{border-color:var(--primary-line);color:var(--primary-3)}
.records-filter-tab.is-active{background:var(--primary);border-color:var(--primary);color:#fff}
.records-filter-tab .tab-count{background:rgba(13,40,28,.08);color:inherit;border-radius:999px;font-size:11px;padding:1px 7px;font-weight:800;min-width:18px;text-align:center}
.records-filter-tab.is-active .tab-count{background:rgba(255,255,255,.28)}
@media(max-width:520px){.records-toolbar{flex-direction:column;align-items:stretch}.records-search,.records-topic-filter{flex:0 0 auto;width:100%;min-width:0}.records-toolbar-actions{justify-content:space-between}.records-toolbar-actions:empty{display:none}.records-create-btn{flex:1}.records-filter-tabs{flex-wrap:wrap;gap:8px}.records-filter-tab{white-space:nowrap;padding:6px 11px}}
/* Bàn làm việc đợt: tools row gọn + chip phiên (đồng hồ) thay layout 2 cột cũ */
.campaign-workbench{display:grid;gap:12px}
.campaign-work-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.campaign-work-tools button{display:inline-flex;align-items:center;gap:7px}
.campaign-work-tools button.is-active{background:var(--primary);border-color:var(--primary);color:#fff}
.cw-tools-spacer{flex:1 1 auto}
.session-chip{display:inline-flex;align-items:center;gap:6px;border:1px solid var(--line-strong);border-radius:999px;padding:6px 12px;font-weight:800;font-size:13px;background:var(--surface-soft);color:var(--muted)}
.session-chip.is-open{border-color:#a9dcc1;background:#eef9f3;color:var(--ok)}
.session-chip-timer{font-variant-numeric:tabular-nums}
.campaign-map-modal-body{display:grid;gap:12px}
.campaign-map-modal-body .status-row{display:flex;justify-content:space-between;gap:10px;align-items:center}
@media(max-width:520px){.cw-tools-spacer{display:none}.campaign-work-tools{gap:6px}}
/* Modal tạo hồ sơ: banner vùng + ghi chú ngoài phiên + mã readonly + 2 nút */
.zone-banner{display:flex;align-items:center;gap:8px;border-radius:8px;padding:9px 11px;font-weight:700;font-size:13px;margin-bottom:6px}
.zone-banner.zone-in{background:#eef9f3;color:var(--ok);border:1px solid #a9dcc1}
.zone-banner.zone-out{background:#fdf3f2;color:var(--danger);border:1px solid #eeb3ac}
.zone-banner.zone-auto{background:var(--surface-soft);color:var(--muted);border:1px solid var(--line-strong)}
.zone-banner.record-finalized-banner{background:var(--primary-soft);color:var(--primary-3);border:1px solid var(--primary-line)}
.create-session-note{display:flex;align-items:flex-start;gap:8px;background:#fff8e6;color:var(--warn);border:1px solid #ebd08e;border-radius:8px;padding:9px 11px;font-size:13px;font-weight:700;margin-bottom:6px}
.create-session-note-body{display:flex;flex-direction:column;gap:8px;flex:1;min-width:0}
.create-session-checkin-btn{align-self:flex-start;display:inline-flex;align-items:center;gap:6px;background:var(--primary);border:1px solid var(--primary);color:#fff;padding:7px 13px;min-height:auto;font-size:13px;font-weight:800;border-radius:7px;cursor:pointer}
.create-session-checkin-btn:hover{background:var(--primary-3);border-color:var(--primary-3)}
.readonly-input{background:var(--surface-soft);color:var(--muted);font-weight:700;cursor:default}
.label-hint{color:var(--muted);font-weight:600;font-size:11px}
.create-record-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px}
.create-record-actions button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-width:150px}
/* Modal chi tiết: thông tin sửa được + bảng OCR full-border + cảnh báo vùng */
.record-info-editor{display:grid;gap:8px;margin-bottom:8px}
.record-zone-warning{margin-bottom:8px}
/* Tóm tắt trường bắt buộc + bảng giá trị các trường hồ sơ (1 dòng = 1 trường: nhãn · giá trị sửa được · tình trạng) */
.record-required-summary{display:flex;align-items:center;gap:8px;border-radius:8px;padding:9px 11px;margin:0 0 10px;font-weight:700;font-size:13px}
.record-required-summary.is-ok{background:#eef8f2;color:var(--primary-3)}
.record-required-summary.is-warn{background:#fff4d6;color:#7d560d}
.record-required-summary.is-none{background:var(--surface-soft);color:var(--muted)}
/* Thanh xử lý gọn cho người dùng non-tech (đang đọc / đã xong). */
.proc-bar{display:grid;gap:7px;border-radius:8px;padding:11px 12px;margin:0 0 10px;border:1px solid var(--line)}
.proc-bar-head{display:flex;align-items:center;gap:9px;font-size:13.5px}
.proc-bar-head b{color:var(--primary-3)}
.proc-bar-head .mini-spinner{margin:0}
.proc-bar .fa-circle-check{color:var(--ok)}
.proc-bar .fa-circle-exclamation{color:var(--danger)}
.proc-track{height:7px;border-radius:999px;background:#e8efe9;overflow:hidden}
.proc-fill{height:100%;border-radius:999px;background:var(--primary);transition:width .4s ease}
.proc-sub{color:var(--muted);font-weight:600;line-height:1.35}
.proc-bar.is-working{background:#fff8e8;border-color:#f3dfac}
.proc-bar.is-working .proc-fill{background:var(--accent)}
.proc-bar.is-done{background:#eef8f2;border-color:var(--primary-line)}
.proc-bar.is-done .proc-bar-head b{color:var(--primary-3)}
.proc-bar.is-partial{background:#fff8e8;border-color:#f3dfac}
.proc-bar.is-error{background:#fdf3f2;border-color:#eeb3ac}
.proc-bar.is-error .proc-fill{background:var(--danger)}
.proc-bar.is-empty{display:flex;align-items:center;gap:9px;background:var(--surface-soft);color:var(--muted);font-weight:600;font-size:13px}
.record-fields-editor{display:grid;gap:8px;margin:0 0 6px}
.record-field-row{display:grid;grid-template-columns:minmax(150px,.72fr) minmax(0,1.3fr) auto;gap:10px;align-items:center;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:#fff}
.record-field-row.is-missing{border-color:#f3c7c2;background:#fff6f5}
.record-field-row .rf-label{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px;min-width:0}
.record-field-row .rf-name{font-weight:700;color:var(--primary-3);overflow-wrap:anywhere}
.record-field-row .rf-type{font-size:11px;color:var(--muted);font-weight:600}
.record-field-row .rf-input input{width:100%}
.record-field-row .rf-value{min-width:0;overflow-wrap:anywhere;color:var(--text)}
.record-field-row .rf-status{justify-self:end}
.record-field-row .rf-status .pill{white-space:nowrap}
/* Mobile: thanh hành động đáy cố định + thẻ hồ sơ nhiều badge */
.mobile-action-bar{display:none}
@media(max-width:760px){
  .mobile-action-bar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:55;gap:8px;padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:#fff;border-top:1px solid var(--line-strong);box-shadow:0 -4px 16px rgba(10,60,33,.10)}
  .mobile-action-bar button{flex:1;display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:46px;font-weight:800}
  .mobile-action-bar .mab-create{flex:1.5}
  /* Nút kết thúc phiên: màu đỏ để phân biệt rõ với nút tạo hồ sơ (xanh) */
  .mobile-action-bar .mab-session-end{background:var(--danger);border-color:var(--danger);color:#fff}
  .mobile-action-bar .mab-session-end:hover{background:#a5301f;border-color:#a5301f}
  .campaign-workspace-page{padding-bottom:76px}
  .record-mobile-meta{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
}
/* Menu trái có icon; iPad (768–1024px) thu còn icon-only để nhường chỗ cho bảng */
.nav button{display:flex;align-items:center;gap:10px}
.nav button i{width:18px;text-align:center;font-size:15px;flex:0 0 auto}
@media(min-width:761px) and (max-width:1024px){
  .layout{grid-template-columns:60px minmax(0,1fr);gap:12px;padding:12px}
  .sidebar{padding:8px 5px}
  .nav-title{display:none}
  .nav button{justify-content:center;padding:12px 6px;text-align:center}
  .nav button .nav-btn-label{display:none}
  .nav button i{font-size:18px}
}
/* Empty state cho danh sách thẻ mobile (hết box trống) */
.records-mobile-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;text-align:center;padding:30px 16px;color:var(--muted)}
.records-mobile-empty i{font-size:26px;color:var(--line-strong)}
.records-mobile-empty b{color:var(--primary-3);font-size:15px}
.records-mobile-empty p{margin:0;font-size:13px;max-width:260px;line-height:1.4}
/* Mobile: dọn shell — VI/Đăng xuất vào menu ☰, header đợt gọn */
.sidebar-footer{display:none}
@media(max-width:760px){
  .topbar .top-actions .user-chip,.topbar .top-actions .locale-control,.topbar .top-actions .topbar-logout{display:none}
  .campaign-workspace-title small{display:none}
  .campaign-workspace-title h1{font-size:16px;line-height:1.22}
  .campaign-workspace-title p{font-size:12px}
  .sidebar-footer{display:grid;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}
  .sidebar-user{font-weight:800;color:var(--primary-3);font-size:13px;padding:0 4px}
  .sidebar-locale{display:flex;align-items:center;justify-content:space-between;gap:8px;font-weight:700;color:var(--muted);font-size:13px;padding:0 4px}
  .sidebar-locale select{border:1px solid var(--line-strong);border-radius:7px;padding:6px 8px;background:#fff;font-weight:700}
  .sidebar-logout{display:inline-flex;align-items:center;justify-content:center;gap:7px;width:100%;min-height:42px}
}
/* Mobile field-mode: thẻ trạng thái gom (vùng GPS + ca + đồng hồ) + thẻ hồ sơ nhẹ */
.mobile-status-card{display:none}
@media(max-width:760px){
  .mobile-status-card{display:grid;gap:8px;background:#fff;border:1px solid var(--line-strong);border-radius:12px;padding:11px;box-shadow:0 1px 0 rgba(10,60,33,.04)}
  .mzone{display:flex;align-items:center;gap:8px;border-radius:9px;padding:9px 11px;font-weight:800;font-size:13px;border:1px solid;width:100%;text-align:left;cursor:pointer}
  .mzone-in{background:#eef9f3;color:var(--ok);border-color:#a9dcc1}
  .mzone-out{background:#fdf3f2;color:var(--danger);border-color:#eeb3ac}
  .mzone-auto{background:var(--surface-soft);color:var(--muted);border-color:var(--line-strong)}
  .mzone{font-weight:800}
  .msession-card{display:flex;align-items:center;gap:10px;background:var(--surface-soft);border-radius:9px;padding:9px 11px}
  .msession-card.is-open{background:#eef9f3}
  .msession-icon{flex:0 0 auto;width:30px;height:30px;border-radius:999px;display:inline-flex;align-items:center;justify-content:center;background:#fff;color:var(--muted);font-size:13px}
  .msession-card.is-open .msession-icon{color:var(--ok)}
  .msession-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:1px}
  .msession-text b{font-size:13.5px;color:var(--primary-3)}
  .msession-text small{font-size:12px;color:var(--muted)}
  .msession-card.is-open .msession-text b{color:var(--ok)}
  .msession-card .session-chip-timer{font-variant-numeric:tabular-nums}
  .msession-action{flex:0 0 auto;background:#fff;border:1px solid #cfe7da;color:var(--primary-3);font-weight:800;font-size:12.5px;padding:7px 12px;border-radius:8px;min-height:auto;cursor:pointer}
  .msession-action:hover{background:var(--primary-soft)}
  .mobile-header-tools{display:flex;gap:16px;padding:0 2px}
  .mht-link{background:none;border:0;padding:4px 0;min-height:auto;color:var(--primary);font-weight:800;font-size:13px;display:inline-flex;align-items:center;gap:6px;cursor:pointer}
  .mht-link:hover{color:var(--primary-3)}
  .mht-seg{display:inline-flex;gap:4px;margin-left:auto;background:var(--surface-soft);border:1px solid var(--line-strong);border-radius:999px;padding:3px}
  .mht-seg-btn{background:none;border:0;border-radius:999px;padding:6px 12px;min-height:auto;color:var(--muted);font-weight:800;font-size:12.5px;display:inline-flex;align-items:center;gap:6px;cursor:pointer;white-space:nowrap}
  .mht-seg-btn.is-active{background:var(--primary);color:#fff}
  .mht-seg-btn:not(.is-active):hover{color:var(--primary-3)}
  .records-loadmore{display:inline-flex;align-items:center;justify-content:center;gap:7px;width:100%;min-height:42px;margin-top:2px}
  .record-name-empty{font-weight:700}
  .record-mobile-list{display:grid;gap:9px}
  .record-mobile-item{display:flex;align-items:center;gap:11px;background:#fff;border:1px solid var(--line);border-radius:11px;padding:11px;cursor:pointer;width:100%;text-align:left}
  .record-mobile-item:hover,.record-mobile-item:focus-visible{background:var(--surface-soft);outline:none}
  .record-mobile-thumb{flex:0 0 auto}
  .record-mobile-thumb img,.record-mobile-thumb .evidence-thumb{width:46px;height:46px;object-fit:cover;border-radius:9px;border:1px solid var(--line);display:block}
  .record-mobile-thumb .evidence-none{width:46px;height:46px;border-radius:9px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface-soft);color:var(--muted)}
  .record-mobile-text{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:3px}
  .record-mobile-name{font-size:14px;color:var(--primary-3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .record-mobile-text small{color:var(--muted);font-size:12px}
  .record-mobile-meta{display:flex;flex-wrap:wrap;gap:5px;margin-top:1px}
  .record-mobile-chevron{flex:0 0 auto;color:var(--line-strong);font-size:14px}
  .record-mobile-thumb .evidence-none{border:1px dashed var(--line-strong);color:var(--line-strong);background:#fafcfb}
  .record-mobile-list{padding-bottom:2px}
  .record-mobile-item{box-shadow:0 1px 0 rgba(10,60,33,.04)}
}
.session-pill-open .session-chip-timer{font-variant-numeric:tabular-nums}
/* Toggle ngôn ngữ VI | EN (gọn, thay select native xấu) */
.locale-seg{display:inline-flex;background:var(--surface-soft);border:1px solid var(--line-strong);border-radius:999px;padding:3px;gap:2px}
.locale-seg-btn{background:none;border:0;border-radius:999px;padding:6px 16px;font-size:12px;font-weight:800;letter-spacing:.02em;color:var(--muted);min-height:auto;cursor:pointer;transition:background .14s ease,color .14s ease}
.locale-seg-btn.is-active{background:var(--primary);color:#fff}
.locale-seg-btn:not(.is-active):hover{color:var(--primary-3)}
/* ===== Tạo đợt khảo sát — refactor 4 nhóm ===== */
.campaign-form-left{display:grid;gap:14px;min-width:0}
.campaign-form-right{display:grid;gap:14px;min-width:0;position:sticky;top:8px;align-self:start}
.cform-section{border:1px solid var(--line);background:#fff;border-radius:10px;padding:14px;display:grid;gap:12px;min-width:0}
.cform-section-head{display:flex;align-items:center;gap:9px}
.cform-num{flex:0 0 auto;width:26px;height:26px;border-radius:999px;background:var(--primary);color:#fff;font-weight:800;font-size:13px;display:inline-flex;align-items:center;justify-content:center}
.cform-section-head h3{margin:0;font-size:15px;color:var(--primary-3)}
.cform-section-head .req-star{margin-left:-2px}
.cform-section-hint{margin:-6px 0 2px;font-size:12.5px;line-height:1.45}
.req-star{color:var(--danger);font-weight:800}
.field-error{margin:4px 0 0;color:var(--danger);font-size:12.5px}
.field-error:empty{display:none}
/* Toggle nhị phân segmented */
.bin-seg{display:inline-flex;background:var(--surface-soft);border:1px solid var(--line-strong);border-radius:999px;padding:3px;gap:2px}
.bin-seg-btn{background:none;border:0;border-radius:999px;padding:7px 18px;font-size:13px;font-weight:800;color:var(--muted);min-height:auto;cursor:pointer;transition:background .14s ease,color .14s ease,box-shadow .14s ease;white-space:nowrap}
.bin-seg-btn.is-active{background:var(--primary);color:#fff}
/* Nút chưa active: hover dạng outline (nền trong suốt + viền xanh + chữ xanh) — tránh nền xanh đặc, chữ tối khó đọc do rule chung button:hover */
.bin-seg-btn:not(.is-active):hover{background:transparent;color:var(--primary-3);box-shadow:inset 0 0 0 1px var(--primary)}
.bin-seg-sm .bin-seg-btn{padding:5px 13px;font-size:12px}
.toggle-field{display:grid;gap:7px;justify-items:start}
.toggle-field>label{font-weight:700;color:var(--primary-3);font-size:13.5px}
.toggle-desc{margin:0;font-size:12.5px;line-height:1.45;justify-self:stretch}
/* Trường dữ liệu hồ sơ: đánh số + kiểu + kéo thả */
.col-def-list{display:grid;gap:0;counter-reset:coldef}
.col-def-row{counter-increment:coldef;display:grid;grid-template-columns:22px 24px minmax(0,1fr) 168px auto 36px;gap:10px;align-items:center;padding:9px 2px;border-bottom:1px solid var(--line)}
.col-def-row:last-child{border-bottom:0}
.col-def-row.dragging{opacity:.5;background:var(--surface-soft)}
.col-def-drag{display:flex;align-items:center;justify-content:center;cursor:grab;color:var(--line-strong);font-size:13px}
.col-def-num{font-size:12px;font-weight:800;color:var(--muted);text-align:center}
.col-def-num::before{content:counter(coldef)}
.col-def-name{border:1px solid var(--line-strong);padding:8px 10px;border-radius:8px;width:100%;min-width:0;font-weight:600;background:#fff;color:var(--text)}
.col-def-name:focus{outline:0;border-color:var(--primary);box-shadow:0 0 0 3px rgba(18,145,76,.18)}
.col-def-type{border:1px solid var(--line-strong);padding:7px 9px;border-radius:8px;background:#fff;min-height:auto;color:var(--text);font-weight:600;width:100%}
.col-def-req.bin-seg{padding:2px}
.col-def-req .bin-seg-btn{padding:5px 11px;font-size:11.5px}
.col-def-options-wrap{grid-column:1/-1;padding:2px 0 6px 56px}
.col-def-options{border:1px solid var(--line-strong);padding:8px 10px;border-radius:8px;width:100%;background:#fff;color:var(--text);font-size:13px}
.col-def-remove{align-self:center;min-height:auto;width:32px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center}
.topic-def-field{display:grid;gap:10px;min-width:0;max-width:100%;box-sizing:border-box}.topic-def-intro{margin:0}.topic-def-list{display:grid;gap:12px;min-width:0;max-width:100%;box-sizing:border-box}.topic-def-row{border:1px solid var(--line);border-radius:10px;background:var(--surface-soft);padding:12px;display:grid;gap:10px;min-width:0;max-width:100%;box-sizing:border-box;overflow:hidden}.topic-def-head{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:10px;align-items:end;min-width:0}.topic-name-field{margin:0;min-width:0}.topic-def-name{width:100%;box-sizing:border-box}.topic-def-hint{margin:-4px 0 0;font-size:12.5px}.topic-fields-list{background:#fff;border:1px solid var(--line);border-radius:9px;padding:2px 8px;overflow:hidden;min-width:0;max-width:100%;box-sizing:border-box}.topic-add{justify-self:start;display:inline-flex;align-items:center;gap:7px}.topic-remove{align-self:center}.topic-fields-list .col-def-name-wrap span,.topic-fields-list .col-def-type-wrap span,.topic-fields-list .col-def-req-wrap>span,.topic-fields-list .col-def-options-wrap span{font-size:11.5px;color:var(--muted);font-weight:700}.topic-fields-list .col-def-name-wrap,.topic-fields-list .col-def-type-wrap,.topic-fields-list .col-def-options-wrap{display:grid;gap:4px}.topic-fields-list .col-def-req-wrap{display:grid;gap:5px}
/* Điểm đang chọn — nổi bật */
.selected-point-card{border:1px solid var(--line-strong);border-radius:10px;padding:11px 12px;background:var(--surface-soft);display:grid;gap:4px;margin:10px 0}
.selected-point-card.is-set{background:#eef9f3;border-color:#a9dcc1}
.selected-point-card .sp-empty{display:inline-flex;align-items:center;gap:7px;color:var(--muted);font-weight:600}
.selected-point-card .sp-head{display:inline-flex;align-items:center;gap:7px;color:var(--ok);font-weight:800}
.selected-point-card .sp-line{font-weight:700;color:var(--primary-3);font-size:13.5px;line-height:1.4;overflow-wrap:anywhere}
.selected-point-card .clear-location-btn{justify-self:start;color:var(--danger);font-weight:700;display:inline-flex;align-items:center;gap:5px;margin-top:2px}
/* Nút địa điểm wrap */
.location-button-row{display:flex;flex-wrap:wrap;gap:8px}
.location-button-row button{flex:1 1 130px;display:inline-flex;align-items:center;justify-content:center;gap:7px}
/* Thanh hành động đáy modal */
.app-modal-foot{display:flex;gap:10px;justify-content:flex-end;align-items:center;padding:12px 16px;background:#fff;border-top:1px solid var(--line);box-shadow:0 -2px 10px rgba(10,60,33,.06);flex:0 0 auto}
.campaign-create-foot{padding:12px 18px}
.campaign-create-foot .secondary{min-width:92px}
.campaign-submit-btn{min-width:160px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:8px}
.campaign-submit-btn:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.3)}
.submit-hint{flex:1 1 auto;margin:0;font-size:12.5px;color:var(--muted);min-width:0;text-align:left}
.submit-hint:empty{display:none}
.map-empty-hint{position:absolute;left:50%;bottom:10px;transform:translateX(-50%);background:rgba(255,255,255,.94);color:var(--primary-3);font-weight:700;font-size:12.5px;padding:6px 12px;border-radius:999px;box-shadow:0 1px 5px rgba(10,60,33,.16);white-space:nowrap;pointer-events:none;z-index:3}
.campaign-map-preview.map-no-point .map-pin{display:none}
.app-modal-campaign-create-page .location-picker-shell .campaign-map-box{min-height:360px;height:360px}
.app-modal-campaign-create-page .location-picker-shell .campaign-map-preview{height:360px}
/* ===== Quản lý user ===== (mobile: bảng tự xếp card theo data-label sẵn có) */
.user-create-form{display:grid;gap:12px}
.user-create-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,220px);gap:12px;align-items:start}
.pw-field{display:grid;gap:7px}
.pw-input-row{display:flex;gap:6px;align-items:stretch}
.pw-input-row input{flex:1;min-width:0}
.pw-icon-btn{flex:0 0 auto;width:42px;min-height:42px;padding:0;display:inline-flex;align-items:center;justify-content:center}
.pw-actions{display:flex;gap:8px;flex-wrap:wrap}
.pw-gen-btn,.pw-copy-btn{display:inline-flex;align-items:center;gap:7px;min-height:38px}
.pw-meter{display:grid;gap:4px}
.pw-meter:empty{display:none}
.pw-bars{display:flex;gap:4px}
.pw-bar{height:5px;flex:1;border-radius:999px;background:var(--line-strong)}
.pw-meter.lvl-weak .pw-bar.on{background:#e0564b}
.pw-meter.lvl-fair .pw-bar.on{background:#e0a23b}
.pw-meter.lvl-good .pw-bar.on{background:#3a9d6e}
.pw-meter.lvl-strong .pw-bar.on{background:var(--ok)}
.pw-meter small{font-size:12px;color:var(--muted)}
.pw-meter.lvl-weak small{color:#c0463c}
.check-row{display:inline-flex;align-items:center;gap:8px;font-size:13.5px;color:var(--text);cursor:pointer}
.check-row input{width:17px;height:17px}
.pw-share-hint{margin:0;font-size:12.5px}
.user-submit-btn{min-width:160px;font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:8px;justify-self:start}
.user-submit-btn:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.3)}
.role-pill{font-weight:800}
.role-pill.role-admin{background:#eef7f1;color:var(--primary-3)}
.role-pill.role-manager{background:#f0f1f4;color:#4b5563}
.role-pill.role-normal{background:#f0f1f4;color:#6b7280}
.user-name-cell{font-weight:700;color:var(--primary-3)}
.nowrap-cell{white-space:nowrap}
.user-row-actions{display:flex;gap:6px;flex-wrap:wrap}
.user-row-actions button{min-height:34px;padding:6px 10px;font-size:13px;display:inline-flex;align-items:center;gap:6px}
.user-mobile-list{display:grid;gap:8px}
.user-mobile-item{display:grid;gap:8px;background:#fff;border:1px solid var(--line);border-radius:11px;padding:11px;box-shadow:0 1px 0 rgba(10,60,33,.04)}
.user-mobile-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
.user-mobile-name{color:var(--primary-3);font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.user-mobile-meta{display:flex;align-items:center;justify-content:space-between;gap:8px}
.user-mobile-meta .pill{font-size:11px;padding:3px 8px}
.user-mobile-date{font-size:12px;font-weight:600}
.user-mobile-actions{display:flex;gap:6px;flex-wrap:wrap}
.user-mobile-actions button{flex:1 1 auto;min-height:38px;justify-content:center;padding:6px 10px;font-size:13px;display:inline-flex;align-items:center;gap:6px}
.ghost-btn{background:#fff}
.ghost-danger{background:#fff;border:1px solid var(--danger);color:var(--danger);font-weight:700;border-radius:var(--radius);min-height:34px;padding:6px 10px;cursor:pointer}
.ghost-danger:hover:not(:disabled){background:#fdf2f1}
.ghost-danger:disabled{opacity:.4;cursor:not-allowed}
.user-edit-card{display:grid;gap:12px}
/* ===== Chi tiết nhóm — cột Quyền gom 4 nhóm + chip trung tính (P0/P1) ===== */
.permission-groups{display:grid;gap:7px}
.permission-group-row{display:grid;grid-template-columns:128px minmax(0,1fr);gap:8px;align-items:start}
.permission-group-name{font-size:12px;font-weight:800;color:var(--muted);padding-top:4px}
.permission-chips{display:flex;flex-wrap:wrap;gap:5px}
.permission-chip{display:inline-flex;align-items:center;border:1px solid var(--line);background:var(--surface-soft);color:#374b44;border-radius:6px;padding:3px 8px;font-size:12px;font-weight:600;line-height:1.3}
@media(max-width:760px){.permission-group-row{grid-template-columns:1fr;gap:3px}.permission-group-name{padding-top:0}}
/* Cột Quyền trong bảng: 1 dòng tóm tắt theo nhóm (Mục 4 — không phình) */
.perm-summary{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.perm-summary-chip{display:inline-flex;align-items:center;gap:5px;background:var(--surface-soft);border:1px solid var(--line);border-radius:6px;padding:3px 9px;font-size:12.5px;color:#374b44;white-space:nowrap;line-height:1.3}
.perm-summary-chip b{color:var(--primary-3);font-weight:800}
/* Hàng bảng gọn ~36px (Mục 4) */
th,td{padding:7px 10px}
/* Layout: cho "Thành viên & quyền" full chiều rộng -> hết vùng trống cột trái (Mục 4) */
.group-business-grid{grid-template-columns:1fr;gap:12px}
/* Phân cấp nút: Sửa quyền = đặc; Bớt khỏi nhóm = link mảnh */
.row-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.remove-link{background:none;border:0;color:var(--muted);font-weight:700;font-size:12.5px;padding:3px 2px;min-height:auto;cursor:pointer;text-decoration:underline;text-underline-offset:2px;text-decoration-color:var(--line-strong)}
.remove-link:hover{color:var(--danger);text-decoration-color:var(--danger)}
/* Nén chatbot: empty-state thấp, export sát ô nhập */
.chat-empty{padding:10px}
.group-chat-panel{gap:9px}
.chat-workspace.chatgpt-style{gap:7px}
.business-export-row{margin-top:2px}
/* === Chi tiết nhóm: dọn gọn + footer liền mạch + hover tinh tế === */
.business-panel,.group-chat-panel{display:grid;gap:10px}
.business-panel-head{margin:0;display:block}
.business-panel-head h3{margin:0;font-size:15px;font-weight:800;color:var(--primary-3)}
.panel-footer-row{display:flex;gap:10px;align-items:center;flex-wrap:wrap;padding-top:11px;border-top:1px solid var(--line);margin-top:2px}
.footer-select{flex:1 1 220px;min-width:0;border:1px solid var(--line-strong);border-radius:8px;padding:8px 10px;background:#fff;color:var(--text);min-height:40px}
.footer-role{display:inline-flex;align-items:center;gap:6px;margin:0}
.group-member-panel .member-footer{display:grid;grid-template-columns:minmax(260px,1fr) 190px auto;gap:10px;align-items:end}
.member-footer-field{display:grid;gap:5px;margin:0;min-width:0}
.member-footer-field>span{font-weight:700;color:var(--primary-3);font-size:13px;line-height:1.2}
.member-footer-field .footer-select{width:100%;height:40px;min-height:40px;flex:none;padding:8px 10px}
.group-member-panel .member-footer .footer-add-btn{height:40px;min-height:40px;align-self:end;white-space:nowrap}
.footer-mini-label{font-size:12px;color:var(--muted);font-weight:700;white-space:nowrap}
.footer-select-sm{border:1px solid var(--line-strong);border-radius:8px;padding:8px 9px;background:#fff;color:var(--text);min-height:40px}
.footer-add-btn{display:inline-flex;align-items:center;gap:7px;white-space:nowrap;min-height:40px}
th,td{padding:6px 10px}
.chat-history:empty{display:none;border:0;padding:0;margin:0}
.chat-composer-hint{margin-top:1px}
.perm-summary-chip{cursor:default}.perm-summary-chip b{margin-left:1px}
/* HOVER (D) — tinh tế, nhất quán toàn app */
button{transition:background .13s ease,border-color .13s ease,color .13s ease,filter .13s ease}
button.secondary:not(:disabled):hover{background:#fff;border-color:var(--primary);color:var(--primary-3)}
tbody tr{transition:background .12s ease}
tbody tr:hover td{background:#f5f7fa}
tbody tr:nth-child(even) td{background:#fafbfc}
.remove-link{transition:color .12s ease}
.remove-link:hover{color:var(--primary-3);text-decoration-color:var(--muted)}
.pill,.role-pill,.perm-summary-chip,.metric-badge{cursor:default}
.footer-select:focus,.footer-select-sm:focus{outline:0;border-color:var(--primary);box-shadow:0 0 0 3px rgba(18,145,76,.16)}
/* === Tông "sang": thead trung tính, bỏ viền dọc, xanh tiết chế (scope bảng generic, KHÔNG đụng records-table) === */
.table-wrap{border:0;border-radius:10px;box-shadow:0 1px 2px rgba(16,24,40,.06);background:#fff;overflow:hidden}
.table-wrap th{background:#f5f6f8;color:#374151;font-weight:700;font-size:12.5px;border:0;border-bottom:1px solid #e5e7eb;text-transform:none;letter-spacing:0;padding:8px 12px}
.table-wrap td{border:0;border-bottom:1px solid #eef0f4;padding:8px 12px;color:#1f2430;vertical-align:middle}
.table-wrap tbody tr:last-child td{border-bottom:0}
.table-wrap tbody tr:hover td{background:#f3f5f9}
.table-wrap tbody tr:nth-child(even) td{background:#fafbfc}
.table-wrap tbody tr:nth-child(even):hover td{background:#f3f5f9}
/* Card: shadow thay viền */
.business-panel,.group-chat-panel,.permission-editor{border:0;box-shadow:0 1px 2px rgba(16,24,40,.06);border-radius:12px}
/* Tiêu đề section xám đậm (không xanh) */
.business-panel-head h3{color:#1f2430;font-size:16px;font-weight:800}
/* Badge vai trò trung tính (hết viền vàng cảnh báo) */
.role-badge{display:inline-flex;align-items:center;background:#f0f1f4;color:#374151;font-weight:700;font-size:12.5px;padding:3px 9px;border-radius:6px;white-space:nowrap}
/* Cột Thao tác: icon + tooltip */
.icon-action{background:none;border:0;width:32px;height:32px;min-height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center;border-radius:7px;cursor:pointer;color:#9aa3af;font-size:14px;transition:background .12s ease,color .12s ease}
.icon-action.edit-action{color:var(--primary)}
.icon-action:hover{background:#f3f5f9}
.icon-action.edit-action:hover{color:var(--primary-3)}
.icon-action.remove-action:hover{color:#374151}
.row-actions{gap:4px}
.footer-add-btn:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.3)}
/* Chatbot: icon gửi phẳng/nhỏ (bỏ nền tròn xanh to) */
.chat-composer{grid-template-columns:minmax(0,1fr) 34px}
.chat-send-btn{width:34px;height:34px;min-width:34px;min-height:34px;border-radius:8px;background:none;border:0;color:var(--primary);font-size:16px}
.chat-send-btn:hover{background:var(--primary-soft);color:var(--primary-3)}
/* === Wave 1: xanh tiết chế + checkbox không đỏ === */
.metric strong{color:#1f2430}
.check-row input,input[type=checkbox],input[type=radio]{accent-color:var(--primary)}
.app-modal-head h2,.campaign-workspace-title h1,.app-modal-campaign-create-page .app-modal-head h2{color:#1f2430}
.campaign-workspace-title small{color:var(--muted)}
/* === Wave 2: trạng thái workspace trung tính (chỉ ngoại lệ có màu) === */
.state-chip{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;font-weight:600;color:#4b5563;white-space:nowrap}
.state-dot{width:7px;height:7px;border-radius:999px;flex:0 0 auto;background:#9aa3af}
.state-dot.dot-ok{background:var(--ok)}
.state-chip .otp-ok{color:var(--ok)}
.state-chip .state-ico{color:#9aa3af;font-size:12px}
.flag-chip{display:inline-flex;align-items:center;gap:5px;font-size:12px;font-weight:700;padding:2px 8px;border-radius:6px;white-space:nowrap}
.flag-chip .fa-solid{font-size:11px}
.flag-chip.flag-danger{background:#fdf3f2;color:var(--danger)}
.flag-chip.flag-warn{background:#fff7e6;color:#b7791f}
.gps-sim-toggle{min-height:32px;padding:5px 10px;font-size:12.5px;font-weight:700;background:#f3f5f9;border-color:#e5e7eb;color:#4b5563}
.gps-sim-toggle.ok-tone{color:var(--primary-3)}
.gps-sim-toggle.danger{background:#fdf3f2;border-color:#eeb3ac;color:var(--danger)}
/* === Wave 3: hero nhẹ (chữ tối, viền tinh) + dropdown === */
.dash-hero{display:block;background:#fff;color:#1f2430;padding:18px 20px;border-radius:12px;box-shadow:0 1px 2px rgba(16,24,40,.06);border:0;border-left:3px solid var(--primary)}
.dash-hero h1{font-size:22px;margin-bottom:4px;color:#1f2430}
.dash-hero p{color:var(--muted);margin:0;max-width:760px}
select{cursor:pointer}select:focus{outline:0}
/* Chatbot gọn hơn (P2) */
.group-chat-panel{gap:10px}
.chat-workspace.chatgpt-style{gap:8px}
.chat-formatted{font-size:13.5px}
.chat-composer textarea{font-size:16px}
@media(max-width:760px){
  .user-create-grid{grid-template-columns:1fr}
  .user-submit-btn{width:100%}
}
@media(max-width:760px){
  .campaign-form-left,.campaign-form-right{gap:12px}
  .campaign-form-right{position:static}
  .cform-section{border:0;box-shadow:0 1px 0 rgba(10,60,33,.05);border-radius:10px}
  .col-def-row{grid-template-columns:22px 24px minmax(0,1fr) auto;grid-template-areas:'drag num name name' 'type type req del' 'opts opts opts opts';gap:8px;padding:11px 2px}
  .col-def-drag{grid-area:drag}.col-def-num{grid-area:num;text-align:left}.col-def-name{grid-area:name}
  .col-def-type{grid-area:type}.col-def-req{grid-area:req;justify-self:start}.col-def-remove{grid-area:del;justify-self:end}
  .col-def-options-wrap{grid-area:opts;padding-left:0}
  .topic-def-head{grid-template-columns:minmax(0,1fr) auto;align-items:start}.topic-def-head .pill{grid-column:1/-1;justify-self:start}.topic-remove{margin-top:22px}
  .topic-def-row{padding:10px;border-radius:12px;gap:9px}.topic-def-intro{font-size:13px;line-height:1.45}.topic-fields-list{padding:0;border-radius:10px;overflow:hidden}.topic-fields-list .col-def-row{grid-template-columns:26px minmax(0,1fr) 34px;grid-template-areas:'num name del' 'type type type' 'req req req' 'opts opts opts';gap:8px;padding:10px;border-bottom:1px solid var(--line);background:#fff}.topic-fields-list .col-def-drag{display:none}.topic-fields-list .col-def-num{grid-area:num;width:24px;height:24px;border-radius:8px;background:var(--surface-soft);display:inline-flex;align-items:center;justify-content:center;font-size:12px}.topic-fields-list .col-def-name-wrap{grid-area:name;min-width:0}.topic-fields-list .col-def-name{height:40px;padding:8px 10px;font-size:15px;font-weight:700;border-radius:10px}.topic-fields-list .col-def-remove{grid-area:del;width:34px;height:40px;border-radius:10px;justify-self:end}.topic-fields-list .col-def-type-wrap{grid-area:type}.topic-fields-list .col-def-type{height:40px;padding:7px 10px;font-size:14px;border-radius:10px}.topic-fields-list .col-def-req-wrap{grid-area:req}.topic-fields-list .col-def-req.bin-seg{width:100%;display:grid;grid-template-columns:1fr 1fr;padding:3px;background:#f7faf8}.topic-fields-list .col-def-req .bin-seg-btn{min-height:36px;padding:6px 8px;font-size:13px}.topic-fields-list .col-def-options-wrap{grid-area:opts;padding:0}.topic-fields-list .col-def-options{height:40px;font-size:14px;border-radius:10px}
  .bin-seg-btn{padding:7px 16px}
  .toggle-field{gap:8px}
  .app-modal-foot{padding:10px 12px;position:sticky;bottom:0;flex-wrap:wrap}
  .submit-hint{order:-1;flex:1 1 100%;text-align:center}
  .campaign-create-foot .campaign-submit-btn{flex:1;min-width:0}
  .campaign-create-foot .secondary{flex:0 0 auto}
  .location-button-row button{flex:1 1 calc(50% - 8px)}
  .app-modal-campaign-create-page .location-picker-shell .campaign-map-box{min-height:260px;height:260px}
  .app-modal-campaign-create-page .location-picker-shell .campaign-map-preview{height:260px}
}
/* Kiểu trường: input nhập hồ sơ + preview hồ sơ mẫu */
.req-mark{color:var(--danger);font-weight:800}
.col-def-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:2px}
.cols-preview{display:none}
.cols-preview.is-open{display:grid;gap:10px;margin-top:10px;padding:12px;border:1px dashed var(--primary-line);border-radius:10px;background:#f8fbf9}
.sample-record-head{display:flex;align-items:center;gap:8px;color:var(--primary-3);font-weight:800;flex-wrap:wrap}
.sample-record-head small{font-weight:600;color:var(--muted)}
.sample-field>label{display:flex;align-items:center;gap:2px;font-weight:600;font-size:13px;color:var(--primary-3);margin-bottom:4px}
.sample-field .sample-type{color:var(--muted);font-weight:600}
.sample-field input,.sample-field select{width:100%;border:1px solid var(--line-strong);border-radius:8px;padding:8px 10px;background:#fff;opacity:.9;cursor:default}
.delete-confirm-body{display:grid;grid-template-columns:1fr;gap:13px;align-items:start;background:#fff;border:0;border-radius:0;padding:8px 0 70px;margin:0;position:relative}
.delete-confirm-copy{margin:0;line-height:1.5;color:var(--muted)}.delete-confirm-target{border:0;background:#f6faf7;border-radius:7px;padding:11px 12px;display:grid;gap:4px}.delete-confirm-target span{font-size:11px;color:var(--muted);font-weight:800;text-transform:none;letter-spacing:.05em}.delete-confirm-target b{color:var(--primary-3);overflow-wrap:anywhere}.delete-confirm-actions{grid-column:1/-1;position:absolute;right:0;bottom:0;display:flex;justify-content:flex-end;gap:10px;border:0;background:#fff;padding:0;margin:0}.delete-confirm-actions button{min-height:40px;border-radius:7px}.delete-confirm-actions .secondary{background:#fff;border-color:#d8dfdc;color:var(--primary)}.delete-confirm-actions .warn{background:var(--danger);border-color:var(--danger);box-shadow:none}
.campaign-row-actions{transition:opacity .16s ease}.campaign-row-actions button{transition:opacity .16s ease,transform .16s ease}tr:has(.campaign-row-actions).is-deleting{opacity:.62;pointer-events:none}tr:has(.campaign-row-actions).is-deleting td{background:#fff8f7!important}tr:has(.campaign-row-actions).is-removing{animation:campaignRowRemove .23s ease forwards;pointer-events:none}tr:has(.campaign-row-actions).is-removing td{background:#fff8f7!important}
@keyframes campaignRowRemove{to{opacity:0;transform:translateX(16px);max-height:0}}
@media(max-width:520px){.app-modal-confirm{width:calc(100vw - 24px);height:auto;max-height:92dvh;border-radius:10px}.app-modal-confirm .app-modal-head{padding:16px 16px 6px}.app-modal-confirm .app-modal-body{padding:0 16px 16px}.delete-confirm-body{grid-template-columns:1fr;padding-bottom:92px}.delete-confirm-actions{left:0;display:grid;grid-template-columns:1fr;gap:8px}.delete-confirm-actions button{width:100%}.capture-file-card{grid-template-columns:36px minmax(0,1fr);padding:12px}.capture-file-action{grid-column:1/-1;text-align:center}.capture-actions button{width:100%}.active-session-card{display:grid}}

/* Mobile-app style campaign create/detail overlays */
.campaign-create-page-backdrop,.campaign-detail-page-backdrop{align-items:stretch;justify-content:stretch;padding:0;background:var(--bg)}
.app-modal-campaign-create-page,.app-modal-campaign-detail-page{width:100vw;height:100dvh;height:var(--modal-vh,100dvh);max-height:none;border:0;border-radius:0;box-shadow:none;background:var(--bg)}
.app-modal-campaign-create-page .app-modal-head,.app-modal-campaign-detail-page .app-modal-head{position:sticky;top:0;z-index:6;padding:12px 18px;background:#fff;border-bottom:1px solid var(--line);box-shadow:0 1px 0 rgba(10,60,33,.04)}
.app-modal-campaign-create-page .app-modal-head h2,.app-modal-campaign-detail-page .app-modal-head h2{font-size:18px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.app-modal-campaign-create-page .app-modal-head button,.app-modal-campaign-detail-page .app-modal-head button{font-size:14px;line-height:1.2;min-width:auto;padding:8px 12px;white-space:nowrap}
.app-modal-campaign-create-page .campaign-header-submit{order:3;justify-self:end;min-width:64px;font-weight:800;padding:8px 14px!important}
.app-modal-campaign-create-page .app-modal-body,.app-modal-campaign-detail-page .app-modal-body{flex:1;overflow:auto;background:var(--bg);padding:14px 16px 22px}
.campaign-create-modal-body,.campaign-detail-modal-body{max-width:1180px;margin:0 auto;width:100%}
.campaign-detail-modal-body .campaign-detail-layout{margin:0}.campaign-detail-modal-body .campaign-detail-card{margin-bottom:12px}
.location-guide-fallback{margin:8px 0 0;font-size:13px;border:1px dashed var(--line-strong);background:#fff;border-radius:5px;padding:8px 10px}.map-lookup-btn{font-size:13px}
@media(max-width:760px){.campaign-create-page-backdrop,.campaign-detail-page-backdrop{align-items:stretch!important;justify-content:stretch!important;padding:0!important;background:#fff!important}.app-modal-campaign-create-page,.app-modal-campaign-detail-page{width:100%!important;height:var(--modal-vh,100dvh)!important;max-height:none!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:#fff!important}.app-modal-campaign-create-page .app-modal-body,.app-modal-campaign-detail-page .app-modal-body{padding:0;background:#fff}.app-modal-campaign-create-page .app-modal-head,.app-modal-campaign-detail-page .app-modal-head{padding:10px 12px;gap:8px}.app-modal-campaign-create-page .app-modal-head h2,.app-modal-campaign-detail-page .app-modal-head h2{font-size:16px}.app-modal-campaign-create-page .app-modal-head button,.app-modal-campaign-detail-page .app-modal-head button{padding:8px 9px;font-size:13px}.campaign-create-modal-body,.campaign-detail-modal-body{max-width:none}.campaign-create-modal-body .campaign-form-layout,.campaign-detail-modal-body .campaign-detail-layout{grid-template-columns:1fr;gap:0}.app-modal-campaign-create-page .campaign-basic-card,.app-modal-campaign-create-page .campaign-location-card{border:0;border-radius:0;background:#fff;padding:12px;margin:0}.app-modal-campaign-create-page .campaign-location-card{padding-top:0}.app-modal-campaign-create-page .campaign-location-card .compact-head{margin:0;padding:18px 8px 14px;border:0;text-align:center}.app-modal-campaign-create-page .campaign-location-card .compact-head h3{font-size:17px}.app-modal-campaign-create-page .campaign-location-card .compact-head p{font-size:13px;margin:6px auto 0;max-width:330px}.app-modal-campaign-create-page .campaign-map-box{border:0;border-radius:0;background:transparent;margin:0;min-height:auto;overflow:visible}.app-modal-campaign-create-page .campaign-map-box:has(.map-placeholder){display:none}.campaign-create-modal-body .campaign-map-preview{height:230px}.app-modal-campaign-create-page .location-picker-shell{border:0;border-radius:0;margin:0 -12px 12px}.app-modal-campaign-create-page .selected-location-strip{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:10px 12px}.location-button-row{grid-template-columns:1fr}.location-button-row button{min-height:42px}}

/* Mobile web-app campaign list cards */
.campaigns-list-shell.mobile-app-list{display:grid;gap:12px}
.campaign-search-panel{position:relative;display:grid;grid-template-columns:minmax(0,1fr) 44px 44px;gap:8px;align-items:end;margin-bottom:2px}
.campaign-search-panel .field{margin:0}.campaign-search-panel .field span{font-weight:800;color:var(--primary-3);font-size:13px}.campaign-search-panel input{min-height:44px}.campaign-icon-button{width:44px;height:44px;min-width:44px;min-height:44px;padding:0!important;border-radius:6px!important;display:inline-flex;align-items:center;justify-content:center;gap:0;position:relative}.campaign-icon{font-size:20px;line-height:1;color:inherit}.campaign-icon-text{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important}.campaign-list-options{grid-column:auto;position:relative;overflow:visible}.campaign-list-options>summary{list-style:none;border:1px solid var(--line-strong);background:#fff;color:var(--primary-3);cursor:pointer;align-items:center!important;justify-content:center!important}.campaign-list-options>summary::-webkit-details-marker{display:none}.campaign-list-options>summary:after{display:none!important;content:none!important}.campaign-list-options>summary small{position:absolute;right:4px;bottom:3px;min-width:15px;height:15px;border-radius:999px;background:var(--primary);color:#fff;font-size:10px;line-height:15px;text-align:center;font-weight:900}.campaign-list-options .mobile-disclosure-body{position:absolute;right:0;top:calc(100% + 8px);z-index:20;width:min(282px,calc(100vw - 28px));display:grid;grid-template-columns:1fr;gap:8px;align-items:end;background:#fff;border:1px solid var(--line-strong);border-radius:8px;padding:10px;box-shadow:0 12px 28px rgba(12,33,21,.14)}.campaign-list-options .field{margin:0}.campaign-list-options button{min-height:40px;width:100%}
.campaign-card-list{display:grid;gap:10px}
.campaign-list-card{border:1px solid var(--line-strong);background:#fff;border-radius:6px;padding:12px;display:grid;gap:10px;box-shadow:0 1px 0 rgba(10,60,33,.03);transition:opacity .18s ease,transform .18s ease}
.campaign-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.campaign-card-title{min-width:0}.campaign-card-title small{display:block;color:var(--muted);font-size:12px;font-weight:800;margin-bottom:2px}.campaign-card-title h3{margin:0;font-size:17px;overflow-wrap:anywhere}.campaign-card-head .pill{white-space:nowrap;flex:0 0 auto}
.campaign-card-meta{display:flex;flex-wrap:wrap;gap:6px}.campaign-card-meta span{display:inline-flex;align-items:center;min-height:28px;border:1px solid var(--line);background:var(--surface-soft);border-radius:999px;padding:4px 9px;color:var(--muted);font-size:12px;font-weight:800;line-height:1.25}
.campaign-card-permissions{border:1px solid var(--line);background:var(--surface-soft);border-radius:5px;padding:9px 10px;display:grid;gap:7px}.campaign-card-permissions>b{color:var(--primary-3);font-size:13px}.friendly-permissions .permission-pill{white-space:normal;background:#fff}.permission-pill.subtle{color:var(--muted);border-color:var(--line-strong);background:#fff}
.campaign-card-actions{display:grid;grid-template-columns:1fr;gap:8px}.campaign-card-actions button{width:100%;min-height:44px}.campaign-admin-disclosure{border-color:var(--line);background:#fff}.campaign-admin-disclosure>summary{padding:10px 11px}.campaign-admin-disclosure .mobile-disclosure-body{padding:10px 11px}.campaign-admin-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:8px}.campaign-admin-actions button{width:100%;min-height:40px}.campaign-admin-icon-action{display:inline-flex;align-items:center;justify-content:center;gap:8px}.campaign-admin-action-icon{display:none}.campaign-admin-action-label{line-height:1.2}
.campaign-list-card.is-deleting{opacity:.62;pointer-events:none;background:#fff8f7}.campaign-list-card.is-removing{opacity:0;transform:translateX(16px);pointer-events:none}
@media(max-width:520px){
  .campaign-create-action{border:0;background:transparent;padding:2px 0 4px;margin-bottom:6px}.campaign-create-action p{display:none}.campaign-create-action button{min-height:44px}
  #campaigns_list.card,#groups_list.card{border:0;background:transparent;padding:0;box-shadow:none}
  .campaign-search-panel{grid-template-columns:minmax(0,1fr) 44px 44px}.campaign-list-options .mobile-disclosure-body{grid-template-columns:1fr}.campaign-list-options button{width:100%}
  .campaign-list-card{padding:11px;border-radius:6px}.campaign-card-head{display:grid;grid-template-columns:minmax(0,1fr) auto}.campaign-card-title h3{font-size:16px}.campaign-card-meta{display:grid;grid-template-columns:1fr}.campaign-card-meta span{border-radius:5px;justify-content:flex-start}.campaign-card-actions.has-inline-admin{grid-template-columns:minmax(0,1fr) 48px 48px 48px;gap:7px;align-items:stretch}.campaign-card-actions.has-inline-admin .campaign-open-action{min-width:0;padding-left:10px;padding-right:10px;white-space:nowrap}.campaign-card-actions.has-inline-admin .campaign-admin-icon-action{min-width:48px;min-height:44px!important;border-radius:10px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.campaign-card-actions.has-inline-admin .campaign-admin-action-label,.campaign-admin-actions .campaign-admin-action-label{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important}.campaign-card-actions.has-inline-admin .campaign-admin-action-icon,.campaign-admin-actions .campaign-admin-action-icon{display:block;width:1em;height:1em;font-size:18px;line-height:1;color:currentColor;text-align:center}.campaign-admin-actions{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:9px}.campaign-admin-actions .campaign-admin-icon-action{min-height:48px!important;border-radius:10px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}.permission-pills{gap:5px}.permission-pill{font-size:12px;padding:4px 8px}
  .pager{display:grid;grid-template-columns:1fr 1fr;gap:8px}.pager .muted{grid-column:1/-1}.pager button{width:100%;min-height:40px}
}

/* Dedicated campaign workspace page (no list behind selected campaign) */
.campaign-workspace-page{display:grid;gap:12px}
.campaign-workspace-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:12px;align-items:start;margin-bottom:0}
.campaign-back-icon{display:inline-flex;align-items:center;justify-content:center;gap:7px;white-space:nowrap;min-height:40px}.campaign-back-icon .back-icon{font-size:22px;line-height:1;font-weight:900}.campaign-workspace-title{min-width:0}.campaign-workspace-title small{display:block;color:var(--muted);font-size:12px;font-weight:900;text-transform:none;letter-spacing:.03em;margin-bottom:3px}.campaign-workspace-title h1{margin:0 0 4px;font-size:22px;color:var(--primary-3);overflow-wrap:anywhere}.campaign-workspace-title p{margin:0;max-width:760px}.campaign-workspace-body{max-width:none!important;margin:0!important}.campaign-workspace-body .campaign-detail-layout{margin:0}.campaign-workspace-body .campaign-detail-card h2{display:none}.campaign-action-panel{display:grid;gap:9px;margin:12px 0}.campaign-action-head{display:flex;justify-content:space-between;align-items:flex-end;gap:10px}.campaign-action-head b{color:var(--primary-3)}.campaign-action-head small{color:var(--muted);font-weight:700}.campaign-action-choice{display:inline-flex;align-items:center;justify-content:center;gap:8px}.action-choice-icon{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:999px;background:var(--surface-soft);color:var(--primary-3);font-size:13px;line-height:1}.campaign-work-empty{min-height:96px;display:grid;place-items:center;text-align:center;gap:4px;color:var(--muted)}.campaign-work-empty span{width:34px;height:34px;border-radius:999px;background:var(--surface-soft);color:var(--primary-3);display:inline-flex;align-items:center;justify-content:center;font-size:20px}.campaign-work-empty b{color:var(--primary-3)}.campaign-work-empty small{font-weight:700}
@media(max-width:760px){
  .campaign-workspace-page{gap:8px}
  .campaign-workspace-head{position:sticky;top:0;z-index:8;margin:-10px -10px 0;padding:10px 12px;border-radius:0;border-left:0;border-right:0;grid-template-columns:44px minmax(0,1fr) auto;align-items:center;background:#fff;box-shadow:0 1px 0 rgba(10,60,33,.07)}
  .campaign-back-icon{width:44px;height:44px;min-width:44px;min-height:44px;padding:0!important;border-radius:999px!important;border-color:transparent!important;background:#f3f7f4!important;color:var(--primary-3)!important;display:flex!important;align-items:center!important;justify-content:center!important;line-height:1!important}.campaign-back-icon .back-icon{display:flex;align-items:center;justify-content:center;width:100%;height:100%;font-size:27px;line-height:1;transform:none}.campaign-back-icon .back-label{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important}
  .campaign-workspace-title h1{font-size:17px;line-height:1.18;margin:0}.campaign-workspace-title p{display:block;font-size:11.5px;margin:2px 0 0;color:var(--muted)}.campaign-workspace-title small{display:none}.campaign-workspace-head .pill{align-self:center;white-space:nowrap;padding:5px 9px;background:#eef8f1;border-color:transparent}
  .campaign-workspace-body .campaign-detail-layout{grid-template-columns:1fr;gap:8px}.campaign-workspace-body .campaign-detail-card{padding:0;background:transparent;border:0;box-shadow:none}.campaign-detail-hint{display:none}
  .campaign-mobile-status{margin:0 0 10px;padding:11px 12px;background:#fff;border:0!important;border-radius:12px!important;box-shadow:0 1px 0 rgba(10,60,33,.05)!important}.status-row{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:6px 0;border-bottom:0!important}.status-row b{font-size:13px;white-space:nowrap}.status-row span:not(.pill){color:#243b31;font-weight:600;text-align:right;line-height:1.3}.status-row .pill{justify-self:start;width:auto;flex:0 0 auto}.campaign-status-disclosure{margin-top:7px;border:0!important;background:#f7faf8!important;border-radius:10px!important;box-shadow:none!important}.campaign-status-disclosure>summary{padding:12px 13px}.campaign-status-disclosure>summary:after{width:22px;height:22px;border-color:transparent;background:#e9f5ee}.campaign-status-disclosure .mobile-disclosure-body{padding:0 12px 12px}
  .campaign-action-panel{background:#fff;border-radius:12px;padding:12px;box-shadow:0 1px 0 rgba(10,60,33,.05);margin:0 0 10px}.campaign-action-head{align-items:flex-start}.campaign-action-head small{font-size:12px;line-height:1.25;text-align:right;max-width:150px}.campaign-detail-actions{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.campaign-action-choice{width:100%;min-height:72px!important;border:0!important;border-radius:13px!important;background:#f4f8f5!important;color:var(--primary-3)!important;padding:9px 6px!important;display:grid!important;grid-template-columns:1fr;gap:7px;justify-items:center;text-align:center;line-height:1.12;font-size:12.5px;box-shadow:none!important}.campaign-action-choice.is-active,.campaign-action-choice:not(:disabled):hover{background:var(--primary)!important;color:#fff!important}.campaign-action-choice.is-active .action-choice-icon,.campaign-action-choice:not(:disabled):hover .action-choice-icon{background:rgba(255,255,255,.18);color:#fff}.campaign-action-choice:disabled{opacity:.58}.action-choice-icon{width:34px;height:34px;background:#fff;color:var(--primary-3);font-size:17px;line-height:1;font-weight:900;box-shadow:0 1px 0 rgba(10,60,33,.04);display:inline-flex;align-items:center;justify-content:center;overflow:hidden}
  .campaign-work-panel{margin:0!important;border:0!important;background:#fff!important;border-radius:12px!important;box-shadow:0 1px 0 rgba(10,60,33,.05)!important;min-height:118px}.campaign-work-empty{min-height:110px;padding:6px 8px}.campaign-work-empty span{background:#eef7f1}.campaign-work-empty small{max-width:240px;line-height:1.3}
}

/* Desktop web UI: use wide tables/panels while preserving mobile cards */
.desktop-web-list{display:grid;gap:14px}
.desktop-list-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border:1px solid var(--line);background:var(--surface-soft);border-radius:6px;padding:14px 16px}.desktop-list-head h2{margin:0 0 4px}.desktop-list-head p{margin:0}.desktop-list-actions{display:flex;gap:8px;white-space:nowrap}.campaign-table-name{display:grid;gap:3px}.campaign-table-name b{color:var(--primary-3);font-size:14px}.campaign-table-name small{color:var(--muted);font-weight:700}.desktop-web-list .list-toolbar{grid-template-columns:minmax(280px,1fr) 140px auto;align-items:end}.desktop-web-list .table-wrap table{min-width:860px}.desktop-web-list .campaign-row-actions{flex-wrap:nowrap}.desktop-web-list .campaign-row-actions button{white-space:nowrap}.desktop-web-list .pager{justify-content:flex-end}.campaign-workspace-page{max-width:1440px;margin:0 auto;width:100%}.campaign-workspace-body .campaign-detail-card,.campaign-workspace-body .create-record-card{border-color:var(--line-strong)}
@media(min-width:761px){
  .campaign-workspace-head{position:sticky;top:59px;z-index:12}.campaign-workspace-head>button{order:0}.campaign-workspace-title{order:1}.campaign-workspace-head>.pill{order:2;margin-top:4px}.campaign-workspace-body .campaign-detail-layout{grid-template-columns:minmax(0,1fr) minmax(360px,.42fr);gap:16px}.campaign-detail-actions button{min-width:132px}.campaign-workspace-body .campaign-work-panel{min-height:160px}.campaign-workspace-body .create-record-card{position:sticky;top:154px}.campaign-workspace-body .create-record-card .field input{min-height:40px}
}
@media(max-width:760px){.desktop-web-list{display:none}}

/* Low-border readability pass: reduce visual noise while keeping clear grouping */
:root{--line:#e5ede7;--line-strong:#d7e2da;--shadow:0 1px 2px rgba(10,60,33,.035);--shadow-soft:0 12px 28px rgba(10,60,33,.10)}
.card,.metric,.stat,.sidebar,.business-panel,.group-chat-panel,.permission-editor,.campaign-list-card,.history-item,.step{border-color:#edf3ef;box-shadow:0 1px 2px rgba(10,60,33,.035)}
.capture-box,.campaign-work-panel,.campaign-basic-card,.campaign-location-card,.gps-check-card,.record-list-create-cta,.business-action-bar,.selected-campaign,.selected-files,.location-results,.campaign-card-permissions{border-color:#eaf2ed;background:#fff}
.section-head,.business-panel-head,.review-head{border-bottom-color:#edf3ef}
.pill,.permission-pill,.campaign-card-meta span,.export-chip,.user-chip,.locale-control{border-color:#e4eee8;background:#f7fbf8}
.field input,.field select,.field textarea,.record-editor input[id^="ek_"],.record-editor input[id^="ev_"],.record-editor input[id^="sa_"],.record-editor textarea[id^="sa_"],.record-editor select[id^="sa_"],.review-controls select,.review-controls textarea{border-color:#dfe8e2;background:#fff}
.table-wrap{border-color:#e6eee8}.table-wrap th,.table-wrap td{border-color:#e6eee8}.kv{border-color:#e6eee8}.kv div,.kv b{border-bottom-color:#edf3ef}

@media(max-width:760px){
  .layout{background:#f3f7f4}
  .card,.capture-box,.campaign-work-panel,.business-panel,.group-chat-panel,.permission-editor,.ai-review-panel,.mobile-disclosure,.campaign-list-card,.history-item,.record-list-create-cta,.selected-files,.campaign-mobile-status,.gps-check-card,.campaign-basic-card,.campaign-location-card{border-color:transparent;box-shadow:0 1px 0 rgba(10,60,33,.05)}
  .card,.capture-box,.campaign-work-panel,.mobile-disclosure,.campaign-list-card,.history-item,.record-list-create-cta{border-radius:7px}
  .mobile-disclosure[open]>summary,.section-head,.business-panel-head,.review-head,.status-row{border-bottom-color:#edf3ef}
  .campaign-workspace-head,.app-modal-head,.app-modal-campaign-create-page .app-modal-head,.app-modal-campaign-detail-page .app-modal-head,.app-modal-record-create-page .app-modal-head{border-bottom:0;box-shadow:0 1px 0 rgba(10,60,33,.07)}
  .record-list-create-cta{background:#fff}
  .campaign-card-meta span,.permission-pill,.pill{border-color:transparent;background:#f2f7f4}
  .table-wrap tbody{gap:10px}
  .table-wrap tr{border:0;border-radius:8px;box-shadow:0 1px 0 rgba(10,60,33,.06);background:#fff}
  .table-wrap td{border-bottom:0;padding:7px 10px}
  .table-wrap td+td{border-top:1px solid #f0f4f1}
  .kv{border:0;box-shadow:0 1px 0 rgba(10,60,33,.06)}
  .kv div{border-bottom-color:#f0f4f1}.kv b{border-bottom:0;background:#f7fbf8}
  .capture-file-card,.selected-file{border-color:transparent;background:#f6faf7}
  .empty{border-color:#e5ede7;background:#f7faf8}
}

.session-workspace{display:grid;gap:12px}.session-current-card{display:grid!important;grid-template-columns:1fr!important;gap:12px;background:#fff;border:0;border-radius:12px;padding:13px;box-shadow:0 1px 0 rgba(10,60,33,.05)}.session-current-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.session-current-head h3{margin:2px 0 4px;color:var(--primary-3)}.session-current-head p{margin:0}.session-detail-body{display:grid;gap:0;border-radius:10px;overflow:hidden;background:#fff}.session-detail-row{display:grid;grid-template-columns:118px minmax(0,1fr);gap:10px;padding:10px 0;border-top:1px solid #edf3ef;align-items:start}.session-detail-row b,.session-detail-block>b{color:var(--primary-3)}.session-detail-row span,.session-detail-row a{overflow-wrap:anywhere}.session-detail-block{display:grid;gap:8px;padding:10px 0;border-top:1px solid #edf3ef}.session-detail-actions{padding-top:10px;border-top:1px solid #edf3ef}.session-detail-actions button{width:100%;min-height:44px}.session-history-section{display:grid;gap:10px;background:#fff;border-radius:12px;padding:12px;box-shadow:0 1px 0 rgba(10,60,33,.05)}.session-history-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.session-history-head b{color:var(--primary-3)}.session-history-head small{display:block;color:var(--muted);font-weight:700;margin-top:2px}.session-history-list{display:grid;gap:8px}.session-history-item{border:0!important;background:#f6faf7!important;border-radius:10px!important;box-shadow:none!important}.session-history-item>summary{padding:11px 12px!important;align-items:center}.session-history-item>summary:after{background:#e9f5ee!important;border-color:transparent!important}.session-history-item .pill{white-space:normal;text-align:center;max-width:118px}.session-summary-main{display:grid;gap:3px;min-width:0}.session-summary-main b{color:var(--primary-3);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-summary-main small{color:var(--muted);font-weight:700;line-height:1.25}.session-photo-links a{font-weight:800}
@media(max-width:760px){.session-current-card,.session-history-section{padding:12px}.session-detail-row{grid-template-columns:1fr;gap:4px;padding:9px 0}.session-detail-block{padding:9px 0}.session-history-item .mobile-disclosure-body{padding:0 12px 12px}.session-history-item .gps-admin-cell{gap:5px}.session-history-item .session-map{height:120px}.session-current-card .session-map{height:170px}}

/* Flatten previous-session details: avoid card-in-card feel on mobile */
.session-filter-toolbar{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;align-items:end;margin-bottom:4px}
.session-filter-toolbar .field{margin:0}
.session-filter-toolbar .field span{font-weight:800;color:var(--primary-3);font-size:13px}
.session-filter-toolbar input,.session-filter-toolbar select{min-height:42px}
.session-filter-toolbar .session-filter-clear{min-height:42px;align-self:end}
@media(max-width:760px){.session-filter-toolbar{grid-template-columns:1fr;gap:8px}}
.session-history-section{background:transparent!important;box-shadow:none!important;padding:2px 0 0!important;border-radius:0!important}
.session-history-head{padding:0 2px 2px}.session-history-list{gap:10px}.session-history-item{background:#fff!important;border:1px solid #e8f1ec!important;border-radius:10px!important;box-shadow:0 1px 0 rgba(10,60,33,.04)!important;overflow:hidden}.session-history-item>summary{padding:12px 14px!important;background:#f8fbf9}.session-history-item[open]>summary{border-bottom:1px solid #edf3ef!important}.session-history-item>summary:after{background:#eef8f2!important;border:0!important}.session-history-item .mobile-disclosure-body{padding:0!important}.session-history-item .session-detail-body{background:transparent;border-radius:0;overflow:visible}.session-history-item .session-detail-row,.session-history-item .session-detail-block{padding:12px 14px;border-top:0;border-bottom:1px solid #eef4f0}.session-history-item .session-detail-row:last-child,.session-history-item .session-detail-block:last-child{border-bottom:0}.session-history-item .gps-admin-cell{padding-top:2px}.session-history-item .session-map{border-radius:8px}
@media(max-width:760px){.session-history-section{padding:4px 0 0!important}.session-history-head{padding:0 1px 4px}.session-history-item>summary{padding:12px!important}.session-history-item .session-detail-row,.session-history-item .session-detail-block{padding:12px}.session-history-item .session-detail-body{box-shadow:none}.session-history-item .pill{max-width:112px;font-size:12px;line-height:1.25;padding:6px 8px}.session-summary-main small{display:block!important;font-size:12px;line-height:1.25;color:var(--muted)!important;font-weight:700}html,body{overflow-x:hidden}.app-shell,.main,.campaign-workspace-page,.campaign-workspace-body,.campaign-workspace-body .campaign-detail-layout,.campaign-work-panel,#campaign_work,.session-workspace,.session-current-card,.session-history-section,.session-history-list,.session-history-item,.pager{width:100%!important;max-width:100%!important;min-width:0!important;box-sizing:border-box}.campaign-workspace-body .campaign-detail-layout{grid-template-columns:minmax(0,1fr)!important}.session-workspace{grid-template-columns:minmax(0,1fr)!important;overflow:visible!important}#campaign_work{overflow:visible!important}.session-current-card,.session-history-item,.session-history-item>summary,.session-detail-body,.session-detail-block,.gps-admin-cell,.mini-map,.session-map{min-width:0!important;box-sizing:border-box}.session-current-card{padding:12px!important;overflow:visible!important}.session-current-head{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:7px!important}.session-current-head .pill{justify-self:start;max-width:100%;white-space:normal}.session-detail-body{overflow:visible!important}.session-history-item>summary{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(82px,auto) 24px;gap:6px;align-items:center}.session-summary-main,.session-summary-main b,.session-summary-main small{min-width:0;overflow-wrap:anywhere}.session-history-item .session-map,.session-current-card .session-map,.session-current-card .mini-map{display:block;width:100%!important;max-width:100%!important}.session-current-card .map-open-label,.session-history-item .map-open-label{right:6px;bottom:6px;max-width:calc(100% - 12px);padding:6px 8px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.session-detail-actions button{max-width:100%}.pager{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:stretch}.pager span{grid-column:1/-1}.pager button{width:100%;min-width:0}}

/* Mobile back controls: use CSS-drawn chevrons so glyph baselines cannot drift */
@media(max-width:760px){
  .campaign-back-icon .back-icon{font-size:18px!important;line-height:1!important;color:var(--primary-3)!important;overflow:visible}
  .app-modal-campaign-create-page .app-modal-head{display:grid!important;grid-template-columns:44px minmax(0,1fr) auto!important;align-items:center!important;gap:10px!important;padding:10px 12px!important}
  .app-modal-campaign-detail-page .app-modal-head,.app-modal-record-create-page .app-modal-head,.app-modal-group-page .app-modal-head{display:grid!important;grid-template-columns:44px minmax(0,1fr);align-items:center!important;gap:10px!important;padding:10px 12px!important}
  .app-modal-campaign-create-page .app-modal-head h2,.app-modal-campaign-detail-page .app-modal-head h2,.app-modal-record-create-page .app-modal-head h2,.app-modal-group-page .app-modal-head h2{order:2;min-width:0;margin:0;font-size:16px!important;line-height:1.18;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .app-page-back-btn{order:1;width:44px!important;height:44px!important;min-width:44px!important;min-height:44px!important;padding:0!important;border-radius:999px!important;border-color:transparent!important;background:#f3f7f4!important;color:var(--primary-3)!important;display:flex!important;align-items:center!important;justify-content:center!important;position:relative!important;overflow:hidden!important;font-size:0!important;line-height:0!important;text-align:center!important;white-space:nowrap!important}.app-page-back-btn .fa-solid{font-size:18px!important;line-height:1!important}.app-page-back-btn .back-label{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;white-space:nowrap!important}
}

/* Mobile record detail: flat, app-like, no card-in-card borders */
@media(max-width:760px){
  .app-modal-body:has(>.record-editor){padding:0!important;background:#fff!important}
  .app-modal-body>.record-editor{display:flex!important;flex-direction:column;background:#fff!important;padding:0!important;gap:0!important;box-shadow:none!important}
  .record-editor-main,.record-editor-side{display:grid;gap:12px;min-width:0;max-width:100%;overflow:hidden;background:#fff}
  /* Mobile: tiêu đề hồ sơ ĐỨNG ĐẦU, rồi tới khu Tải ảnh + trạng thái đọc (điểm bắt đầu của luồng); thông tin/giá trị các trường xuống dưới */
  .record-editor-header{order:-2;padding:14px 14px 12px;margin:0}
  .record-editor-side{order:-1;padding:14px 14px 4px}.record-editor-main{padding:6px 14px 18px}
  .record-editor-main>*,.record-editor-side>*{min-width:0;max-width:100%;box-sizing:border-box}
  .record-info-editor{gap:10px;margin-bottom:0}.record-info-editor .field{margin-bottom:0}.record-info-editor .row{display:grid;grid-template-columns:1fr;gap:8px}.record-info-editor button{width:100%;min-height:42px;justify-content:center}
  .record-editor-main>.evidence-cover{display:none!important}
  .record-editor .kv{display:grid!important;grid-template-columns:1fr!important;border:0!important;border-radius:0!important;box-shadow:none!important;background:#fff!important;overflow:visible!important;margin:0;border-top:1px solid #edf3ef!important}
  .record-editor .kv b,.record-editor .kv div{padding:10px 0!important;border:0!important;background:#fff!important}
  .record-editor .kv b{padding-bottom:2px!important;color:var(--primary-3);font-size:13px;line-height:1.25}
  .record-editor .kv div{padding-top:0!important;border-bottom:1px solid #edf3ef!important;font-size:15px;color:var(--text)}
  .record-editor .kv div:last-child{border-bottom:0!important}
  .record-editor-main>.capture-box{margin:0!important;padding:0 0 12px!important;border:0!important;border-radius:0!important;background:#fff!important;box-shadow:none!important;border-bottom:1px solid #edf3ef!important}
  .record-editor-main>.capture-box .pill{font-size:14px;padding:7px 12px;background:#eef8f2!important;border:1px solid #bfe3cd!important;color:var(--primary-3)}
  .record-editor-main>.capture-box.otp-box{display:grid;gap:9px;padding:12px 0!important}.record-editor-main>.capture-box.otp-box p{margin:0}.record-editor-main>.capture-box.otp-box .row{display:grid;grid-template-columns:1fr;gap:8px}.record-editor-main>.capture-box.otp-box button,.record-editor-main>.capture-box.otp-box input{width:100%;min-width:0;max-width:100%;min-height:44px;overflow-wrap:anywhere;white-space:normal;text-align:center}.record-editor-main>.capture-box.otp-box input{font-size:16px!important;line-height:1.35;touch-action:manipulation}
  .record-editor .ai-review-panel{margin:0!important;padding:12px 0 0!important;border:0!important;border-radius:0!important;background:#fff!important;box-shadow:none!important;border-top:1px solid #edf3ef!important}
  .record-editor .record-fields-editor{gap:9px}
  /* iOS auto-zoom khi focus ô < 16px. Layout mobile của editor chạy ở ≤760px nhưng rule 16px chung chỉ ở ≤520px → ô sửa giá trị trường (#ev_) bị zoom trên khung 521–760px. Ép 16px cho cả dải editor. */
  .record-editor .record-fields-editor .rf-input input{font-size:16px}
  .record-field-row{grid-template-columns:1fr!important;gap:7px!important;padding:11px 12px!important;border:0!important;border-radius:10px!important;background:#f8fbf9!important}
  .record-field-row.is-missing{background:#fff6f5!important;box-shadow:inset 0 0 0 1px #f3c7c2}
  .record-field-row .rf-status{justify-self:start}
  .record-editor .review-head{border:0!important;padding:0!important;margin:0 0 10px!important;gap:8px!important}.record-editor .review-head h3{font-size:18px;line-height:1.2;margin:0!important}.record-editor .review-head p{display:none!important}
  .record-editor .autofill-btn{width:100%;margin-left:0;min-height:42px;justify-content:center}
  .record-editor .review-controls{background:#f8fbf9;border:0;border-radius:10px;padding:10px;gap:8px!important}.record-editor .review-controls .field span{font-size:12px}
  .record-editor .resource-status-disclosure,.record-editor .record-json-disclosure{border:0!important;border-radius:10px!important;background:#f8fbf9!important;box-shadow:none!important;overflow:hidden;margin:0!important}
  .record-editor .mobile-disclosure>summary{padding:11px 12px!important;background:#f8fbf9!important;border:0!important}.record-editor .mobile-disclosure[open]>summary{border-bottom:1px solid #edf3ef!important}.record-editor .mobile-disclosure-body{padding:10px 12px!important;background:#fff}
  .record-editor .answer-review-card,.record-editor .record-upload-flow,.record-editor .resource-card,.record-editor .selected-files{box-shadow:none!important;border:0!important;background:#f8fbf9!important;border-radius:10px!important}
  .record-editor .record-primary-actions{display:grid!important;grid-template-columns:1fr;gap:8px;margin:0;padding-top:0}.record-editor .record-primary-actions button{width:100%;min-height:42px}
}

/* Touch browsers can keep :hover stuck after a tap; only .is-active should look selected on mobile */
@media(max-width:760px){
  .campaign-action-choice:not(.is-active):not(:disabled):hover{background:#f4f8f5!important;color:var(--primary-3)!important}
  .campaign-action-choice:not(.is-active):not(:disabled):hover .action-choice-icon{background:#fff!important;color:var(--primary-3)!important}
}

/* Modern flat campaign location picker */
@media(max-width:760px){
  .app-modal-campaign-create-page .campaign-location-card{border:0!important;box-shadow:none!important;background:#fff!important;border-radius:0!important;padding:0 12px 12px!important}
  .app-modal-campaign-create-page .compact-head{margin:0;padding:0 0 10px;border-bottom:1px solid #eef3f0}
  .app-modal-campaign-create-page .location-guide-steps{gap:5px;margin-top:7px}
  .app-modal-campaign-create-page .location-guide-steps li{border:0;background:#f7faf8;border-radius:8px;padding:8px 10px 8px 36px}
  .app-modal-campaign-create-page .location-guide-fallback{border:0;border-radius:8px;background:#f7faf8;margin-top:7px}
  .app-modal-campaign-create-page .location-picker-shell{border:0;border-radius:10px;background:#fff;box-shadow:none;margin:10px 0 8px;overflow:hidden}
  .app-modal-campaign-create-page .location-picker-shell .campaign-map-box{border:0;border-radius:10px;min-height:238px;background:#f3f6f4}
  .app-modal-campaign-create-page .location-picker-shell .campaign-map-preview{height:248px;border-radius:10px}
  .app-modal-campaign-create-page .selected-location-strip{border:0;border-top:1px solid #edf3ef;padding:10px 2px 2px;background:#fff;font-size:13px}
  .app-modal-campaign-create-page .location-actions{gap:8px;margin-bottom:8px}
  .app-modal-campaign-create-page .map-link-field input{border-color:#dce7e1;border-radius:9px;min-height:48px;background:#fff;box-shadow:0 1px 0 rgba(10,60,33,.04);font-size:16px}
  .app-modal-campaign-create-page .location-button-row{grid-template-columns:.75fr 1fr 1fr!important;gap:7px}
  .app-modal-campaign-create-page .location-button-row button{min-height:42px;border-radius:8px!important;white-space:normal;padding:8px 7px!important;font-size:13px}
  .app-modal-campaign-create-page .location-results{border:0;border-radius:10px;background:#fff;box-shadow:none;overflow:hidden;margin-top:2px}
  .app-modal-campaign-create-page .location-results-head{background:#f7faf8;border:0;border-bottom:1px solid #edf3ef;padding:9px 10px}
  .app-modal-campaign-create-page .location-result{border:0;border-bottom:1px solid #edf3ef;border-radius:0;padding:10px 40px 10px 10px;background:#fff}
  .app-modal-campaign-create-page .location-result:last-child{border-bottom:0}
  .app-modal-campaign-create-page .location-result em{right:9px;border-radius:999px;background:#eef8f2;color:var(--primary-3);font-style:normal;font-size:12px;padding:4px 7px}
  .app-modal-campaign-create-page .radius-control{border:0;border-radius:10px;background:#f7faf8;padding:11px}
}

/* Mobile group list: compact app-like rows, details only after opening */
.group-mobile-list{display:grid;gap:9px;margin-top:10px}
.group-mobile-item{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center;background:#fff;border:0;border-radius:10px;padding:9px;box-shadow:0 1px 0 rgba(10,60,33,.06)}
.group-mobile-main{min-width:0;width:100%;display:grid;grid-template-columns:38px minmax(0,1fr) 26px;gap:10px;align-items:center;text-align:left;background:transparent!important;border:0!important;color:var(--text)!important;padding:0!important;box-shadow:none!important;min-height:44px}
.group-mobile-avatar{width:38px;height:38px;border-radius:10px;background:#eef8f2;color:var(--primary-3);display:inline-flex;align-items:center;justify-content:center;font-size:16px;line-height:1}
.group-mobile-copy{min-width:0;display:grid;gap:3px}.group-mobile-copy b{color:var(--primary-3);font-size:15px;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-mobile-copy small{color:var(--muted);font-weight:700;font-size:12px;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.group-mobile-open{display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:14px}
.group-mobile-actions{display:flex;gap:6px}.group-icon-btn{width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;border-radius:10px!important;padding:0!important;display:inline-flex!important;align-items:center!important;justify-content:center!important}.group-icon-btn .fa-solid{font-size:15px}
@media(max-width:520px){.group-mobile-list{gap:8px;margin-top:8px}.group-mobile-item{padding:9px}.group-mobile-actions{gap:5px}.group-icon-btn{width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important}.group-mobile-copy b{font-size:14px}}
/* Bảng "đợt trong nhóm" dùng table() chung → trên mobile (≤520px) mỗi td xuống dòng khiến nút unlink rớt xuống dưới tên đợt. Ép tên đợt + nút unlink cùng một dòng trong từng thẻ. */
@media(max-width:520px){
  .group-campaign-table .table-wrap tr{display:flex;align-items:center;gap:10px}
  .group-campaign-table .table-wrap td{display:flex;align-items:center;width:auto;border-bottom:0;padding:10px 12px}
  .group-campaign-table .table-wrap td::before{display:none}
  .group-campaign-table .table-wrap td:first-child{flex:1 1 auto;min-width:0;overflow-wrap:anywhere;font-weight:700;color:var(--primary-3)}
  .group-campaign-table .table-wrap td:last-child{flex:0 0 auto;margin-left:auto;justify-content:flex-end}
  .group-campaign-table .table-wrap td:last-child>button{width:auto}
}

/* Campaign declared data fields: mobile-first, OCR-value mental model */
.col-def-field .col-def-hint{margin:0;color:#52635a;line-height:1.5}
.col-def-row{counter-increment:coldef;display:grid!important;grid-template-columns:22px 24px minmax(0,1fr) minmax(0,.85fr) 38px!important;grid-template-areas:'drag num name name del' '. . type req .' 'opts opts opts opts opts'!important;gap:9px 12px!important;align-items:center!important;padding:12px 0!important;border-bottom:1px solid #edf3ef!important;min-width:0!important;max-width:100%!important;box-sizing:border-box!important}
.col-def-row:last-child{border-bottom:0!important}
.col-def-drag{grid-area:drag;align-self:center}
.col-def-num{grid-area:num;align-self:center}
.col-def-name-wrap{grid-area:name;display:grid;gap:5px;min-width:0;width:100%}
.col-def-type-wrap{grid-area:type;display:grid;gap:5px;min-width:0;width:100%}
.col-def-req-wrap{grid-area:req;display:grid;gap:5px;min-width:0;justify-items:stretch;width:100%}
.col-def-name-wrap>span,.col-def-type-wrap>span,.col-def-req-wrap>span,.col-def-options-wrap>span{font-size:11.5px;font-weight:800;color:var(--muted);line-height:1.25}
.col-def-name{min-height:40px;font-size:14px;font-weight:700;grid-area:auto!important;justify-self:stretch!important}
.col-def-type{min-height:40px;font-size:13px}
.col-def-req.bin-seg{min-height:40px;align-items:center;background:#f7faf8}
.col-def-req .bin-seg-btn{min-height:34px;padding:7px 10px;font-size:12px}
.col-def-remove{grid-area:del!important;align-self:center!important;justify-self:end!important;border-radius:10px!important;background:#fff!important;color:var(--primary)!important}
.col-def-options-wrap{grid-area:opts;display:grid;gap:5px;padding:0 0 2px 56px!important}
@media(min-width:761px){
  .col-def-req.bin-seg{display:grid;grid-template-columns:1fr 1fr;width:100%;box-sizing:border-box}
  .col-def-req .bin-seg-btn{width:100%;justify-content:center;text-align:center}
  .topic-fields-list .col-def-row{grid-template-columns:22px 24px minmax(0,1fr) minmax(0,.85fr) 38px!important;grid-template-areas:'drag num name name del' '. . type req .' 'opts opts opts opts opts'!important;gap:9px 12px!important}
}
.col-def-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}
.col-def-actions button{min-height:42px;justify-content:center;display:inline-flex;align-items:center;gap:7px}
.sample-ocr-values{display:grid;grid-template-columns:minmax(110px,.42fr) minmax(0,1fr);border-radius:10px;overflow:hidden;background:#fff;border:1px solid #e5eee8;margin:0}
.sample-ocr-values dt,.sample-ocr-values dd{margin:0;padding:10px 11px;border-bottom:1px solid #edf3ef}
.sample-ocr-values dt{font-weight:800;color:var(--primary-3);background:#f8fbf9}
.sample-ocr-values dd{color:var(--muted);font-weight:700}
.sample-ocr-values dt:nth-last-child(-n+2),.sample-ocr-values dd:nth-last-child(-n+2){border-bottom:0}
@media(max-width:760px){
  .app-modal-campaign-create-page .cform-section{box-shadow:none!important;border-bottom:1px solid #edf3ef!important;border-radius:0!important;padding:14px 12px!important}
  .app-modal-campaign-create-page .col-def-field{gap:10px;margin-bottom:0}
  .app-modal-campaign-create-page .col-def-row{grid-template-columns:22px 24px minmax(0,1fr) 38px!important;grid-template-areas:'drag num name del' 'type type type type' 'req req req req' 'opts opts opts opts'!important;gap:9px!important;padding:12px 0!important;align-items:center!important}
  .app-modal-campaign-create-page .col-def-name-wrap{gap:4px}
  .app-modal-campaign-create-page .col-def-name-wrap>span{font-size:12px;color:var(--primary-3)}
  .app-modal-campaign-create-page .col-def-name{min-height:44px;font-size:16px;padding:10px 12px;border-radius:10px}
  .app-modal-campaign-create-page .col-def-type-wrap,.app-modal-campaign-create-page .col-def-req-wrap{border:0;background:#f8fbf9;border-radius:10px;padding:9px 10px}
  .app-modal-campaign-create-page .col-def-type{min-height:42px;background:#fff}
  .app-modal-campaign-create-page .col-def-req{width:100%;display:grid;grid-template-columns:1fr 1fr;border:0;background:#fff;padding:3px}
  .app-modal-campaign-create-page .col-def-req .bin-seg-btn{width:100%;padding:8px 6px;font-size:12.5px}
  .app-modal-campaign-create-page .col-def-remove{width:38px!important;height:38px!important;min-width:38px!important;align-self:center!important;justify-self:end!important;border-color:#e0e7e3!important;color:var(--danger)!important;background:#fff!important}
  .app-modal-campaign-create-page .col-def-drag,.app-modal-campaign-create-page .col-def-num{align-self:end;margin-bottom:9px}
  .app-modal-campaign-create-page .col-def-options-wrap{padding:0!important;background:#f8fbf9;border-radius:10px;padding:9px 10px!important}
  .app-modal-campaign-create-page .col-def-actions{grid-template-columns:1fr;gap:8px}.app-modal-campaign-create-page .col-def-actions button{width:100%;min-height:44px}
  .sample-ocr-values{grid-template-columns:1fr;border:0;background:#fff}.sample-ocr-values dt{padding:10px 0 2px;background:#fff;border:0}.sample-ocr-values dd{padding:0 0 10px;border-bottom:1px solid #edf3ef}.sample-ocr-values dd:last-child{border-bottom:0}
}
/* Mobile declared-field editor: balanced app-card layout */
@media(max-width:760px){
  .col-def-list{gap:10px!important}
  .col-def-row,
  .app-modal-campaign-create-page .col-def-row{
    position:relative;
    grid-template-columns:34px minmax(0,1fr) minmax(0,1fr) 42px!important;
    grid-template-areas:'num name name del' 'type type req req' 'opts opts opts opts'!important;
    gap:9px 10px!important;
    padding:12px 0 14px!important;
    align-items:center!important;
  }
  .col-def-drag,
  .app-modal-campaign-create-page .col-def-drag{display:none!important}
  .col-def-num,
  .app-modal-campaign-create-page .col-def-num{
    grid-area:num!important;
    width:30px;height:30px;border-radius:10px;background:#f2f7f4;color:#3f574b;
    display:flex;align-items:center;justify-content:center;align-self:end!important;margin:0 0 5px!important;
    font-size:12px;font-weight:900;text-align:center;
  }
  .col-def-name-wrap,
  .app-modal-campaign-create-page .col-def-name-wrap{grid-area:name!important;gap:4px!important;width:100%!important;min-width:0!important}
  .col-def-name-wrap>span,
  .app-modal-campaign-create-page .col-def-name-wrap>span{font-size:12px!important;color:var(--primary-3)!important}
  .col-def-name,
  .app-modal-campaign-create-page .col-def-name{width:100%!important;min-height:46px!important;font-size:16px!important;border-radius:11px!important;box-sizing:border-box!important}
  .col-def-remove,
  .app-modal-campaign-create-page .col-def-remove{grid-area:del!important;width:42px!important;height:42px!important;min-width:42px!important;align-self:end!important;margin-bottom:1px!important;border-radius:12px!important}
  .col-def-type-wrap,
  .col-def-req-wrap,
  .app-modal-campaign-create-page .col-def-type-wrap,
  .app-modal-campaign-create-page .col-def-req-wrap{
    display:grid!important;grid-template-columns:1fr!important;gap:6px!important;width:100%!important;min-width:0!important;
    border:0!important;background:#f8fbf9!important;border-radius:12px!important;padding:9px 8px!important;box-sizing:border-box!important;
    justify-items:stretch!important;align-content:start!important;
  }
  .col-def-type-wrap,.app-modal-campaign-create-page .col-def-type-wrap{grid-area:type!important}
  .col-def-req-wrap,.app-modal-campaign-create-page .col-def-req-wrap{grid-area:req!important}
  .col-def-type-wrap>span,
  .col-def-req-wrap>span,
  .app-modal-campaign-create-page .col-def-type-wrap>span,
  .app-modal-campaign-create-page .col-def-req-wrap>span{font-size:12px!important;line-height:1.25!important;color:#52635a!important}
  .col-def-type,
  .app-modal-campaign-create-page .col-def-type{grid-area:auto!important;width:100%!important;min-height:46px!important;background:#fff!important;border-radius:11px!important;font-size:16px!important;box-sizing:border-box!important}
  .col-def-req.bin-seg,
  .app-modal-campaign-create-page .col-def-req.bin-seg{grid-area:auto!important;width:100%!important;display:grid!important;grid-template-columns:1fr 1fr!important;border:0!important;background:#fff!important;padding:3px!important;box-sizing:border-box!important}
  .col-def-req .bin-seg-btn,
  .app-modal-campaign-create-page .col-def-req .bin-seg-btn{width:100%!important;min-height:38px!important;padding:8px 6px!important;font-size:13px!important;text-align:center!important;justify-content:center!important}
  .col-def-options-wrap,
  .app-modal-campaign-create-page .col-def-options-wrap{grid-area:opts!important;padding:10px!important;background:#f8fbf9!important;border-radius:12px!important;box-sizing:border-box!important}
}
/* Mobile group member list: compact list rows instead of stacked table cells */
.group-member-list{display:grid;gap:9px}
.group-member-row{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:'main actions' 'perms perms';gap:8px 10px;align-items:center;background:#fff;border:1px solid #e8f1ec;border-radius:10px;padding:10px;box-shadow:0 1px 0 rgba(10,60,33,.04)}
.group-member-main{grid-area:main;display:grid;grid-template-columns:38px minmax(0,1fr);gap:10px;align-items:center;min-width:0}
.group-member-avatar{width:38px;height:38px;border-radius:10px;background:#eef8f2;color:var(--primary-3);display:flex;align-items:center;justify-content:center;font-size:15px;line-height:1;flex:0 0 auto}
.group-member-copy{display:grid;gap:4px;min-width:0}.group-member-copy b{font-size:15px;line-height:1.2;color:#17221c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-member-copy .role-badge{justify-self:start;font-size:12px;padding:3px 8px;border-radius:7px}
.group-member-perms{grid-area:perms;min-width:0}.group-member-perm-list{display:flex;flex-wrap:wrap;gap:6px}.group-member-perm-chip{display:inline-flex;align-items:center;gap:5px;max-width:100%;border:1px solid #e2ece6;background:#f7fbf8;color:#34463d;border-radius:8px;padding:5px 8px;font-size:12.5px;font-weight:700;line-height:1.2}.group-member-perm-chip span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.group-member-perm-chip b{color:var(--primary-3);font-weight:900}.group-member-perm-chip.is-full{color:var(--primary-3);background:#eef8f2}
.group-member-actions{grid-area:actions;display:flex;gap:6px;align-self:start}.group-member-icon-btn{width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;border-radius:10px!important;background:#fff!important;border:1px solid #e4eee8!important;display:flex!important;align-items:center!important;justify-content:center!important}.group-member-icon-btn.edit-action{color:var(--primary)!important}.group-member-icon-btn.remove-action{color:#8c98a4!important}
@media(max-width:760px){
  .group-member-panel{padding:12px!important;background:#fff!important;border:0!important;box-shadow:0 1px 0 rgba(10,60,33,.05)!important;border-radius:10px!important}
  .group-member-panel .business-panel-head{margin-bottom:10px;padding-bottom:8px}
  .group-member-list{gap:8px}
  .group-member-row{border:0;border-radius:11px;background:#f8fbf9;box-shadow:none;padding:10px}
  .group-member-perm-chip{background:#fff;border-color:#edf3ef;max-width:100%}
  .group-member-panel .member-footer{margin-top:10px;display:grid;grid-template-columns:1fr;gap:8px;padding-top:10px}
  .group-member-panel .member-footer .footer-role{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;width:100%}
  .group-member-panel .member-footer .member-footer-field{width:100%}
  .group-member-panel .member-footer .footer-select,.group-member-panel .member-footer .footer-select-sm,.group-member-panel .member-footer .footer-add-btn{width:100%;min-height:42px;height:42px}
}
@media(max-width:380px){.group-member-row{grid-template-columns:minmax(0,1fr);grid-template-areas:'main' 'perms' 'actions'}.group-member-actions{justify-self:end}}

.capture-required-hint:empty{display:none}
.capture-required-hint{color:var(--warn);margin:6px 0 0}
.capture-actions{display:flex;gap:8px}
.otp-box{display:grid;gap:10px}
.otp-box .muted{margin:0}
.otp-phone-field{margin:0}
.otp-send-first-btn{width:100%;min-height:44px}
.otp-verify-grid{display:grid;gap:8px}
.otp-verify-grid input{width:100%;min-height:42px;font-size:18px;text-align:center;letter-spacing:.12em;font-weight:800}
.otp-action-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;align-items:center}
.otp-action-row button{min-height:42px;width:100%}
.otp-wait-text{display:block;color:var(--muted);font-weight:700;text-align:center;min-height:18px}
.otp-inline-status{min-height:20px;font-size:13px;font-weight:700;border-radius:9px;padding:0;color:var(--muted)}
.otp-inline-status:not(:empty){padding:8px 10px;background:#f8fafc}
.otp-inline-status.is-error:not(:empty){background:#fdecea;color:#b03a2e}
.otp-inline-status.is-ok:not(:empty){background:var(--primary-soft);color:var(--primary-3)}
button.is-loading{opacity:.75;pointer-events:none}
@media(max-width:420px){.otp-action-row{grid-template-columns:1fr 1fr}.otp-action-row button{padding:10px 8px;font-size:13px}}

/* Field survey simplified mobile workflow */
.field-records-workspace { padding: 0; background: transparent; border: 0; box-shadow: none; }
.field-survey-home { display: grid; gap: 12px; }
.field-step-card,
.field-summary-card,
.field-record-card { background: var(--card, #fff); border: 1px solid rgba(15, 23, 42, .08); border-radius: 18px; box-shadow: 0 10px 26px rgba(15,23,42,.06); }
.field-step-card { display: grid; grid-template-columns: 1fr; align-items: stretch; gap: 10px; padding: 14px; }
.field-step-number { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border-radius: 999px; background: #e0f2fe; color: #0369a1; font-weight: 800; }
.field-step-copy b,
.field-summary-card b { display: block; font-size: 15px; }
.field-step-copy p,
.field-summary-card p { margin: 3px 0 0; font-size: 12px; line-height: 1.35; }
.field-summary-card { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 13px 14px; }
.field-record-list { display: grid; gap: 10px; margin-top: 10px; }
.field-record-empty { margin-top: 10px; }
.field-record-card { padding: 12px; }
.field-record-main { width: 100%; border: 0; background: transparent; color: inherit; text-align: left; padding: 0; display: grid; gap: 5px; border-radius: 14px; }
.field-record-main:hover,.field-record-main:active,.field-record-main:focus{background:transparent!important;border-color:transparent!important;color:inherit!important;box-shadow:none!important}
.field-record-code { font-size: 18px; font-weight: 850; letter-spacing: .01em; color: #0f172a; }
.field-record-name { color: #475569; font-size: 13px; }
.field-record-chips { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 4px; }
.field-record-actions { display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 8px; margin-top: 10px; }
.field-confirm-box { border-color: rgba(14, 165, 233, .25); background: #f0f9ff; }
.field-extra-details { border: 1px dashed rgba(15, 23, 42, .14); border-radius: 12px; padding: 9px 11px; background: #f8fafc; }
.field-extra-details summary { cursor: pointer; font-weight: 700; color: #334155; }
.field-resource-status { margin-top: 10px; }
.field-resource-panel .resource-status-head { align-items: center; }
.field-resource-card .resource-card-title { align-items: center; }
.field-resource-collapsed{display:block!important;padding:0!important;overflow:hidden;background:#f8fbf9!important;border:1px solid #e6eee8!important}
.field-resource-summary{display:grid;grid-template-columns:34px minmax(0,1fr) auto 22px;gap:8px;align-items:center;cursor:pointer;padding:10px 12px;list-style:none;color:var(--primary-3)}
.field-resource-summary::-webkit-details-marker{display:none}
.field-resource-icon{width:34px;height:34px;border-radius:10px;background:var(--primary-soft);display:inline-flex;align-items:center;justify-content:center;color:var(--primary)}
.field-resource-summary-copy{display:grid;gap:3px;min-width:0}.field-resource-summary-copy b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13.5px}.field-resource-summary-copy .resource-meta{font-size:12px;color:var(--muted)}
.field-resource-open{color:var(--muted);transition:transform .18s ease}.field-resource-collapsed[open] .field-resource-open{transform:rotate(180deg)}
.field-resource-detail{display:grid;gap:10px;border-top:1px solid #edf3ef;padding:10px 12px;background:#fff}.field-resource-card.is-failed{border-color:#eeb3ac!important}.field-resource-card.is-failed .field-resource-icon{background:#fdf3f2;color:var(--danger)}
@media(max-width:760px){.field-resource-panel .resource-card-list{gap:6px}.field-resource-collapsed .resource-image-link,.field-resource-collapsed .pdf-preview,.field-resource-collapsed .image-fallback{height:min(52vh,520px)}}
/* Thực địa: dòng tên đợt + banner "cần rà soát" + chọn chủ đề + tab danh sách */
.field-campaign-line{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:2px 4px}
.field-campaign-line small{color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.04em;font-size:11px}
.field-campaign-line b{color:var(--primary-3);font-size:15px}
.field-review-banner{display:flex;align-items:center;gap:10px;width:100%;text-align:left;border:1px solid #f5d9a8;background:#fff8eb;color:#7c5a14;border-radius:14px;padding:12px 14px;font-weight:700;box-shadow:0 8px 20px rgba(183,121,31,.08)}
.field-review-banner:hover{background:var(--accent-soft);border-color:var(--accent)}
.field-review-banner .fa-bell{color:var(--warn);font-size:18px}
.field-review-banner .frb-text{flex:1 1 auto;min-width:0}
.field-review-banner .frb-cta{display:inline-flex;align-items:center;gap:6px;color:var(--primary);white-space:nowrap;font-size:13px}
.field-topic-select{margin:6px 0 0}
.field-topic-select select{width:100%;min-height:42px;font-weight:700;color:var(--primary-3)}
.field-create-card{border-color:var(--primary-line);background:linear-gradient(180deg,#f3fbf6,#fff)}
.field-create-code-btn{min-height:46px;font-size:15px}
.field-tabs{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;background:#eef4f0;border-radius:12px;padding:4px}
.field-tab{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;border:0;background:transparent;color:#41584b;border-radius:9px;min-height:44px;font-weight:700;font-size:12px;line-height:1.15;text-align:center;padding:6px 3px}
.field-tab:hover{background:#e2ece6}
.field-tab.is-active{background:#fff;color:var(--primary-3);box-shadow:0 2px 8px rgba(10,60,33,.12)}
.field-tab .tab-count{background:rgba(13,40,28,.08);border-radius:999px;font-size:11px;padding:1px 7px;font-weight:800;min-width:18px;text-align:center}
.field-tab.is-active .tab-count{background:var(--primary-soft);color:var(--primary-3)}
.field-processing-pill{display:inline-flex;align-items:center;gap:6px}
.field-processing-pill .mini-spinner{width:12px;height:12px;border-width:2px}
.field-review-btn{background:var(--accent);border-color:var(--accent);color:var(--primary-3)}
.field-review-btn:hover{background:var(--accent-2);border-color:var(--accent-2)}
/* Thực địa: trang MÃ HỒ SƠ — mã thật to để chép tay lên phiếu giấy */
.app-modal-field-code-page{width:min(480px,calc(100vw - 28px))}
.field-code-page{max-width:480px;margin:0 auto}
.field-code-card{display:grid;gap:12px;text-align:center;padding:8px 2px 4px}
.field-code-lead{margin:0;color:var(--muted);font-weight:700;text-transform:uppercase;letter-spacing:.06em;font-size:12px}
.field-code-display{font-size:clamp(56px,18vw,86px);font-weight:900;letter-spacing:.14em;line-height:1.05;color:var(--primary-3);background:var(--primary-soft);border:2px dashed var(--primary-line);border-radius:18px;padding:18px 10px;font-variant-numeric:tabular-nums;user-select:all}
.field-code-instruction{display:flex;align-items:center;justify-content:center;gap:8px;margin:0;font-weight:800;color:#334155;font-size:15px}
.field-code-instruction .fa-pen{color:var(--accent-2)}
.field-code-topic{margin:0}
.field-code-zone{display:flex;align-items:center;justify-content:center;gap:7px;margin:0;color:var(--warn);font-weight:700}
.field-code-actions{display:grid;gap:8px;margin-top:4px}
.field-code-actions button{min-height:46px;font-size:15px}
.field-code-done{background:transparent;border:0;color:var(--muted);font-weight:700;min-height:38px}
.field-code-done:hover{background:transparent;color:var(--primary-3);text-decoration:underline}

.field-topic-create-page{display:grid;gap:14px}.field-topic-create-page p{margin:0}.field-topic-create-page button{width:100%;min-height:46px;font-size:15px}.field-topic-create-page .field-topic-select{margin:0}.field-topic-create-page .field-topic-select span,.field-code-next-topic span{font-weight:800;color:var(--primary-3);font-size:13px}
.field-bulk-upload-box{display:grid;gap:10px}.field-bulk-upload-box input[type=file]{width:100%;min-height:44px;border:1px solid var(--line-strong);border-radius:12px;background:#fff;padding:9px}.field-bulk-upload-box button{width:100%;min-height:46px}.selected-files-compact{padding:0;border:0;background:transparent}.selected-files-disclosure{box-shadow:none}.selected-files-disclosure .selected-files-list{margin-top:0}.field-batch-status{margin-top:2px}.batch-progress-card{display:grid;gap:8px;border:1px solid var(--primary-line);background:#f7fbf8;border-radius:12px;padding:10px}.batch-progress-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.batch-progress-bar{height:8px;border-radius:999px;background:#e5eee8;overflow:hidden}.batch-progress-bar span{display:block;height:100%;border-radius:inherit;background:var(--primary);transition:width .2s ease}.batch-file-list{display:grid;gap:6px}.batch-file-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:7px;align-items:center;padding:7px;border:1px solid #edf3ef;border-radius:9px;background:#fff}.batch-file-name{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.batch-file-target{color:var(--muted);font-size:12px;white-space:nowrap}.batch-files-disclosure{border-color:#e4eee8;box-shadow:none}
/* Thực địa: khối rà soát & xác nhận dữ liệu trong hồ sơ */
.field-record-header .field-header-code{font-size:26px;font-weight:900;letter-spacing:.08em;color:var(--primary-3)}
.field-review-panel{display:grid;gap:10px;border:1px solid var(--line);border-radius:14px;padding:12px;background:#fff}
.field-review-head h3{margin:0}
.field-review-note{display:flex;align-items:flex-start;gap:9px;border-radius:11px;padding:10px 12px;background:#f1f5f9;color:#334155;font-weight:600;font-size:13.5px;line-height:1.4}
.field-review-note.is-working{background:#fff8eb;color:#7c5a14}
.field-review-note.is-review{background:#eef6ff;color:#1d4ed8}
.field-review-note.is-ok{background:var(--primary-soft);color:var(--primary-3)}
.field-review-note.is-warn{background:#fdecea;color:#b03a2e}
.field-review-note .mini-spinner{margin-top:2px}
.field-confirm-bar{display:grid;gap:6px;margin-top:2px}
.field-confirm-btn{min-height:48px;font-size:16px}
.field-save-later{background:transparent;border:0;color:var(--muted);font-weight:700;min-height:36px}
.field-save-later:hover{background:transparent;color:var(--primary-3);text-decoration:underline}
.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}
@media (max-width: 720px) {
  .field-step-card { grid-template-columns: 1fr; align-items: stretch; }
  .field-step-card > button { width: 100%; }
  .field-summary-card { align-items: stretch; flex-direction: column; }
  .field-summary-card > button { width: 100%; }
  .batch-file-row{grid-template-columns:1fr;gap:5px}.batch-file-target{white-space:normal}.batch-file-row .pill{justify-self:start}
}

/* Field workflow hero / stepper */
.field-flow-hero{background:#fff;border:1px solid rgba(15,23,42,.08);border-radius:18px;padding:10px;box-shadow:0 8px 20px rgba(15,23,42,.05)}
.field-flow-stepper{display:grid;grid-template-columns:repeat(3,1fr);gap:7px}.field-flow-step{display:flex;align-items:center;gap:7px;background:#f8fafc;border:1px solid #e7eee9;border-radius:12px;padding:8px;min-width:0}.ffs-dot{width:24px;height:24px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:#eaf5ef;color:#0f6b42;font-weight:900;flex:0 0 auto;font-size:12px}.ffs-copy{display:grid;gap:1px;min-width:0}.ffs-copy b{font-size:12px;line-height:1.2;color:#26352d}.ffs-copy small{font-size:11px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mobile-submit-hint{margin:0 0 10px;text-align:center}
@media(max-width:420px){.field-flow-stepper{grid-template-columns:repeat(3,1fr)}.field-flow-step{padding:7px 5px;display:grid;justify-items:center;text-align:center}.ffs-copy b,.ffs-copy small{white-space:normal}.ffs-dot{width:22px;height:22px}}


/* Mobile campaign topic/data-field editor polish: compact, flat, less sticky */
@media(max-width:760px){
  .app-modal-campaign-create-page .topic-def-field{margin:0!important;gap:10px!important}
  .app-modal-campaign-create-page .topic-def-intro{font-size:12.5px!important;line-height:1.4!important;margin:0 0 2px!important;color:#64756b!important}
  .app-modal-campaign-create-page .topic-def-list{display:grid!important;gap:10px!important}
  .app-modal-campaign-create-page .topic-def-row{border:1px solid #e6eee8!important;background:#fff!important;border-radius:14px!important;padding:12px!important;box-shadow:none!important;display:grid!important;gap:9px!important}
  .app-modal-campaign-create-page .topic-def-head{display:grid!important;grid-template-columns:minmax(0,1fr) 40px!important;gap:8px!important;align-items:end!important}
  .app-modal-campaign-create-page .topic-name-field{margin:0!important;gap:5px!important}
  .app-modal-campaign-create-page .topic-name-field>span{font-size:12.5px!important;line-height:1.25!important;font-weight:800!important;color:#0f6b42!important}
  .app-modal-campaign-create-page .topic-def-name{min-height:42px!important;border-radius:10px!important;padding:8px 12px!important;font-size:16px!important;font-weight:600!important;line-height:1.25!important;border-color:#dfe8e2!important;box-shadow:none!important}
  .app-modal-campaign-create-page .topic-def-name::placeholder,
  .app-modal-campaign-create-page .col-def-name::placeholder{font-size:15px!important;font-weight:600!important;color:#98a39c!important;opacity:1!important}
  .app-modal-campaign-create-page .topic-remove{width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;border-radius:10px!important;border-color:#e4ece7!important;background:#fff!important;color:#15945a!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important}
  .app-modal-campaign-create-page .topic-def-hint{font-size:12.5px!important;line-height:1.38!important;margin:0!important;color:#68786f!important}

  .app-modal-campaign-create-page .topic-fields-list.col-def-list{gap:8px!important}
  .app-modal-campaign-create-page .topic-fields-list .col-def-row{grid-template-columns:28px minmax(0,1fr) minmax(0,1fr) 38px!important;gap:8px!important;padding:10px!important;border:1px solid #edf3ef!important;border-radius:12px!important;background:#fbfdfc!important;box-shadow:none!important}
  .app-modal-campaign-create-page .topic-fields-list .col-def-num{width:26px!important;height:26px!important;border-radius:9px!important;background:#eef5f1!important;color:#486154!important;font-size:12px!important;font-weight:800!important;align-self:center!important;margin:18px 0 0!important}
  .app-modal-campaign-create-page .topic-fields-list .col-def-name-wrap{gap:4px!important;align-self:end!important}
  .app-modal-campaign-create-page .topic-fields-list .col-def-name-wrap>span,
  .app-modal-campaign-create-page .topic-fields-list .col-def-type-wrap>span,
  .app-modal-campaign-create-page .topic-fields-list .col-def-req-wrap>span{font-size:11.5px!important;line-height:1.2!important;font-weight:800!important;color:#5d6d64!important;letter-spacing:0!important}
  .app-modal-campaign-create-page .topic-fields-list .col-def-name{min-height:42px!important;border-radius:10px!important;padding:8px 11px!important;font-size:16px!important;font-weight:600!important;line-height:1.25!important;border-color:#dde7e1!important;box-shadow:none!important;background:#fff!important}
  .app-modal-campaign-create-page .topic-fields-list .col-def-remove{width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;border-radius:10px!important;align-self:end!important;margin:0 0 0!important;border-color:#e4ece7!important;background:#fff!important;color:#b03a2e!important;padding:0!important}
  .app-modal-campaign-create-page .topic-fields-list .col-def-type-wrap,
  .app-modal-campaign-create-page .topic-fields-list .col-def-req-wrap{background:transparent!important;border-radius:0!important;padding:0!important;gap:5px!important}
  .app-modal-campaign-create-page .topic-fields-list .col-def-type{min-height:40px!important;border-radius:10px!important;font-size:15px!important;font-weight:650!important;padding:7px 10px!important;border-color:#dde7e1!important;background:#fff!important;box-shadow:none!important}
  .app-modal-campaign-create-page .topic-fields-list .col-def-req.bin-seg{min-height:38px!important;border-radius:999px!important;background:#f4f7f5!important;padding:3px!important;box-shadow:none!important}
  .app-modal-campaign-create-page .topic-fields-list .col-def-req .bin-seg-btn{min-height:32px!important;border-radius:999px!important;font-size:12.5px!important;font-weight:750!important;padding:6px 8px!important}
  .app-modal-campaign-create-page .topic-fields-list .col-def-options-wrap{background:transparent!important;border-radius:0!important;padding:0!important;gap:5px!important}
  .app-modal-campaign-create-page .topic-fields-list .col-def-options-wrap input{min-height:40px!important;border-radius:10px!important;font-size:15px!important;font-weight:600!important}
  .app-modal-campaign-create-page .topic-add,
  .app-modal-campaign-create-page .col-def-add{min-height:40px!important;border-radius:10px!important;font-size:13.5px!important;font-weight:800!important;padding:9px 11px!important;background:#fff!important;box-shadow:none!important}
  .app-modal-campaign-create-page .topic-def-row>.col-def-add{margin-top:2px!important}
}

/* Researcher record workspace inside group detail */
.group-records-panel{display:grid;gap:12px}
.group-records-box{min-height:220px}
.research-records-workspace{display:grid;gap:12px;min-width:0}
.research-records-toolbar{display:grid;grid-template-columns:minmax(180px,.5fr) minmax(240px,1fr) auto;gap:10px;align-items:end;background:#f8fbf9;border:1px solid #e5eee8;border-radius:12px;padding:12px;min-width:0}
.research-records-toolbar .field{margin:0;min-width:0}.research-records-toolbar select,.research-records-toolbar input{width:100%;min-height:40px}.research-record-stats{display:flex;gap:7px;align-items:center;justify-content:flex-end;flex-wrap:wrap}
.research-records-layout{display:grid;grid-template-columns:minmax(260px,.42fr) minmax(0,1fr);gap:12px;min-height:520px;min-width:0}
.research-record-list{display:grid;align-content:start;gap:8px;max-height:620px;overflow:auto;padding-right:2px;min-width:0}
.research-record-item{width:100%;display:grid;grid-template-columns:52px minmax(0,1fr) auto;gap:10px;align-items:center;text-align:left;background:#fff;border:1px solid #e6eee8;border-radius:12px;padding:9px;box-shadow:none;color:var(--text)}
.research-record-item:hover,.research-record-item.is-active{border-color:#9bd5b5;background:#f4fbf7}.research-record-item.is-active{box-shadow:0 0 0 2px rgba(18,145,76,.12)}
.research-record-thumb{width:52px;height:52px;border-radius:10px;overflow:hidden;background:#f3f7f4;display:flex;align-items:center;justify-content:center}.research-record-thumb .thumb{width:100%;height:100%;object-fit:cover}.research-record-thumb .evidence-none{font-size:18px;color:#8aa196}
.research-record-copy{display:grid;gap:3px;min-width:0}.research-record-copy b,.research-record-copy small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.research-record-copy b{font-size:14px}.research-record-copy small{color:var(--muted);font-size:12px}
.research-record-badges{display:grid;justify-items:end;gap:5px}.research-record-badges small{font-size:12px;color:var(--muted);white-space:nowrap}
.research-record-detail{min-width:0;background:#fff;border:1px solid #e6eee8;border-radius:14px;overflow:hidden}.research-record-detail-inner{display:grid;gap:12px;padding:14px;min-width:0}
.research-detail-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;border-bottom:1px solid #edf3ef;padding-bottom:10px}.research-detail-head h3{margin:2px 0 2px;font-size:20px}.research-detail-head .eyebrow{text-transform:none;color:var(--primary-3);font-weight:800;font-size:12px}
.research-detail-grid{display:grid;grid-template-columns:minmax(260px,.9fr) minmax(260px,1fr);gap:12px;align-items:start;min-width:0}.research-files-pane,.research-values-pane{display:grid;gap:10px;min-width:0}.research-files-pane h4,.research-values-pane h4{margin:0;color:var(--primary-3)}
.research-files-pane .resource-card-list{max-height:560px;overflow:auto;padding-right:2px}.research-files-pane .resource-card{border-color:#e8f0eb}.research-values-pane .record-fields-editor{border:1px solid #e7eee9;border-radius:12px;overflow:hidden;background:#fff}.research-values-pane .record-field-row{grid-template-columns:minmax(160px,.75fr) minmax(0,1fr) auto}.research-detail-actions{display:flex;justify-content:flex-end;border-top:1px solid #edf3ef;padding-top:10px}
/* List hồ sơ nghiên cứu full-width (không còn panel detail inline) + modal đối chiếu ảnh|dữ liệu */
.research-record-list-full{grid-template-columns:1fr;max-height:none;overflow:visible}
.research-record-modal{display:grid;gap:12px}
.research-record-overlay .research-files-pane .resource-card-list{max-height:64vh}
.research-record-overlay .research-values-pane .record-fields-editor{max-height:64vh;overflow:auto}
@media(max-width:760px){.research-record-list-full{grid-template-columns:1fr}.research-record-overlay .research-files-pane .resource-card-list,.research-record-overlay .research-values-pane .record-fields-editor{max-height:none}}
@media(max-width:900px){.research-records-toolbar{grid-template-columns:1fr}.research-record-stats{justify-content:flex-start}.research-records-layout,.research-detail-grid{grid-template-columns:1fr;min-height:auto}.research-record-list{max-height:none}.research-record-detail{border-radius:12px}.research-detail-head{display:grid}.research-files-pane .resource-card-list{max-height:none}}


/* Searchable dropdowns inside group detail modals */
.searchable-field{display:grid;gap:5px;margin:0;min-width:0;position:relative}
.searchable-field>label{font-weight:700;color:var(--primary-3);font-size:13px;line-height:1.2}
.searchable-select{position:relative;min-width:0}
.searchable-select-button{width:100%;height:40px;min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:8px;border:1px solid var(--line-strong);border-radius:8px;background:#fff;color:var(--text);padding:8px 10px;text-align:left;font-weight:700;box-shadow:none}
.searchable-select-button:hover,.searchable-select[data-open="true"] .searchable-select-button{background:#fff;border-color:var(--primary);color:var(--primary-3);box-shadow:0 0 0 3px rgba(18,145,76,.12)}
.searchable-select-value{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.searchable-select-value.is-placeholder{color:var(--muted);font-weight:600}
.searchable-select-chevron{font-size:11px;color:var(--muted);flex:0 0 auto}
.searchable-select-menu{position:absolute;z-index:1010;left:0;right:0;top:calc(100% + 6px);border:1px solid var(--line-strong);border-radius:10px;background:#fff;box-shadow:0 14px 34px rgba(14,36,69,.18);padding:8px;min-width:min(320px,calc(100vw - 36px))}
.searchable-select-search{width:100%;border:1px solid var(--line);border-radius:8px;padding:8px 10px;background:var(--surface-soft);outline:0;margin-bottom:7px}
.searchable-select-search:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(18,145,76,.12);background:#fff}
.searchable-select-list{display:grid;gap:4px;max-height:240px;overflow:auto;overscroll-behavior:contain}
.searchable-select-option{width:100%;display:grid;gap:1px;text-align:left;border:0;background:#fff;color:var(--text);border-radius:8px;padding:8px 9px;font-weight:700}
.searchable-select-option small{color:var(--muted);font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.searchable-select-option:hover,.searchable-select-option.is-selected{background:var(--primary-soft);color:var(--primary-3)}
.searchable-select-empty{padding:10px;color:var(--muted);text-align:center;background:var(--surface-soft);border-radius:8px}
.group-add-footer{display:grid;grid-template-columns:minmax(260px,1fr) auto;align-items:end}
.group-add-footer .searchable-field{min-width:0}
.group-member-panel .member-footer{grid-template-columns:minmax(260px,1fr) minmax(210px,.55fr) auto}
.group-member-panel .member-footer .searchable-field{min-width:0}
@media(max-width:760px){
  .group-add-footer,.group-member-panel .member-footer{grid-template-columns:1fr!important}
  .searchable-select-button,.group-member-panel .member-footer .footer-add-btn{width:100%;height:42px;min-height:42px}
  .searchable-select-menu{position:fixed;left:14px;right:14px;top:auto;bottom:16px;max-height:70dvh}
  .searchable-select-list{max-height:46dvh}
}
