  :root{
    --ink:#1B2E2A;
    --ink-soft:#54655F;
    --paper:#F5F6F1;
    --panel:#FFFFFF;
    --line:#DEE2D9;
    --teal:#1F6F63;
    --teal-deep:#164F46;
    --gold:#D9A441;
    --clay:#B5502E;
    --sand:#ECE2C6;
    --focus:#2F6E5C;
    --radius:10px;
  }
  *{box-sizing:border-box;}
  html,body{margin:0;padding:0;}
  body{
    font-family:'Sarabun',sans-serif;
    background:var(--paper);
    color:var(--ink);
    -webkit-font-smoothing:antialiased;
    font-variant-numeric: tabular-nums;
  }
  button{font-family:inherit;}
  a{color:inherit;}

  /* ---------- App shell ---------- */
  #app{
    display:grid;
    grid-template-columns:264px 1fr;
    min-height:100vh;
  }
  @media (max-width:860px){
    #app{grid-template-columns:1fr;}
  }

  /* ---------- Sidebar ---------- */
  #sidebar{
    background:var(--teal-deep);
    color:#EFF4F1;
    padding:28px 22px 22px;
    display:flex;
    flex-direction:column;
    gap:26px;
  }
  @media (max-width:860px){
    #sidebar{padding:18px 18px 10px;}
  }
  .brand{
    display:flex;
    flex-direction:column;
    gap:4px;
  }
  .brand .mark{
    font-size:13px;
    letter-spacing:.02em;
    color:#BFE0D4;
  }
  .brand h1{
    margin:0;
    font-size:22px;
    font-weight:700;
    line-height:1.25;
    color:#fff;
  }
  .brand .sub{
    font-size:13px;
    color:#AFCFC4;
    line-height:1.5;
  }

  .nav{
    display:flex;
    flex-direction:column;
    gap:4px;
  }
  .nav button{
    text-align:left;
    background:transparent;
    border:none;
    color:#CFE6DD;
    padding:10px 12px;
    border-radius:8px;
    font-size:15px;
    cursor:pointer;
    display:flex;
    align-items:center;
    gap:10px;
    transition:background .15s ease;
  }
  .nav button:hover{background:rgba(255,255,255,.07);}
  .nav button.active{
    background:#fff;
    color:var(--teal-deep);
    font-weight:600;
  }
  .nav .dot{width:7px;height:7px;border-radius:50%;background:currentColor;opacity:.55;}
  .nav button.active .dot{background:var(--gold);opacity:1;}

  .side-block{
    display:flex;
    flex-direction:column;
    gap:10px;
    border-top:1px solid rgba(255,255,255,.14);
    padding-top:18px;
  }
  .side-block label{
    font-size:12.5px;
    color:#AFCFC4;
    letter-spacing:.01em;
  }
  select{
    font-family:'Sarabun',sans-serif;
    font-size:14.5px;
    padding:9px 10px;
    border-radius:8px;
    border:1px solid rgba(255,255,255,.2);
    background:rgba(255,255,255,.08);
    color:#fff;
    width:100%;
    cursor:pointer;
  }
  select:focus-visible{outline:2px solid var(--gold); outline-offset:1px;}
  select option{color:#111;}

  .legend{
    display:flex;
    flex-direction:column;
    gap:6px;
    font-size:12px;
    color:#AFCFC4;
    margin-top:auto;
    padding-top:16px;
    border-top:1px solid rgba(255,255,255,.14);
  }
  .legend .bar{
    height:8px;
    border-radius:5px;
    background:linear-gradient(90deg,var(--clay),var(--sand),var(--teal));
  }
  .legend .scale-labels{display:flex;justify-content:space-between;}

  /* ---------- Main ---------- */
  #main{
    padding:30px 34px 60px;
    max-width:1180px;
    width:100%;
  }
  @media (max-width:860px){
    #main{padding:20px 16px 50px;}
  }
  .mobile-topbar{display:none;}
  @media (max-width:860px){
    .mobile-topbar{
      display:flex;
      gap:10px;
      margin-bottom:18px;
    }
    .mobile-topbar button{
      flex:1;
      padding:10px;
      border-radius:8px;
      border:1px solid var(--line);
      background:#fff;
      font-size:14px;
      cursor:pointer;
    }
    .mobile-topbar button.active{
      background:var(--teal);
      color:#fff;
      border-color:var(--teal);
      font-weight:600;
    }
    #sidebar .nav{display:none;}
  }

  h2.page-title{
    font-size:15px;
    text-transform:none;
    color:var(--ink-soft);
    margin:0 0 18px;
    font-weight:600;
  }

  /* Overview hero */
  .hero{
    background:var(--panel);
    border:1px solid var(--line);
    border-radius:var(--radius);
    padding:26px 28px;
    display:flex;
    flex-wrap:wrap;
    gap:28px;
    align-items:center;
    justify-content:space-between;
    margin-bottom:22px;
  }
  .hero-left{display:flex; flex-direction:column; gap:6px;}
  .hero-left .region-tag{
    font-size:12.5px;
    color:var(--ink-soft);
  }
  .hero-left h3{
    margin:0;
    font-size:28px;
    font-weight:700;
  }
  .hero-score{
    display:flex;
    align-items:baseline;
    gap:10px;
  }
  .hero-score .num{
    font-size:52px;
    font-weight:700;
    color:var(--teal-deep);
    line-height:1;
  }
  .hero-score .label{
    font-size:13.5px;
    color:var(--ink-soft);
  }
  .rank-chip{
    display:inline-flex;
    align-items:center;
    gap:6px;
    background:var(--sand);
    color:#6B4A1C;
    font-size:13.5px;
    font-weight:600;
    padding:6px 12px;
    border-radius:999px;
    width:fit-content;
  }

  .region-select-bar{
    display:flex;
    align-items:center;
    gap:10px;
    margin-bottom:16px;
  }
  .region-select-bar label{font-size:13px; color:var(--ink-soft);}
  .region-select-bar select{
    font-family:'Sarabun',sans-serif;
    font-size:14.5px;
    padding:9px 12px;
    border-radius:8px;
    border:1px solid var(--line);
    background:#fff;
    color:var(--ink);
    cursor:pointer;
    min-width:220px;
  }

  .mini-stat-group{display:flex; gap:28px; flex-wrap:wrap;}
  .mini-stat{display:flex; flex-direction:column; gap:2px;}
  .mini-stat .n{font-size:30px; font-weight:700; color:var(--teal-deep); line-height:1.15;}
  .mini-stat .l{font-size:12px; color:var(--ink-soft);}

  .dim-strip{
    display:grid;
    grid-template-columns:repeat(5,1fr);
    gap:10px;
    margin-bottom:26px;
  }
  @media (max-width:760px){
    .dim-strip{grid-template-columns:repeat(2,1fr);}
  }
  .dim-card{
    background:var(--panel);
    border:1px solid var(--line);
    border-radius:var(--radius);
    padding:14px 14px 12px;
    cursor:pointer;
    text-align:left;
    display:flex;
    flex-direction:column;
    gap:8px;
  }
  .dim-card:hover{border-color:var(--teal);}
  .dim-card .dname{
    font-size:12.5px;
    color:var(--ink-soft);
    line-height:1.35;
    min-height:32px;
  }
  .dim-card .dscore{
    font-size:22px;
    font-weight:700;
  }
  .dim-card .drank{font-size:12px; color:var(--ink-soft);}
  .dim-card .bar-track{
    height:6px;
    border-radius:4px;
    background:#EDEFE9;
    overflow:hidden;
  }
  .dim-card .bar-fill{height:100%;}

  /* Indicator table */
  .dim-section{margin-bottom:8px;}
  .dim-heading{
    display:flex;
    align-items:baseline;
    gap:10px;
    margin:26px 0 10px;
    padding-bottom:8px;
    border-bottom:2px solid var(--ink);
  }
  .dim-heading h4{
    margin:0;
    font-size:16.5px;
    font-weight:700;
  }
  .dim-heading .en{font-size:12.5px; color:var(--ink-soft);}

  table.ind-table{
    width:100%;
    border-collapse:collapse;
    background:var(--panel);
    border:1px solid var(--line);
    border-radius:var(--radius);
    overflow:hidden;
  }
  table.ind-table th{
    text-align:left;
    font-size:12px;
    font-weight:600;
    color:var(--ink-soft);
    padding:9px 12px;
    background:#F0F2EC;
    border-bottom:1px solid var(--line);
  }
  table.ind-table td{
    padding:11px 12px;
    font-size:14px;
    border-bottom:1px solid var(--line);
    vertical-align:middle;
  }
  table.ind-table tr:last-child td{border-bottom:none;}
  table.ind-table tr:hover td{background:#FAFBF8;}
  .ind-name{display:flex; align-items:center; gap:8px;}
  .ind-name .txt{display:flex; flex-direction:column;}
  .ind-name .th{font-weight:500;}
  .ind-name .en{font-size:11.5px; color:var(--ink-soft);}
  .info-btn{
    flex:none;
    width:20px;height:20px;
    border-radius:50%;
    border:1px solid var(--line);
    background:#fff;
    color:var(--ink-soft);
    font-size:12px;
    font-weight:700;
    font-style:italic;
    line-height:1;
    cursor:pointer;
    display:flex;align-items:center;justify-content:center;
  }
  .info-btn:hover{border-color:var(--teal); color:var(--teal); background:#EAF3F0;}
  td.num{text-align:right; font-variant-numeric:tabular-nums;}
  .score-pill{
    display:inline-block;
    min-width:52px;
    text-align:center;
    padding:4px 8px;
    border-radius:6px;
    font-weight:700;
    font-size:13px;
  }
  td.rank-cell{color:var(--ink-soft); text-align:right;}
  td.unit-cell{color:var(--ink-soft); font-size:12.5px;}
  td.val-cell{text-align:right; font-weight:700; font-size:14px; white-space:nowrap;}

  /* Compare view */
  .compare-controls{
    display:grid;
    grid-template-columns:repeat(auto-fit,minmax(180px,1fr));
    gap:12px;
    margin-bottom:14px;
  }
  @media (max-width:760px){
    .compare-controls{grid-template-columns:1fr 1fr;}
  }
  @media (max-width:480px){
    .compare-controls{grid-template-columns:1fr;}
  }
  .compare-controls .col{
    background:var(--panel);
    border:1px solid var(--line);
    border-radius:var(--radius);
    padding:14px;
    display:flex;
    flex-direction:column;
    gap:8px;
  }
  .compare-controls label{font-size:12px; color:var(--ink-soft);}
  .compare-controls .col-head{display:flex; align-items:center; justify-content:space-between;}
  .remove-col{
    border:none; background:none; cursor:pointer;
    font-size:16px; line-height:1; color:var(--ink-soft); padding:0 2px;
  }
  .remove-col:hover{color:var(--clay);}
  .compare-controls select{
    background:#F7F8F4;
    color:var(--ink);
    border:1px solid var(--line);
  }
  .compare-controls .overall{
    display:flex;
    align-items:baseline;
    gap:8px;
  }
  .compare-controls .overall .n{font-size:24px; font-weight:700; color:var(--teal-deep);}
  .compare-controls .overall .r{font-size:12px; color:var(--ink-soft);}

  .compare-actions{
    display:flex;
    justify-content:flex-end;
    margin-bottom:18px;
  }
  .add-col-btn{
    border:1px dashed var(--teal);
    background:#EAF3F0;
    color:var(--teal-deep);
    font-size:13.5px;
    font-weight:600;
    padding:8px 14px;
    border-radius:8px;
    cursor:pointer;
  }
  .add-col-btn:hover{background:#DCEEE7;}
  .max-note{font-size:12.5px; color:var(--ink-soft);}
  .hint-text{font-size:12.5px; color:var(--ink-soft); margin:-8px 0 16px;}

  .table-scroll{overflow-x:auto; border-radius:var(--radius);}

  table.cmp-table{
    width:100%;
    border-collapse:collapse;
    background:var(--panel);
    border:1px solid var(--line);
    border-radius:var(--radius);
    overflow:hidden;
  }
  table.cmp-table th{
    text-align:left;
    font-size:12px;
    font-weight:600;
    color:var(--ink-soft);
    padding:9px 12px;
    background:#F0F2EC;
    border-bottom:1px solid var(--line);
    white-space:nowrap;
  }
  table.cmp-table td{
    padding:10px 12px;
    font-size:13.5px;
    border-bottom:1px solid var(--line);
  }
  table.cmp-table tr:last-child td{border-bottom:none;}
  table.cmp-table td.num{text-align:right;}
  table.cmp-table .ind-col{min-width:230px;}
  table.cmp-table th.ind-col, table.cmp-table td.ind-col{
    position:sticky; left:0; z-index:2;
    background:var(--panel);
    box-shadow:2px 0 4px rgba(0,0,0,.05);
  }
  table.cmp-table th.ind-col{background:#F0F2EC; z-index:3;}

  /* Modal */
  .modal-backdrop{
    position:fixed; inset:0;
    background:rgba(20,30,27,.45);
    display:flex; align-items:center; justify-content:center;
    padding:20px;
    z-index:50;
  }
  .modal{
    background:#fff;
    border-radius:14px;
    max-width:460px;
    width:100%;
    padding:24px 24px 20px;
    box-shadow:0 20px 60px rgba(0,0,0,.25);
  }
  .modal-head{
    display:flex;
    justify-content:space-between;
    align-items:flex-start;
    gap:12px;
    margin-bottom:6px;
  }
  .modal-head h3{margin:0; font-size:18px; font-weight:700;}
  .modal-head .close{
    border:none; background:none; cursor:pointer;
    font-size:20px; color:var(--ink-soft); line-height:1;
    padding:2px 4px;
  }
  .modal .en{font-size:13px; color:var(--ink-soft); margin-bottom:14px;}
  .modal .row{margin-bottom:12px;}
  .modal .row .k{font-size:11.5px; color:var(--ink-soft); text-transform:uppercase; letter-spacing:.04em; margin-bottom:3px;}
  .modal .row .v{font-size:14.5px; line-height:1.6;}
  .modal .dir-tag{
    display:inline-flex; align-items:center; gap:6px;
    font-size:13px; font-weight:600; padding:5px 10px; border-radius:999px;
  }

  ::selection{background:var(--gold); color:#1B2E2A;}

  .loading-state{
    padding:48px 24px;
    text-align:center;
    color:var(--ink-soft);
    font-size:15px;
  }

  /* AI insight card */
  .ai-insight-card{
    background:var(--panel);
    border:1px solid var(--line);
    border-radius:var(--radius);
    padding:20px 22px;
    margin:20px 0 28px;
  }
  .ai-insight-toggle{
    display:flex;
    width:100%;
    align-items:flex-start;
    justify-content:space-between;
    gap:12px;
    background:none;
    border:none;
    padding:0 0 12px;
    margin:0;
    border-bottom:2px solid var(--ink);
    cursor:pointer;
    text-align:left;
    font:inherit;
    color:inherit;
  }
  .ai-insight-head{
    display:flex;
    flex-direction:column;
    gap:4px;
  }
  .ai-insight-head h4{
    margin:0;
    font-size:16.5px;
    font-weight:700;
  }
  .ai-disclaimer{font-size:12px; color:var(--ink-soft);}
  .ai-insight-chevron{
    font-size:14px;
    color:var(--ink-soft);
    flex-shrink:0;
    margin-top:2px;
    transition:transform .15s ease;
  }
  .ai-insight-toggle[aria-expanded="true"] .ai-insight-chevron{transform:rotate(180deg);}
  .ai-insight-body{padding-top:14px;}
  .ai-insight-body[hidden]{padding-top:0;}
  .ai-insight-body .loading-state{padding:24px 0;}
  .ai-insight-body h3{font-size:17px; margin:4px 0 12px;}
  .ai-insight-body h4{font-size:15px; margin:22px 0 10px; color:var(--teal-deep);}
  .ai-insight-body h5{font-size:13.5px; margin:14px 0 6px; color:var(--ink-soft);}
  .ai-insight-body p{font-size:14px; line-height:1.65; margin:0 0 12px;}
  .ai-insight-body hr{border:none; border-top:1px solid var(--line); margin:16px 0;}
  .ai-insight-body .ai-empty{color:var(--ink-soft); font-size:14px;}

  table.ai-table{
    width:100%;
    border-collapse:collapse;
    background:var(--panel);
    border:1px solid var(--line);
    border-radius:var(--radius);
    overflow:hidden;
    margin-bottom:12px;
    font-size:13px;
  }
  table.ai-table th{
    text-align:left;
    font-size:11.5px;
    font-weight:600;
    color:var(--ink-soft);
    padding:8px 10px;
    background:#F0F2EC;
    border-bottom:1px solid var(--line);
    white-space:nowrap;
  }
  table.ai-table td{
    padding:9px 10px;
    border-bottom:1px solid var(--line);
    vertical-align:top;
    line-height:1.55;
  }
  table.ai-table tr:last-child td{border-bottom:none;}
