:root{--navy:#143965;--blue:#20578d;--sky:#e9f4fb;--bg:#f3f7fb;--ink:#243951;--sub:#61758a;--teal:#007f8c;--line:#dce7f1;--white:#fff;--good:#16764e;--danger:#a7353c}
*{box-sizing:border-box}html{font-size:16px}body{margin:0;color:var(--ink);background:var(--bg);font-family:"Noto Sans Thai",Tahoma,"Segoe UI",Arial,sans-serif;line-height:1.6}button,input,select,textarea{font:inherit}a{color:var(--blue)}.container{width:min(1140px,calc(100% - 32px));margin:auto}.banner{background:linear-gradient(110deg,#10305c,#1b5a8a);color:#fff;padding:27px 0 30px;border-bottom:5px solid #0cc0c4}.header-flex{display:flex;gap:20px;align-items:center}.emblem{display:grid;place-items:center;width:62px;height:62px;flex:none;border-radius:16px;background:#ffffff16;border:1px solid #ffffff52;font-size:38px}.banner h1{font-size:clamp(23px,3vw,34px);line-height:1.25;margin:4px 0}.banner p{margin:0;opacity:.94}.eyebrow{font-size:12px;font-weight:700;letter-spacing:1.1px}.panel{background:var(--white);border:1px solid var(--line);box-shadow:0 5px 22px #1a45640d;border-radius:17px;padding:24px;margin:23px 0}.intro{background:linear-gradient(120deg,#fff,#f1fafe)}h2{margin:0 0 7px;font-size:22px;line-height:1.45}h3{color:var(--navy);font-size:17px;margin:20px 0 12px}p{margin:8px 0}.intro h2{margin:8px 0}.muted{color:var(--sub)}.small{font-size:13px}.pill{display:inline-block;padding:4px 10px;border-radius:24px;background:#dcf5f3;color:#006b70;font-size:12px;font-weight:750}.important{color:#8a392d;background:#fff2ec;border-left:4px solid #da7556;padding:10px 14px;border-radius:8px}.section-head{display:flex;align-items:center;gap:13px;border-bottom:1px solid var(--line);padding-bottom:16px;margin-bottom:18px}.section-head p{color:var(--sub);margin:0;font-size:14px}.number{display:grid;place-items:center;background:#164a7e;color:#fff;font-weight:800;font-size:16px;min-width:44px;height:44px;border-radius:12px}.input-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.input-grid.triple{grid-template-columns:repeat(3,minmax(0,1fr))}label{display:block;color:var(--ink);font-weight:600;font-size:14px}select,input[type=email],input[type=password],input[type=month],textarea{width:100%;display:block;margin-top:7px;padding:11px 12px;border:1px solid #cbd9e6;border-radius:9px;background:white;color:#1b3651;outline-offset:3px}select:focus,textarea:focus,input:focus{border-color:#1765a3}textarea{resize:vertical;min-height:80px}label:has(textarea){margin:18px 0}.required{color:#ba3131}.choices{border:none;padding:0;margin:22px 0 0}.choices legend{font-weight:700;margin-bottom:8px}.checkbox-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 15px}.checkbox-grid label,.radio-inline label{font-size:14px;font-weight:500;padding:8px 5px;cursor:pointer}.checkbox-grid input,.radio-inline input,.consent-check input{accent-color:#1b628f;transform:scale(1.13);margin-right:7px}.radio-inline{display:flex;gap:22px;flex-wrap:wrap}.subgroup{margin-top:24px}.rating-row{border:1px solid var(--line);border-radius:12px;padding:13px 15px;margin:9px 0;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;align-items:center}.rating-title{font-weight:550}.rating-options{display:flex;gap:5px;flex-wrap:wrap}.score-choice{cursor:pointer;position:relative;display:flex}.score-choice input{position:absolute;opacity:0;width:1px;height:1px}.score-choice span{display:grid;place-items:center;min-width:40px;height:34px;padding:0 7px;border:1px solid #d5e2eb;border-radius:8px;font-size:13px;font-weight:750;color:#315a7a;background:#f5fafd}.score-choice:hover span{background:#e6f3fb}.score-choice input:checked+span{color:white;background:#17649d;border-color:#17649d}.score-choice input:focus-visible+span{outline:3px solid #f3a65f;outline-offset:2px}.consent{display:flex;flex-direction:column;gap:18px}.consent-check{display:flex;align-items:flex-start;gap:9px}.consent-check input{margin-top:5px}.turnstile-section{padding:12px 0}.button{display:inline-flex;align-items:center;justify-content:center;text-align:center;gap:8px;border:1px solid transparent;border-radius:10px;padding:11px 19px;cursor:pointer;text-decoration:none;font-weight:700;font-size:14px}.button.primary{background:#16649d;color:white}.button.primary:hover{background:#0b4a79}.button.secondary{background:#f1f6fb;color:#165386;border-color:#d7e6f0}.button.secondary:hover{background:#e8f2f8}.button:disabled{opacity:.55;cursor:not-allowed}.status{min-height:16px;color:var(--sub)}.status.error{color:var(--danger);font-weight:600}.status.success{color:var(--good);font-weight:600}.hidden{display:none!important}.thank-you{text-align:center;padding:55px 24px}.check-large{width:65px;height:65px;background:#e3f4ed;border-radius:50%;display:grid;place-items:center;margin:0 auto 20px;color:var(--good);font-size:37px}footer{color:#718397;text-align:center;font-size:12px;padding:24px 0 35px}.auth-panel{max-width:580px;margin:40px auto}.login-form{display:grid;gap:16px;margin-top:20px}.toolbar{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:24px}.toolbar p{margin:0}.filters{margin-top:14px}.button-row{display:flex;gap:9px;flex-wrap:wrap;margin-top:18px}.kpi-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.kpi-card{border-radius:13px;padding:20px 18px;background:#fff;border:1px solid var(--line)}.kpi-card>div{font-weight:700;color:var(--sub);font-size:13px}.kpi-card>strong{font-weight:800;color:var(--navy);font-size:34px;display:block;margin:7px 0}.kpi-card small{color:var(--sub)}.dashboard-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:20px 0}.chart-card{margin:0;min-height:300px}.chart-area{min-height:210px}.chart-note{font-size:12px;color:var(--sub);margin-top:14px}.bar-line{display:grid;grid-template-columns:minmax(115px,1.05fr) minmax(100px,2fr) 50px;gap:8px;align-items:center;margin:13px 0}.bar-line .bar-label{font-size:13px}.bar-track{height:18px;background:#e9f1f7;border-radius:10px;overflow:hidden}.bar-fill{height:100%;background:linear-gradient(90deg,#16829d,#2d79c3);border-radius:10px;min-width:1px}.bar-score{text-align:right;font-size:13px;font-weight:700;color:var(--navy)}.minor{font-size:12px;color:var(--sub)}.no-data{color:var(--sub);border:1px dashed #cbd8e4;border-radius:10px;padding:20px;text-align:center}.legend-item{display:flex;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid var(--line)}.trend-chart{width:100%;height:auto;display:block}.suggestion-card{border-top:1px solid var(--line);padding:13px 0}.suggestion-card .meta{font-size:12px;color:var(--sub)}.suggestion-card p{white-space:pre-wrap;overflow-wrap:anywhere}.report-footnote{margin:25px 0 40px}@media(max-width:850px){.dashboard-grid{grid-template-columns:1fr}.kpi-grid{grid-template-columns:repeat(2,1fr)}.rating-row{grid-template-columns:1fr}.input-grid.triple{grid-template-columns:1fr 1fr}}@media(max-width:580px){.panel{padding:17px;margin:15px 0}.input-grid,.input-grid.triple,.checkbox-grid{grid-template-columns:1fr}.header-flex{gap:12px}.emblem{width:45px;height:45px;font-size:24px}.banner{padding:18px 0}.rating-options{gap:4px}.score-choice span{min-width:37px}.toolbar{align-items:flex-start;flex-direction:column}.kpi-grid{gap:9px}.kpi-card{padding:14px}.kpi-card>strong{font-size:27px}.dashboard-grid{gap:10px}.bar-line{grid-template-columns:minmax(80px,.9fr) minmax(55px,1.3fr) 43px}}@media print{body{background:#fff}.banner{-webkit-print-color-adjust:exact;print-color-adjust:exact}.noprint,.toolbar button,footer,.auth-panel{display:none!important}.panel,.kpi-card{box-shadow:none;break-inside:avoid}.dashboard-grid{grid-template-columns:1fr 1fr}.chart-card{min-height:260px}}


/* === V2 UI READABILITY PATCH: 2026-10-28 ===
   Larger Thai text, clearly highlighted scoring legends by assessment,
   larger native checkboxes, comfortable touch targets. No data/API changes. */
html { font-size: 18px; }
body { font-size: 18px; line-height: 1.72; }
.container { width: min(1240px, calc(100% - 36px)); }
.banner { padding: 29px 0 34px; }
.banner h1 { font-size: clamp(28px, 3vw, 42px); line-height: 1.32; }
.banner p { font-size: 19px; }
.eyebrow { font-size: 15px; letter-spacing: .7px; }
.emblem { width: 68px; height: 68px; font-size: 42px; }
.panel { padding: 28px 30px; margin: 24px 0; }
h2 { font-size: 26px; line-height: 1.42; }
h3 { font-size: 22px; line-height: 1.45; }
.intro h2 { font-size: 27px; }
.intro p { font-size: 18px; }
.pill { font-size: 16px; padding: 6px 13px; }
.important { font-size: 18px; padding: 13px 16px; border-left-width: 5px; }
.small { font-size: 16px; }
.section-head { padding-bottom: 20px; margin-bottom: 21px; }
.section-head p { font-size: 17px; }
.number { min-width: 54px; height: 54px; font-size: 21px; border-radius: 14px; }
label { font-size: 18px; line-height: 1.55; }
input, select, textarea, button { font-size: 18px; }
select, input[type=email], input[type=password], input[type=month], textarea {
  padding: 12px 15px; font-size: 18px; border-radius: 10px;
}
select, input[type=email], input[type=password], input[type=month] { min-height: 52px; }
textarea { min-height: 110px; }
.choices { margin-top: 23px; }
.choices legend { font-size: 19px; font-weight: 750; margin-bottom: 11px; }
.checkbox-grid { gap: 7px 16px; }
.checkbox-grid label, .radio-inline label {
  display: flex; align-items: center; gap: 13px;
  font-size: 18px; font-weight: 550; line-height: 1.5;
  padding: 12px 11px; border-radius: 10px; cursor: pointer;
}
.checkbox-grid label:hover, .radio-inline label:hover { background: #f1f8fd; }
.checkbox-grid input[type=checkbox], .radio-inline input[type=radio], .consent-check input[type=checkbox] {
  width: 25px; height: 25px; min-width: 25px; flex: none;
  margin: 0; transform: none; accent-color: #17649d; cursor: pointer;
}
.checkbox-grid input:focus-visible, .radio-inline input:focus-visible,
.consent-check input:focus-visible { outline: 3px solid #ea994b; outline-offset: 3px; }
.radio-inline { gap: 13px; }
.consent-check { align-items: center; gap: 14px; font-weight: 600; }
.consent { gap: 22px; }
.turnstile-section p { font-size: 17px; }
.rating-guide {
  padding: 15px 18px 17px; margin: 13px 0 18px;
  background: #e9f6fc; border: 2px solid #add9ea; border-left: 6px solid #0b7f9b;
  border-radius: 12px; box-shadow: 0 3px 10px #175b7b0c;
}
.rating-guide__heading { display: block; font-size: 19px; color: #17466e; font-weight: 800; margin-bottom: 11px; }
.rating-guide__items { display: flex; align-items: stretch; gap: 9px; flex-wrap: wrap; }
.rating-guide__item {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 6px 11px 6px 7px; border-radius: 9px;
  background: #fff; border: 1px solid #c9e3ee;
  font-size: 17px; color: #1f4463; font-weight: 650;
}
.rating-guide__item b {
  display: grid; place-items: center; min-width: 34px; height: 34px;
  padding: 0 6px; background: #1476a0; color: #fff;
  border-radius: 7px; font-size: 17px; line-height: 1;
}
.rating-guide__item.is-na b { background: #516980; }
.subgroup { margin-top: 30px; }
.subgroup h3 { margin: 0 0 14px; font-weight: 800; color: #153e6b; }
.rating-row { min-height: 83px; padding: 18px 18px; gap: 15px; margin: 11px 0; }
.rating-title { font-size: 18px; font-weight: 650; line-height: 1.58; }
.rating-options { gap: 8px; }
.score-choice span {
  min-width: 51px; height: 46px; padding: 0 10px;
  font-size: 18px; border-radius: 9px; font-weight: 800;
}
.button { font-size: 18px; min-height: 52px; padding: 12px 22px; }
#submitButton { min-height: 60px; font-size: 20px; }
.status { font-size: 17px; }
footer { font-size: 15px; }
/* Reporting view follows the same legible typography. */
.kpi-card>div, .bar-line .bar-label, .bar-score { font-size: 16px; }
.kpi-card small, .chart-note, .suggestion-card .meta, .minor { font-size: 15px; }
@media (max-width: 850px) {
  .rating-row { grid-template-columns: 1fr; }
  .rating-guide__items { gap: 8px; }
}
@media (max-width: 580px) {
  html { font-size: 17px; }
  body { font-size: 17px; }
  .container { width: calc(100% - 24px); }
  .panel { padding: 18px 15px; margin: 15px 0; }
  .banner { padding: 20px 0 22px; }
  .header-flex { gap: 13px; }
  .emblem { width: 48px; height: 48px; font-size: 28px; }
  .banner h1 { font-size: 27px; }
  .banner p { font-size: 16px; }
  .eyebrow { font-size: 12px; }
  h2, .intro h2 { font-size: 23px; }
  h3 { font-size: 20px; }
  .section-head p { font-size: 16px; }
  .number { min-width: 46px; height: 46px; font-size: 18px; }
  label, .checkbox-grid label, .radio-inline label, .rating-title { font-size: 17px; }
  .checkbox-grid input[type=checkbox], .radio-inline input[type=radio], .consent-check input[type=checkbox] {
    width: 25px; height: 25px; min-width: 25px;
  }
  .rating-guide { padding: 14px 12px; }
  .rating-guide__heading { font-size: 18px; }
  .rating-guide__item { font-size: 15px; gap: 5px; padding: 6px 7px; }
  .rating-guide__item b { font-size: 16px; min-width: 30px; height: 30px; }
  .rating-row { padding: 15px 12px; }
  .rating-options { gap: 6px; }
  .score-choice span { min-width: 41px; height: 45px; font-size: 17px; padding: 0 7px; }
  .button { font-size: 17px; }
}

/* v3 report UX */
.input-grid.report-four{grid-template-columns:repeat(4,minmax(0,1fr))}
.experience-pie-layout{display:flex;align-items:center;gap:26px;padding:16px 3px;flex-wrap:wrap}
.experience-pie{position:relative;aspect-ratio:1;width:190px;min-width:190px;border-radius:50%;display:grid;place-items:center;box-shadow:0 4px 16px #14396516}
.experience-pie-center{background:#fff;width:111px;height:111px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;box-shadow:0 0 0 2px #fff}
.experience-pie-center strong{font-size:28px;color:#163a65;line-height:1.2}.experience-pie-center small{color:#61758a}
.experience-legend{flex:1;min-width:210px}.experience-legend-row{display:grid;grid-template-columns:16px minmax(0,1fr) auto;gap:9px;align-items:center;padding:9px 0;border-bottom:1px solid var(--line);font-size:15px}
.experience-color{height:14px;width:14px;border-radius:4px}.experience-legend-row strong{white-space:nowrap;font-size:14px;color:#123c61}
.report-login-captcha{margin:4px 0 6px}
@media(max-width:1050px){.input-grid.report-four{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:580px){.input-grid.report-four{grid-template-columns:1fr}.experience-pie-layout{justify-content:center}.experience-legend{min-width:100%}}
