
  /* KMUTT orange (#FA4616) used sparingly as a soft accent on a neutral, minimal base */
  :root{--bg:#f6f5f3;--card:#ffffff;--text:#2b2b2b;--muted:#77726c;--line:#e8e5e0;--accent:#e2552a;--accent-dark:#c4451f;--accent-soft:#fbede6;--mark:#fde8d8;--chip:#f3f1ee;--shadow:0 1px 2px rgba(0,0,0,.04),0 6px 18px rgba(0,0,0,.04)}
  :root[data-theme=dark]{--bg:#151413;--card:#1d1c1a;--text:#ecebe8;--muted:#9a958e;--line:#33312e;--accent:#f2764a;--accent-dark:#f59a78;--accent-soft:#2b211c;--mark:#5a3a25;--chip:#262421;--shadow:none}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#151413;--card:#1d1c1a;--text:#ecebe8;--muted:#9a958e;--line:#33312e;--accent:#f2764a;--accent-dark:#f59a78;--accent-soft:#2b211c;--mark:#5a3a25;--chip:#262421;--shadow:none}}
  *{box-sizing:border-box}
  html{scroll-behavior:smooth}
  body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,system-ui,-apple-system,"Segoe UI",Sarabun,sans-serif;line-height:1.55;-webkit-font-smoothing:antialiased}
  a{color:var(--accent-dark);text-underline-offset:2px}



  .wrap{max-width:1100px;margin:0 auto;padding:18px 16px}
  .tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:4px}
  a.tab{border:1px solid var(--line);background:var(--card);color:var(--text);padding:7px 14px;border-radius:999px;font-size:.88rem;text-decoration:none;transition:.15s}
  a.tab:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-dark)}
  h2.sec{font-size:1.12rem;font-weight:650;margin:34px 0 12px;color:var(--text)}
  h2.sec::before{content:"";display:block;width:28px;height:3px;background:var(--accent);margin-bottom:9px;border-radius:2px}
  h3.sub{font-size:1rem;margin:20px 0 8px;font-weight:650}
  .hint{color:var(--muted);font-size:.9rem;margin:0 0 12px}
  .muted{color:var(--muted)} .small{font-size:.82rem}
  .card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:16px;margin-bottom:14px;box-shadow:var(--shadow)}
  .card.alert{background:var(--accent-soft);border-color:transparent;border-left:3px solid var(--accent)}
  .filters{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:10px;align-items:end}
  .filters.two{grid-template-columns:1fr 1fr auto}
  @media(max-width:720px){.filters,.filters.two{grid-template-columns:1fr}}
  label{display:block;font-size:.78rem;color:var(--muted);margin-bottom:4px}
  input[type=search],select{width:100%;padding:9px 11px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--text);font-size:.93rem}
  input[type=search]:focus,select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
  button.reset{padding:9px 16px;border:1px solid var(--line);border-radius:8px;background:var(--card);color:var(--muted);cursor:pointer}
  button.reset:hover{color:var(--text);border-color:var(--muted)}
  .btn{padding:4px 11px;border:1px solid var(--line);border-radius:6px;background:var(--card);color:var(--text);cursor:pointer;font-size:.78rem;white-space:nowrap}
  .btn:hover{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-dark)}
  .count{color:var(--muted);font-size:.83rem;margin:10px 2px}
  .tablewrap{overflow-x:auto}
  .scroll{max-height:380px;overflow:auto;padding:0}
  table{width:100%;border-collapse:collapse;font-size:.9rem}
  th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--line);vertical-align:top}
  tbody tr:last-child td{border-bottom:0}
  th{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:600;position:sticky;top:0;background:var(--card)}
  td.no{color:var(--muted);width:48px}
  td.country{font-weight:600;white-space:nowrap}
  tr.same td.country,tr.same td.no{visibility:hidden}
  #tbody tr{cursor:pointer}
  #tbody tr:hover td{background:var(--accent-soft)}
  #tbody tr.sel td{background:var(--accent-soft)}
  #tbody tr.sel td:first-child{box-shadow:inset 3px 0 0 var(--accent)}
  mark{background:var(--mark);color:inherit;border-radius:3px;padding:0 1px}
  .empty{padding:24px;text-align:center;color:var(--muted)}
  .badge{display:inline-block;background:var(--chip);border-radius:6px;padding:1px 8px;font-size:.78rem;margin-right:4px;color:var(--muted)}
  .badge.warn{background:var(--accent-soft);color:var(--accent-dark);font-weight:600}
  .ref h3{font-size:1rem;margin:0 0 10px;font-weight:650;color:var(--text)}
  .ref ul{margin:6px 0 0;padding-left:20px} .ref li{margin:4px 0} .ref p{margin:0 0 10px}
  .big{font-size:1.15rem;font-weight:650;margin:2px 0 4px}
  .checklist{list-style:none;padding:0!important;margin:0}
  .checklist li{margin:0!important;padding:10px 0;border-bottom:1px solid var(--line)}
  .checklist li:last-child{border-bottom:0}
  .chk{display:flex;gap:10px;align-items:flex-start;font-size:.94rem;color:var(--text);margin:0;cursor:pointer}
  .chk input{margin-top:5px;accent-color:var(--accent);width:16px;height:16px;flex:none}
  .req{color:var(--accent-dark);font-weight:600;font-size:.85rem} .opt{color:var(--muted);font-size:.85rem}
  .progress{font-size:.84rem;color:var(--muted);margin-bottom:6px}
  .note{color:var(--muted);font-size:.8rem;margin-top:26px}
  .tiles{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin-top:14px}
  .tile{display:flex;flex-direction:column;gap:2px;padding:10px 12px;border:1px solid var(--line);border-radius:10px;text-decoration:none;color:var(--text);background:var(--card);transition:.15s}
  .tile:hover{border-color:var(--accent);background:var(--accent-soft)}
  .tile.warn{background:var(--accent-soft);border-color:transparent}
  .tn{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:50%;background:var(--accent);color:#fff;font-size:.75rem;font-weight:700;flex:none}
  .tile .tn{margin-bottom:4px}
  .tt{font-size:.75rem;color:var(--muted)} .tv{font-size:.9rem;font-weight:600}
  .back{float:right;font-size:.8rem;text-decoration:none}
  .block .bh{display:flex;align-items:center;gap:10px;margin-bottom:10px}
  .block .bh h3{margin:0}
  .block .card{box-shadow:none;margin-bottom:10px;background:var(--bg)}
  .glabel{font-size:.78rem;color:var(--muted);margin:12px 0 6px}
  .chips{display:flex;flex-wrap:wrap;gap:6px}
  .chip2{background:var(--chip);border-radius:999px;padding:3px 11px;font-size:.84rem}
  .chip2 b{font-weight:600}
  .doclist{list-style:none;margin:0;padding:0;display:grid;gap:2px}
  .doc{display:flex;gap:12px;padding:10px 0;border-bottom:1px solid var(--line)}
  .doc:last-child{border-bottom:0}
  .num{flex:none;width:24px;height:24px;border-radius:50%;background:var(--chip);color:var(--muted);font-size:.78rem;font-weight:600;display:inline-flex;align-items:center;justify-content:center;margin-top:1px}
  .pill{display:inline-block;background:var(--chip);color:var(--muted);border-radius:999px;padding:0 9px;font-size:.74rem;margin-left:4px;vertical-align:1px}
  .pill.pill-req{background:var(--accent-soft);color:var(--accent-dark);font-weight:600}
  details>summary{list-style:none;cursor:pointer}
  details>summary::-webkit-details-marker{display:none}
  .sd>summary h2.sec{display:flex;flex-wrap:wrap;align-items:center}
  .sd>summary h2.sec::before{flex:0 0 100%}
  .sd>summary h2.sec::after,.block>summary.bh::after{content:"▾";margin-left:auto;color:var(--muted);font-size:.95rem;transition:transform .15s}
  .sd:not([open])>summary h2.sec::after,.block:not([open])>summary.bh::after{transform:rotate(-90deg)}
  .block>summary.bh{margin-bottom:0}
  .block[open]>summary.bh{margin-bottom:10px}
  .sd:not([open]) h2.sec{margin-bottom:6px}
  .hidden{display:none}

  /* ---- Tuition fees (section 5) ---- */
  :root{--tf-bach:#2f6fb0;--tf-bach-soft:#e2edf8;--tf-mast:#0f6b73;--tf-mast-soft:#dff0f1;--tf-doc:#7a4fa3;--tf-doc-soft:#eee6f6}
  :root[data-theme=dark]{--tf-bach:#7db3ea;--tf-bach-soft:#1b3047;--tf-mast:#5cc4cc;--tf-mast-soft:#183c42;--tf-doc:#bf9be6;--tf-doc-soft:#2e2340}
@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--tf-bach:#7db3ea;--tf-bach-soft:#1b3047;--tf-mast:#5cc4cc;--tf-mast-soft:#183c42;--tf-doc:#bf9be6;--tf-doc-soft:#2e2340}}
  .tf-bar{display:grid;gap:10px}
  .tf-search{position:relative}
  .tf-search svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--muted);pointer-events:none}
  .tf-search input{padding-left:40px;padding-right:38px;font-size:1rem}
  #tfClear{position:absolute;right:7px;top:50%;transform:translateY(-50%);border:0;background:var(--chip);color:var(--muted);width:26px;height:26px;border-radius:50%;cursor:pointer;font-size:15px;line-height:1}
  .tf-row{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
  .tf-row select{width:auto;max-width:100%;flex:1 1 200px;min-width:0}
  .seg{display:inline-flex;background:var(--chip);border-radius:10px;padding:3px;gap:2px;flex-wrap:wrap}
  .seg button{font:inherit;font-size:.85rem;border:0;background:transparent;color:var(--muted);padding:6px 12px;border-radius:8px;cursor:pointer;font-weight:500;white-space:nowrap}
  .seg button[aria-pressed="true"]{background:var(--card);color:var(--text);box-shadow:0 1px 2px rgba(0,0,0,.12)}
  .seg button small{margin-left:5px;opacity:.7;font-size:.72rem}
  .tf-pin{display:flex;align-items:center;gap:8px;background:var(--accent-soft);border-left:3px solid var(--accent);border-radius:8px;padding:8px 12px;font-size:.88rem;margin-bottom:10px}
  .tf-pin button{margin-left:auto}
  .tf-fac{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin:22px 0 10px;padding-bottom:7px;border-bottom:1px solid var(--line)}
  .tf-fac h3{font-size:1rem;margin:0;font-weight:650}
  .tf-fac em{margin-left:auto;font-style:normal;font-size:.78rem;color:var(--muted)}
  .tf-list{display:grid;gap:10px}
  .tf-card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:15px 16px;display:grid;gap:11px;box-shadow:var(--shadow)}
  .tf-top{display:flex;gap:14px;justify-content:space-between;align-items:flex-start;flex-wrap:wrap}
  .tf-ttl{min-width:0;flex:1 1 300px}
  .tf-badges{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:6px}
  .tf-pill{font-size:.74rem;font-weight:600;padding:2px 9px;border-radius:99px;white-space:nowrap;background:var(--chip);color:var(--muted)}
  .tf-pill.bachelor{background:var(--tf-bach-soft);color:var(--tf-bach)}
  .tf-pill.master{background:var(--tf-mast-soft);color:var(--tf-mast)}
  .tf-pill.doctoral{background:var(--tf-doc-soft);color:var(--tf-doc)}
  .tf-name{font-size:1.02rem;font-weight:600;line-height:1.35;margin:0;overflow-wrap:anywhere}
  .tf-tracks{margin:4px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:3px 12px;color:var(--muted);font-size:.82rem}
  .tf-tracks li::before{content:"› ";color:var(--accent)}
  .tf-facl{color:var(--muted);font-size:.82rem;margin-top:4px}
  .tf-price{text-align:right;margin-left:auto}
  .tf-price .lbl{font-size:.74rem;color:var(--muted)}
  .tf-price .amt{font-size:1.45rem;font-weight:700;font-variant-numeric:tabular-nums;line-height:1.2;color:var(--accent-dark);white-space:nowrap}
  .tf-price .amt.rng{font-size:1.1rem}
  .tf-price .sm{font-size:.74rem;color:var(--muted)}
  .tf-facts{display:flex;flex-wrap:wrap;gap:5px 18px;color:var(--muted);font-size:.82rem}
  .tf-facts b{color:var(--text);font-weight:600}
  .tf-fees{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:8px}
  .tf-fee{background:var(--chip);border-radius:9px;padding:8px 12px;min-width:0}
  .tf-fee .k{font-size:.74rem;color:var(--muted)}
  .tf-fee .v{font-weight:600;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
  .tf-note{font-size:.78rem;color:var(--muted);background:var(--accent-soft);border-radius:8px;padding:6px 10px}
  .tf-card details{border-top:1px dashed var(--line);padding-top:9px}
  .tf-card details>summary{font-weight:500;font-size:.88rem;color:var(--accent-dark);display:flex;gap:6px;align-items:center}
  .tf-card details>summary::before{content:"▸";transition:transform .15s}
  .tf-card details[open]>summary::before{transform:rotate(90deg)}
  .tf-card table{min-width:520px;font-size:.84rem}
  .tf-card td.n,.tf-card th.n{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
  .tf-card th{position:static;white-space:nowrap}
  .tf-extra{margin-top:24px;display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:14px}
  .tf-extra .card{margin:0}
  .tf-extra ol{margin:0;padding-left:20px;color:var(--muted);font-size:.84rem;display:grid;gap:4px}
  @media (max-width:520px){.tf-price{text-align:left;margin-left:0}}

  /* ---- Graduate guide additions ---- */
  th.sc,td.sc{text-align:center;white-space:nowrap}
  td.sc b{font-weight:600}
  .dash{color:var(--muted)}
  .sub-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:12px}
  .sub-cards .card{margin:0}
  .sub-cards h4{margin:0 0 6px;font-size:.96rem;font-weight:650}
  .stat{font-size:1.35rem;font-weight:700;color:var(--accent-dark);font-variant-numeric:tabular-nums;line-height:1.2}
  .stat small{font-size:.78rem;color:var(--muted);font-weight:500;margin-left:4px}
  .statrow{display:flex;flex-wrap:wrap;gap:8px 22px;margin:10px 0 4px}
  .exgroup{margin:14px 0 0}
  .exgroup:first-of-type{margin-top:6px}
  .exgroup .gt{font-size:.9rem;font-weight:650;margin:0 0 4px}
  .exgroup ul{margin:0;padding-left:20px;font-size:.92rem}
  .subnote{margin:6px 0 0;padding-left:18px;font-size:.84rem;color:var(--muted)}
  .subnote li{margin:2px 0}

  /* ---- Level switch (merged page) ---- */
  .lvbar{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;margin-bottom:14px}
  .lvbar .lbl{font-size:.86rem;color:var(--muted)}
  .lvbar .seg button{padding:8px 18px;font-size:.92rem}
  body[data-level="bachelor"] .lv-gr{display:none!important}
  body:not([data-level="bachelor"]) .lv-ug{display:none!important}

/* ================= v2 additions ================= */
body{padding-bottom:0}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}
.skip{position:absolute;left:-999px;top:8px;background:var(--accent);color:#fff;padding:8px 14px;border-radius:8px;z-index:100}
.skip:focus{left:8px}

/* hero */
.hero{background:linear-gradient(135deg,var(--accent-soft),transparent 70%),var(--card);border-bottom:1px solid var(--line);position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--accent)}
.hero::after{content:"";position:absolute;right:-90px;top:-90px;width:280px;height:280px;border-radius:50%;background:radial-gradient(closest-side,var(--accent-soft),transparent);pointer-events:none}
.hero .wrap{padding-top:34px;padding-bottom:26px;position:relative;z-index:1}
.hero-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px}
.eyebrow{font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--accent-dark);font-weight:700;margin:0 0 8px}
.hero h1{margin:0 0 8px;font-size:clamp(1.55rem,4.2vw,2.3rem);line-height:1.15;font-weight:700;letter-spacing:-.02em;max-width:22ch}
.hero .sub{margin:0;color:var(--muted);max-width:62ch;font-size:1rem}
.theme-btn{flex:none;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--text);cursor:pointer;font-size:1.05rem;line-height:1}
.theme-btn:hover{border-color:var(--accent);background:var(--accent-soft)}
.stats{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.stat-chip{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 16px;min-width:120px}
.stat-chip b{display:block;font-size:1.4rem;font-weight:700;color:var(--accent-dark);font-variant-numeric:tabular-nums;line-height:1.15}
.stat-chip span{font-size:.78rem;color:var(--muted)}
.asof{margin-top:14px;font-size:.8rem;color:var(--muted)}
.announce{background:var(--accent);color:#fff;font-size:.92rem}
.announce .wrap{padding-top:10px;padding-bottom:10px}
.announce a{color:#fff}

/* sticky bar */
.topbar{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:saturate(1.4) blur(10px);-webkit-backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--line)}
.topbar .wrap{padding-top:10px;padding-bottom:10px;display:flex;gap:14px 20px;align-items:center;flex-wrap:wrap}
.topbar .lvbar{margin:0}
.topbar .tabs{margin:0;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;flex:1 1 420px;min-width:0}
.topbar .tabs::-webkit-scrollbar{display:none}
a.tab{white-space:nowrap}
a.tab[aria-current=true]{background:var(--accent);border-color:var(--accent);color:#fff}
section{scroll-margin-top:118px}
@media(max-width:720px){section{scroll-margin-top:150px}}

/* states */
.loading{padding:60px 16px;text-align:center;color:var(--muted)}
.spinner{width:28px;height:28px;border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;margin:0 auto 12px;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.errbox{max-width:560px;margin:40px auto}

/* key dates */
.dates{display:grid;gap:0}
.date-row{display:grid;grid-template-columns:150px 1fr;gap:6px 18px;padding:12px 0;border-bottom:1px solid var(--line)}
.date-row:last-child{border-bottom:0}
.date-row .d{font-weight:700;color:var(--accent-dark);font-variant-numeric:tabular-nums}
.date-row .t{font-weight:600}
@media(max-width:560px){.date-row{grid-template-columns:1fr}}

/* faq */
.faq details{border-bottom:1px solid var(--line);padding:2px 0}
.faq details:last-child{border-bottom:0}
.faq summary{padding:12px 28px 12px 0;font-weight:600;position:relative}
.faq summary::after{content:"+";position:absolute;right:4px;top:10px;font-size:1.3rem;color:var(--accent);transition:transform .15s}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq .ans{padding:0 0 14px;color:var(--muted);font-size:.94rem}

/* checklist progress */
.cl-prog{display:flex;align-items:center;gap:12px;margin:0 0 6px}
.cl-bar{flex:1;height:8px;background:var(--chip);border-radius:99px;overflow:hidden}
.cl-bar i{display:block;height:100%;width:0;background:var(--accent);border-radius:99px;transition:width .25s}
.cl-txt{font-size:.82rem;color:var(--muted);white-space:nowrap}
.doc label.cl{display:flex;gap:12px;cursor:pointer;width:100%}
.doc input.cl-chk{accent-color:var(--accent);width:18px;height:18px;margin-top:3px;flex:none}
.doc.done b{text-decoration:line-through;text-decoration-color:var(--accent);opacity:.6}
.btn-quiet{background:none;border:0;color:var(--muted);cursor:pointer;font-size:.8rem;text-decoration:underline;padding:0}

/* footer + back-to-top */
.foot{margin-top:40px;padding-top:22px;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:20px}
.foot h4{margin:0 0 6px;font-size:.9rem}
.foot p,.foot li{margin:3px 0;font-size:.86rem;color:var(--muted)}
.foot ul{margin:0;padding:0;list-style:none}
.to-top{position:fixed;right:16px;bottom:16px;width:42px;height:42px;border-radius:50%;border:1px solid var(--line);background:var(--card);color:var(--text);box-shadow:var(--shadow);cursor:pointer;opacity:0;pointer-events:none;transition:.2s;font-size:1.1rem}
.to-top.show{opacity:1;pointer-events:auto}
.adminlink{font-size:.75rem;color:var(--muted)}

/* nicer cards on hover, softer tables */
.tf-card{transition:border-color .15s,transform .15s}
.tf-card:hover{border-color:color-mix(in srgb,var(--accent) 45%,var(--line))}
tbody tr:hover td{background:color-mix(in srgb,var(--accent-soft) 45%,transparent)}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* print: show every open section, hide chrome */
@media print{
  .topbar,.theme-btn,.to-top,.filters,.reset,.btn,.tf-bar,.lvbar,.adminlink{display:none!important}
  body{background:#fff;color:#000}
  .card,.tf-card{box-shadow:none;break-inside:avoid}
  details:not([open])>*:not(summary){display:block!important}
  .hero::after{display:none}
  .scroll{max-height:none;overflow:visible}
}

/* ---- fixes ---- */
.tf-bar{grid-template-columns:minmax(0,1fr)}
.tf-search input{min-width:0}
.tf-row{min-width:0}
.tf-row select{flex:1 1 150px}
.secn{margin-right:.35em}
@media(max-width:720px){
  .topbar .lbl{display:none}
  .topbar .wrap{padding-top:8px;padding-bottom:8px;gap:8px}
  .lvbar .seg button{padding:7px 12px;font-size:.86rem}
  .hero .wrap{padding-top:22px}
  .stats{gap:8px;margin-top:16px}
  .stat-chip{min-width:0;flex:1 1 calc(50% - 8px);padding:8px 12px;border-radius:10px}
  .stat-chip b{font-size:1.15rem}
  .stat-chip span{font-size:.74rem}
  .hero p.sub,.hero .sub{font-size:.95rem}
  section{scroll-margin-top:112px}
}
