:root{
  --ink:#0f3d3e; --ink-2:#16504f; --paper:#f6f4ee; --card:#ffffff;
  --line:#dfdacb; --muted:#6b6f6a; --accent:#c2562b;
  --ok:#1f7a4d; --danger:#b4452f; --radius:12px;
  --shadow:0 1px 2px rgba(15,61,62,.06), 0 8px 24px rgba(15,61,62,.06);
  --en:"IBM Plex Sans", system-ui, sans-serif;
  --display:"Bricolage Grotesque", var(--en);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{background:var(--paper);color:var(--ink);font-family:var(--en);min-height:100vh;}
a{color:var(--ink-2);}
.admin-header{background:var(--ink);color:#f3efe6;padding:14px 20px;display:flex;align-items:center;gap:14px;flex-wrap:wrap;row-gap:8px;}
.admin-header h1{font-family:var(--display);font-size:1.1rem;margin:0;flex:1 1 auto;min-width:140px;}
.admin-header .btn-link{background:transparent;border:1px solid rgba(255,255,255,.3);color:#fff;padding:7px 12px;border-radius:8px;cursor:pointer;font-size:.85rem;text-decoration:none;display:inline-block;}
.admin-wrap{max-width:min(90rem,100%);margin:0 auto;padding:1.5rem 1.125rem 3rem;}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:1.375rem;box-shadow:var(--shadow);container-type:inline-size;}
.login-wrap{min-height:80vh;display:flex;align-items:center;justify-content:center;padding:24px;}
.login-card{width:100%;max-width:400px;}
.login-card h2{font-family:var(--display);margin:0 0 6px;}
.login-card p{margin:0 0 16px;color:var(--muted);font-size:.9rem;}
label{display:block;font-size:.85rem;margin:12px 0 6px;color:var(--ink-2);}
input[type=text],input[type=password],input[type=search],input[type=email],input[type=tel],input[type=number],input[type=date],textarea,select{
  width:100%;padding:11px 12px;border:1.5px solid var(--line);border-radius:10px;font-size:1rem;background:#fbfaf6;color:var(--ink);font-family:inherit;
}
textarea{min-height:80px;resize:vertical;}
/* Selects keep their native OS dropdown chrome on top of the custom
   border/background above unless appearance is reset -- looks unstyled at
   any width without this, not just narrow ones. */
select{
  appearance:none;-webkit-appearance:none;
  padding-right:36px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' stroke='%236b6f6a' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 12px center;
}
/* Constrains + centers a lone form card instead of it hugging the left edge
   of a much wider .admin-wrap -- used on the add-clinic/add-user/register
   cards. */
.form-card{max-width:28rem;margin:0 auto 1rem;}
input[type=password], input.no-copy-password{
  -webkit-user-select:none;
  user-select:none;
}
.btn{border:none;border-radius:10px;padding:12px 16px;font-family:var(--display);font-weight:700;cursor:pointer;}
.btn-primary{background:var(--ink);color:#fff;width:100%;margin-top:16px;}
.btn-secondary{background:transparent;border:1.5px solid var(--line);color:var(--ink);}
.err{color:var(--danger);font-size:.78rem;margin-top:8px;display:none;line-height:1.3;}
.err.show{display:block;}
.field-hint-err{margin:6px 0 0;font-size:.78rem;color:var(--danger);line-height:1.3;}
.field-hint-err[hidden]{display:none !important;}
.toolbar{display:flex;gap:10px;flex-wrap:wrap;align-items:center;margin-bottom:16px;}
.toolbar input{flex:1;min-width:200px;}
.toolbar .btn-primary{width:auto;margin-top:0;}
table{width:100%;border-collapse:collapse;font-size:.92rem;}
th,td{text-align:left;padding:10px 8px;border-bottom:1px solid var(--line);vertical-align:top;}
th{font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);}
.badge{display:inline-block;padding:3px 8px;border-radius:999px;font-size:.75rem;background:#efece3;}
.badge.submitted{background:#dcefe4;color:var(--ok);}
.badge.in_progress{background:#f4e3d8;color:#7a3315;}
.badge.band-low{background:#dcefe4;color:var(--ok);}
.badge.band-low-mod{background:#e8efe4;color:var(--ink-2);}
.badge.band-mod{background:#f4e3d8;color:#7a3315;}
.badge.band-high{background:#f4d4c8;color:var(--accent);}
.badge.band-vhigh,.badge.tier1-yes{background:#f3d6d0;color:var(--danger);}
.badge.tier1-no{background:#efece3;color:var(--muted);}
.score-panel{background:#eef4f1;border:1px solid #bcd6cb;border-radius:var(--radius);padding:16px;}
.score-panel-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:8px;}
.score-panel h3{font-family:var(--display);margin:0;font-size:1.05rem;}
.score-chip{display:inline-block;padding:3px 9px;border-radius:999px;font-size:.72rem;font-weight:700;background:#efece3;}
.score-chip.band-low{background:#dcefe4;color:var(--ok);}
.score-chip.band-low-mod{background:#e8efe4;color:var(--ink-2);}
.score-chip.band-mod{background:#f4e3d8;color:#7a3315;}
.score-chip.band-high{background:#f4d4c8;color:var(--accent);}
.score-chip.band-vhigh,.score-chip.tier1-yes{background:#f3d6d0;color:var(--danger);}
.score-chip.tier1-no{background:#efece3;color:var(--muted);}
.sumrow{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-top:1px solid #cfe0d7;font-size:.9rem;}
.sumrow .k{color:var(--ink-2);} .sumrow .v{font-weight:600;text-align:right;}
.disclaimer{font-size:.76rem;color:var(--muted);margin-top:12px;border-top:1px dashed #cfe0d7;padding-top:10px;}
.badge.active{background:#dcefe4;color:var(--ok);}
.badge.inactive{background:#e6e2d6;color:var(--muted);}
@container (max-width:50rem){
  .col-email{display:none;}
}
@container (max-width:36rem){
  table.stack-mobile thead{display:none;}
  table.stack-mobile tbody{display:block;width:100%;}
  table.stack-mobile tr{display:block;width:100%;border:1px solid var(--line);border-radius:0.625rem;padding:0.625rem 0.75rem;margin-bottom:0.625rem;}
  table.stack-mobile td{display:block;width:100%;border-bottom:none;padding:0.375rem 0;}
  table.stack-mobile td[data-label]::before{content:attr(data-label);display:block;font-size:0.72rem;text-transform:uppercase;letter-spacing:0.04em;color:var(--muted);}
  table.stack-mobile td:empty{display:none;}
}
table.stack-mobile.is-empty{display:none;}
.meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:12px;margin-bottom:18px;}
.meta .item{background:#fbfaf6;border:1px solid var(--line);border-radius:10px;padding:12px;}
.meta .k{font-size:.75rem;color:var(--muted);text-transform:uppercase;}
.meta .v{font-weight:600;margin-top:4px;word-break:break-word;}
.section{margin-top:22px;}
.section h3{font-family:var(--display);margin:0 0 10px;font-size:1.05rem;}
.answer-row{display:grid;grid-template-columns:minmax(160px,280px) 1fr;gap:10px;padding:8px 0;border-top:1px solid var(--line);font-size:.9rem;}
.answer-row .q{color:var(--ink-2);}
.answer-row .a{font-weight:500;word-break:break-word;}
.empty{color:var(--muted);padding:20px 0;}
.ok-msg{color:var(--ok);font-size:.85rem;margin-top:10px;}
.text-button{display:block;width:100%;border:0;background:transparent;color:var(--ink-2);text-decoration:underline;margin:12px 0 0;cursor:pointer;font:inherit;font-size:.84rem;text-align:center;padding:0;}
.patient-link{display:block;margin-top:16px;font-size:.8rem;color:var(--muted);text-align:center;}
.pw-field{position:relative;display:flex;align-items:center;}
.pw-field input{width:100%;padding-right:44px;}
.pw-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:none;background:transparent;color:var(--muted);cursor:pointer;padding:4px;display:grid;place-items:center;}
.pw-toggle:hover{color:var(--ink);}
.modal-backdrop{position:fixed;inset:0;background:rgba(15,61,62,.45);display:flex;align-items:center;justify-content:center;padding:18px;z-index:50;}
.modal-backdrop[hidden]{display:none !important;}
.modal{width:100%;max-width:420px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);}
.modal-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.modal-head h2{font-family:var(--display);font-size:1.15rem;margin:0;flex:1;}
.modal-close{border:none;background:transparent;font-size:1.4rem;line-height:1;cursor:pointer;color:var(--muted);}
.modal-note{margin:0 0 8px;color:var(--muted);font-size:.85rem;}
.settings-divider{border:0;border-top:1px solid var(--line);margin:18px 0;}
.modal .btn-primary{width:100%;}
@container (max-width:36rem){
  .answer-row{grid-template-columns:1fr;}
}

/* Native <dialog>-based confirm()/prompt() replacement (see admin.js
   confirmDialog/promptDialog) -- showModal() supplies the backdrop, focus
   trap, and Esc-to-cancel; this just makes it look like the rest of the app. */
.confirm-dialog{
  width:100%;max-width:420px;background:var(--card);border:1px solid var(--line);
  border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);
}
.confirm-dialog::backdrop{background:rgba(15,61,62,.45);}
.confirm-dialog-title{font-family:var(--display);font-size:1.15rem;margin:0 0 8px;}
.confirm-dialog-message{margin:0 0 4px;color:var(--ink);font-size:.92rem;line-height:1.45;white-space:pre-line;}
.confirm-dialog-input{margin-top:10px;}
.confirm-dialog-actions{display:flex;gap:10px;margin-top:18px;}
.confirm-dialog-actions .btn,.confirm-dialog-actions .btn-secondary{flex:1;width:auto;margin-top:0;}
.btn-danger{background:var(--danger) !important;}

/* Compact actions inside data tables (timeline, clinics, users, …) */
.row-actions{display:flex;flex-wrap:wrap;gap:0.375rem;align-items:center;}
.btn-sm{padding:0.35rem 0.75rem;font-size:0.8rem;font-family:var(--display);font-weight:600;width:auto;margin-top:0;line-height:1.25;}
.row-actions .btn-secondary{background:#fbfaf6;}
.row-actions a.btn{text-decoration:none;display:inline-flex;align-items:center;justify-content:center;}
.btn-danger-soft{background:#faf3f1;border-color:#e6c6bd;color:var(--danger);}
.btn-danger-soft:hover{background:#f3e4e0;}
.audit-detail{font-size:0.88rem;line-height:1.5;color:var(--ink-2);max-width:min(100%,32rem);}
.audit-action{font-weight:600;color:var(--ink);}
.audit-changes-summary{margin-bottom:0.35rem;line-height:1.45;}
.audit-changes-summary .muted{font-weight:400;}
.audit-changes-panel{margin-top:0.25rem;}
.audit-changes-panel summary{
  cursor:pointer;color:var(--ink-2);font-weight:600;font-size:0.84rem;
  list-style:none;display:inline-flex;align-items:center;gap:0.35rem;
}
.audit-changes-panel summary::-webkit-details-marker{display:none;}
.audit-changes-panel summary::before{content:"▸";font-size:0.75rem;transition:transform 0.15s ease;}
.audit-changes-panel[open] summary::before{transform:rotate(90deg);}
.audit-changes-list{
  margin-top:0.5rem;max-height:min(50vh,16rem);overflow:auto;
  padding:0.65rem 0.75rem;background:#fbfaf6;border:1px solid var(--line);border-radius:0.625rem;
}
.audit-changes-inline .audit-change-group,.audit-changes-list .audit-change-group{margin-bottom:0.65rem;}
.audit-changes-inline .audit-change-group:last-child,.audit-changes-list .audit-change-group:last-child{margin-bottom:0;}
.audit-group-title{font-size:0.72rem;text-transform:uppercase;letter-spacing:0.04em;color:var(--muted);margin-bottom:0.25rem;}
.audit-change-row{
  display:grid;grid-template-columns:minmax(5rem,1fr) minmax(3rem,0.8fr) auto minmax(3rem,1fr);
  gap:0.35rem 0.5rem;align-items:baseline;padding:0.3rem 0;border-top:1px solid #ece8dc;font-size:0.82rem;
}
.audit-change-row:first-of-type{border-top:none;}
.audit-change-row.audit-change-set{grid-template-columns:minmax(5rem,1fr) minmax(3rem,1.2fr);}
.audit-change-field{font-weight:600;color:var(--ink);}
.audit-change-old{color:var(--muted);}
.audit-change-arrow{color:var(--muted);font-size:0.75rem;}
.audit-change-new{color:var(--ink-2);font-weight:500;word-break:break-word;}
#table.audit-table th:last-child,#table.audit-table td:last-child{min-width:14rem;}
@container (max-width:36rem){
  .audit-change-row{grid-template-columns:1fr;gap:0.15rem;}
  .audit-change-arrow{display:none;}
}

/* -------------------- questionnaire builder -------------------- */
.badge.archived,.badge.archived-badge,.badge.draft{background:#e6e2d6;color:#6b6f6a;}
.muted{color:var(--muted);font-size:.85rem;}
.builder-bar{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:8px;}
.builder-status{display:flex;align-items:center;gap:10px;flex:1;min-width:200px;}
.builder-actions{display:flex;gap:8px;flex-wrap:wrap;}
.builder-actions .btn{width:auto;margin-top:0;padding:9px 14px;font-size:.9rem;}
.builder-help{margin:0 0 14px;max-width:820px;line-height:1.4;}
.builder-grid{display:grid;grid-template-columns:1fr;gap:16px;}
.builder-grid:has(.builder-preview:not([hidden])){grid-template-columns:1.4fr .9fr;align-items:start;}
.builder-editor .card{margin-bottom:16px;}
.card-head{display:flex;align-items:center;gap:10px;margin-bottom:12px;}
.card-head h3{font-family:var(--display);margin:0;flex:1;font-size:1.05rem;}
.builder-editor .btn-sm{padding:5px 10px;font-size:.8rem;margin-top:0;}
.mini-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-bottom:8px;}
.builder-editor label{margin:0 0 4px;font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;}
.builder-editor label.wide{display:block;}
.builder-editor label.chk{display:flex;align-items:center;gap:6px;text-transform:none;letter-spacing:0;font-size:.85rem;color:var(--ink);}
.builder-editor label.chk input{width:auto;}
.builder-editor input,.builder-editor select,.builder-editor textarea{
  width:100%;padding:8px 10px;border:1.5px solid var(--line);border-radius:8px;font-size:.9rem;background:#fbfaf6;color:var(--ink);
}
.builder-editor input[readonly]{background:#efece3;color:var(--muted);cursor:not-allowed;}
.edit-row{display:flex;gap:12px;align-items:flex-start;padding:12px 0;border-top:1px solid var(--line);}
.edit-row .grow{flex:1;}
.edit-controls{display:flex;flex-direction:column;gap:6px;}
.edit-controls button,.q-card-head button{border:1.5px solid var(--line);background:#fbfaf6;border-radius:8px;padding:5px 9px;cursor:pointer;font-size:.85rem;color:var(--ink);}
.edit-controls button:hover,.q-card-head button:hover{background:#f0ede4;}
.edit-controls button.danger,.opt-row button.danger{color:var(--danger);border-color:#e6c6bd;}
.q-section-sep{font-family:var(--display);font-weight:700;color:var(--ink-2);margin:18px 0 8px;padding-bottom:4px;border-bottom:2px solid var(--line);}
.q-card{border:1px solid var(--line);border-radius:10px;padding:14px;margin-bottom:12px;background:#fff;}
.q-card.archived{opacity:.6;background:#faf8f2;}
.q-card-head{display:flex;align-items:center;gap:8px;margin-bottom:10px;}
.q-card-head .spacer{flex:1;}
.q-id{font-family:var(--display);font-weight:700;}
.q-type-badge{font-size:.72rem;background:#eef1ec;color:var(--ink-2);padding:2px 8px;border-radius:999px;}
.opts-editor{margin:10px 0;padding:10px;background:#fbfaf6;border:1px dashed var(--line);border-radius:8px;}
.opts-label{font-size:.75rem;text-transform:uppercase;letter-spacing:.03em;color:var(--muted);margin-bottom:6px;}
.opt-row{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:8px;align-items:center;margin-bottom:6px;}
.opt-row .lock{color:var(--muted);}
.advanced{margin-top:8px;}
.advanced summary{cursor:pointer;font-size:.82rem;color:var(--ink-2);}
.advanced .mini-grid{margin-top:8px;}
.builder-preview{position:sticky;top:16px;max-height:calc(100vh - 40px);overflow:auto;}
.builder-preview h3{font-family:var(--display);margin:0 0 12px;}
.pv-sec{font-family:var(--display);font-weight:700;color:var(--ink-2);margin:14px 0 6px;}
.pv-q{padding:8px 0;border-top:1px solid var(--line);}
.pv-label{font-size:.9rem;}
.pv-label .req{color:var(--accent);}
.pv-opts{display:flex;flex-wrap:wrap;gap:6px;margin-top:5px;}
.pv-opt{font-size:.78rem;background:#eef1ec;padding:3px 9px;border-radius:999px;}
.pv-input{font-size:.78rem;color:var(--muted);margin-top:4px;font-style:italic;}
@container (max-width:56rem){
  .builder-grid:has(.builder-preview:not([hidden])){grid-template-columns:1fr;}
  .builder-preview{position:static;max-height:none;}
}
.builder-editor input.translating{opacity:0.65;}
.builder-editor input.bilingual-warn{border-color:#c45c26;box-shadow:0 0 0 1px #c45c26;}
.pv-label-ml{font-size:.9rem;color:var(--muted);margin-top:4px;}
.compare-grid th,.compare-grid td{padding:0.4rem 0.6rem;border-bottom:1px solid rgba(0,0,0,.08);text-align:left;}
