:root{
  --bg:#0b1220;
  --card: rgba(255,255,255,.08);
  --card2: rgba(255,255,255,.12);
  --txt: rgba(255,255,255,.96);
  --muted: rgba(255,255,255,.76);
  --ok:#3ddc97;
  --bad:#ff6b6b;
  --line: rgba(255,255,255,.14);
  --line-strong: rgba(255,255,255,.22);
  --glow: 0 20px 60px rgba(0,0,0,.35);
  --radius: 22px;
}

*{
  box-sizing:border-box;
}

html,
body{
  margin:0;
  padding:0;
  min-height:100%;
  font-family:"Noto Sans Thai", system-ui, sans-serif;
  color:var(--txt);
  background:
    radial-gradient(1200px 600px at 20% 10%, rgba(59,130,246,.35), transparent 60%),
    radial-gradient(900px 500px at 80% 20%, rgba(236,72,153,.28), transparent 60%),
    var(--bg);
}

body{
  min-height:100vh;
}

a{
  color:#9bd2ff;
}

.wrap{
  max-width:1100px;
  margin:0 auto;
  padding:16px 14px 40px;
}

.hero,
.panel,
.contact{
  backdrop-filter: blur(10px);
  box-shadow: var(--glow);
}

.hero{
  padding:18px;
  border-radius:var(--radius);
  background:linear-gradient(180deg, var(--card), rgba(255,255,255,.04));
}

.heroTop{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:12px;
}

.heroTop h1{
  flex:1;
  min-width:0;
}

.langToggle{
  flex:0 0 auto;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:44px;
  height:44px;
  border:1px solid rgba(255,255,255,.18);
  border-radius:50%;
  cursor:pointer;
  color:var(--txt);
  background:rgba(0,0,0,.24);
  font-size:22px;
  line-height:1;
  box-shadow:0 12px 24px rgba(0,0,0,.24);
  transition:transform .08s ease, background .2s ease, border-color .2s ease;
}

.langToggle:hover{
  background:rgba(255,255,255,.10);
  border-color:rgba(255,255,255,.30);
}

.langToggle:active{
  transform:scale(.96);
}

h1{
  margin:0 0 10px;
  font-size:clamp(22px, 4vw, 40px);
  line-height:1.2;
  letter-spacing:0;
}

.sub{
  margin:0;
  color:var(--muted);
  font-size:clamp(13px, 2vw, 18px);
  line-height:1.65;
}

.grid{
  display:grid;
  grid-template-columns: 1.15fr .85fr;
  gap:16px;
  margin-top:16px;
}

.panel{
  padding:16px;
  border-radius:var(--radius);
  background:linear-gradient(180deg, var(--card), rgba(255,255,255,.05));
}

.panelTitle{
  margin:0 0 12px;
  font-size:18px;
  font-weight:800;
}

.panelSpacingTop{
  margin-top:16px;
}

.sectionHead{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
}

.sectionTitle{
  font-size:18px;
  font-weight:800;
}

.searchRow{
  display:flex;
  gap:10px;
  align-items:stretch;
  flex-wrap:wrap;
}

.inp{
  flex:1;
  min-width:0;
  width:100%;
  padding:16px;
  border:1px solid var(--line);
  border-radius:18px;
  outline:none;
  background: rgba(0,0,0,.20);
  color:var(--txt);
  font-size:clamp(18px, 4.3vw, 26px);
}

.inp::placeholder{
  color: rgba(255,255,255,.48);
}

.btn{
  min-width:140px;
  padding:16px 18px;
  border:0;
  border-radius:18px;
  cursor:pointer;
  color:#fff;
  font-size:clamp(16px, 3.8vw, 21px);
  font-weight:800;
  background: linear-gradient(90deg, rgba(59,130,246,.95), rgba(236,72,153,.92));
  box-shadow: 0 14px 30px rgba(0,0,0,.35);
  transition: transform .08s ease, opacity .2s ease;
}

.btn:hover{
  opacity:.96;
}

.btn:active{
  transform:scale(.99);
}

.result{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  flex-wrap:wrap;
  min-height:78px;
  margin-top:12px;
  padding:14px;
  border:1px solid var(--line);
  border-radius:18px;
  background: rgba(255,255,255,.06);
}

.hidden{
  display:none !important;
}

.resultLeft{
  min-width:0;
  flex:1;
}

.resultMsg{
  font-size:clamp(17px, 4vw, 20px);
  font-weight:800;
  line-height:1.35;
  word-break:break-word;
}

.badge{
  padding:10px 12px;
  border-radius:999px;
  white-space:nowrap;
  font-size:14px;
  font-weight:800;
  background: rgba(255,255,255,.10);
  border:1px solid rgba(255,255,255,.14);
}

.badge.ok{
  background: rgba(61,220,151,.15);
  border-color: rgba(61,220,151,.35);
}

.badge.bad{
  background: rgba(255,107,107,.15);
  border-color: rgba(255,107,107,.35);
}

.hint,
.k,
.generatedAt,
.small,
.monitorItem .label,
.contact p{
  color:var(--muted);
}

.hint{
  margin-top:10px;
  font-size:13px;
  line-height:1.55;
}

.stats{
  display:grid;
  grid-template-columns: repeat(2, 1fr);
  gap:10px;
}

.stat{
  min-height:96px;
  padding:14px;
  border:1px solid var(--line);
  border-radius:18px;
  background: rgba(255,255,255,.06);
}

.k{
  font-size:13px;
  line-height:1.5;
}

.v{
  margin-top:6px;
  font-size:clamp(22px, 5vw, 30px);
  font-weight:800;
  line-height:1.2;
  word-break:break-word;
}

.generatedAt{
  margin-top:12px;
  font-size:12px;
  line-height:1.6;
}

.monitorBar{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap:10px;
  margin-top:16px;
}

.monitorItem{
  padding:14px;
  border:1px solid var(--line);
  border-radius:18px;
  background: rgba(255,255,255,.06);
}

.monitorItem .label{
  margin-bottom:6px;
  font-size:13px;
}

.monitorItem .value{
  font-size:clamp(18px, 4vw, 28px);
  font-weight:800;
}

.chartWrap{
  position:relative;
  margin-top:12px;
  padding:14px 14px 8px;
  border:1px solid var(--line-strong);
  border-radius:20px;
  background:
    linear-gradient(180deg, rgba(255,255,255,.06), rgba(255,255,255,.03));
  overflow:hidden;
}

.chartWrap::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(600px 160px at 15% 0%, rgba(59,130,246,.12), transparent 65%),
    radial-gradient(500px 140px at 100% 0%, rgba(236,72,153,.10), transparent 60%);
}

canvas{
  display:block;
  position:relative;
  z-index:1;
  width:100% !important;
  height:380px !important;
}

.small{
  margin-top:8px;
  font-size:12px;
  line-height:1.6;
}

.contact{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:14px;
  flex-wrap:wrap;
  margin-top:16px;
  padding:16px;
  border:1px solid rgba(255,255,255,.16);
  border-radius:var(--radius);
  background: linear-gradient(180deg, rgba(255,255,255,.10), rgba(255,255,255,.06));
}

.contact h3{
  margin:0 0 8px;
  font-size:18px;
  font-weight:800;
}

.contact p{
  margin:0;
  font-size:14px;
  line-height:1.7;
}

.chips{
  display:flex;
  gap:10px;
  flex-wrap:wrap;
  align-items:center;
}

.chip{
  display:inline-flex;
  align-items:center;
  gap:8px;
  padding:10px 12px;
  border:1px solid rgba(255,255,255,.14);
  border-radius:999px;
  text-decoration:none;
  color:var(--txt);
  font-size:14px;
  font-weight:700;
  white-space:nowrap;
  background: rgba(0,0,0,.20);
  transition: transform .08s ease;
}

.chip:hover{
  border-color:rgba(255,255,255,.28);
  background: rgba(255,255,255,.08);
}

.chip:active{
  transform:scale(.99);
}

.chip span{
  opacity:.92;
  font-weight:600;
}

@media (max-width: 900px){
  .grid{
    grid-template-columns:1fr;
  }
}

@media (max-width: 760px){
  .monitorBar{
    grid-template-columns:1fr;
  }

  canvas{
    height:320px !important;
  }
}

@media (max-width: 640px){
  .heroTop{
    align-items:flex-start;
  }

  .langToggle{
    width:40px;
    height:40px;
    font-size:20px;
  }

  canvas{
    height:280px !important;
  }

  .chartWrap{
    padding:10px 10px 4px;
  }
}

@media (max-width: 560px){
  .searchRow{
    flex-direction:column;
  }

  .btn{
    width:100%;
    min-width:unset;
  }
}

@media (max-width: 520px){
  .stats{
    grid-template-columns:1fr;
  }

  canvas{
    height:250px !important;
  }
}
