:root{
  --paper:#fbfaf5;--panel:#ffffff;--ink:#16211c;--muted:#4f5d55;--line:#d9ddd2;
  --brand:#17362b;--brand-ink:#f3f1e6;--link:#1d6448;--tape:#f0b429;--tape-soft:#fdf3d6;
  --hi:#eef3ec;--warn:#9b2c12;
  --radius:12px;--wrap:780px;
  --font:"Leelawadee UI","Leelawadee","Thonburi","Noto Sans Thai","Sukhumvit Set",system-ui,-apple-system,"Segoe UI",sans-serif;
  --digits:"Segoe UI","SF Pro Display",system-ui,-apple-system,"Roboto",sans-serif;
  color-scheme:light dark;
}
@media (prefers-color-scheme:dark){
  :root{--paper:#101814;--panel:#16201b;--ink:#e7ebe3;--muted:#a3b0a7;--line:#2c3a33;
    --brand:#0b130f;--brand-ink:#e7ebe3;--link:#7fd0a8;--tape:#e9b13a;--tape-soft:#2d2715;
    --hi:#1b2a23;--warn:#ff9e80}
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:17px;line-height:1.7}
a{color:var(--link);text-underline-offset:3px}
a:hover{text-decoration-thickness:2px}
img,svg{max-width:100%;height:auto}
.wrap{max-width:var(--wrap);margin:0 auto;padding:0 16px}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:var(--paper);padding:8px 12px;z-index:9}
.skip:focus{left:8px;top:8px}
:focus-visible{outline:3px solid var(--tape);outline-offset:2px;border-radius:6px}

/* header: dark band with a tape-measure edge */
.top{background:var(--brand);color:var(--brand-ink);position:relative;padding-bottom:10px}
.top::after{content:"";position:absolute;left:0;right:0;bottom:0;height:10px;background:
  repeating-linear-gradient(90deg,var(--brand) 0 1px,transparent 1px 10px) 0 0/100% 4px no-repeat,
  repeating-linear-gradient(90deg,var(--brand) 0 2px,transparent 2px 50px) 0 0/100% 8px no-repeat,
  var(--tape)}
.top .wrap{display:flex;align-items:center;justify-content:space-between;gap:2px 12px;flex-wrap:wrap;padding-top:6px;padding-bottom:6px}
.brand{display:flex;align-items:center;gap:9px;font-weight:700;font-size:21px;color:var(--brand-ink);text-decoration:none;min-height:44px}
.brand svg{width:28px;height:28px;flex:none;color:var(--brand-ink)}
.nav{display:flex;gap:2px;margin:0;padding:0;list-style:none;overflow-x:auto;scrollbar-width:none}
.nav li{flex:none;margin:0}
.nav a{display:flex;align-items:center;min-height:44px;padding:0 10px;border-radius:8px;color:var(--brand-ink);text-decoration:none;font-size:16px}
.nav a:hover{background:rgba(255,255,255,.1)}
.nav a[aria-current=page]{font-weight:700;box-shadow:inset 0 -3px 0 var(--tape)}

/* page */
main{padding:22px 0 48px}
.crumbs{font-size:14px;color:var(--muted);margin:0 0 8px}
.crumbs a{color:var(--muted)}
h1{font-size:clamp(26px,5.4vw,36px);line-height:1.3;margin:0 0 12px}
h2{font-size:clamp(21px,3.8vw,25px);line-height:1.4;margin:42px 0 10px}
h3{font-size:19px;line-height:1.45;margin:26px 0 6px}
p,ul,ol{margin:0 0 14px}
li{margin-bottom:6px}
.note{font-size:15px;color:var(--muted)}
.num{font-family:var(--digits);font-variant-numeric:tabular-nums}

/* the short answer under h1 */
.answer{background:var(--tape-soft);border-radius:var(--radius);padding:14px 16px;margin:0 0 18px}
.answer p{margin:0}
.answer p+p{margin-top:6px;font-size:16px;color:var(--muted)}
.answer strong{font-size:1.06em}

/* tables */
.tbl{overflow-x:auto;margin:0 0 16px;border:1px solid var(--line);border-radius:var(--radius);background:var(--panel)}
table{border-collapse:collapse;width:100%;font-size:16px}
th,td{border-bottom:1px solid var(--line);padding:9px 12px;text-align:left;vertical-align:top}
tr:last-child td{border-bottom:0}
th{font-weight:700;background:var(--hi)}
td.r,th.r{text-align:right;font-family:var(--digits);font-variant-numeric:tabular-nums;white-space:nowrap}
caption{caption-side:bottom;text-align:left;font-size:14px;color:var(--muted);padding:8px 12px}

/* tool panel */
.tool{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px;margin:4px 0 12px;box-shadow:0 1px 2px rgba(20,40,30,.06),0 6px 20px -12px rgba(20,40,30,.25)}
.tool h2{margin:0 0 12px;font-size:20px}
.row{display:flex;gap:10px;flex-wrap:wrap;align-items:flex-end}
.field{display:flex;flex-direction:column;gap:4px;flex:1 1 100px;min-width:0}
.field label,.lbl{font-size:15px;color:var(--muted)}
input,select,button{font:inherit;color:inherit}
input,select{min-height:48px;border:1px solid var(--line);border-radius:10px;background:var(--paper);padding:0 12px;width:100%;font-size:18px}
input[type=number],input[inputmode=decimal]{font-family:var(--digits);font-variant-numeric:tabular-nums}
input:hover,select:hover{border-color:var(--muted)}
.btn{min-height:48px;padding:0 18px;border-radius:10px;border:1px solid var(--line);background:var(--paper);cursor:pointer;font-size:17px;font-weight:600;touch-action:manipulation}
.btn:hover{border-color:var(--ink)}
.btn.primary{background:var(--brand);border-color:var(--brand);color:var(--brand-ink)}
@media (prefers-color-scheme:dark){.btn.primary{background:var(--tape);border-color:var(--tape);color:#1d1606}}
.btn.primary:hover{filter:brightness(1.12)}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btns{display:flex;gap:10px;flex-wrap:wrap;margin-top:14px}
.seg{display:inline-grid;grid-auto-flow:column;grid-auto-columns:1fr;max-width:100%;border:1px solid var(--line);border-radius:10px;overflow:hidden;margin:0 0 14px}
.seg button{min-height:44px;padding:6px 14px;line-height:1.35;border:0;background:transparent;cursor:pointer;font-size:16px}
.seg button+button{border-left:1px solid var(--line)}
.seg button[aria-pressed=true]{background:var(--brand);color:var(--brand-ink);font-weight:700}
@media (prefers-color-scheme:dark){.seg button[aria-pressed=true]{background:var(--tape);color:#1d1606}}

/* results */
.out{margin-top:16px;border-top:1px dashed var(--line);padding-top:14px}
.big{font-size:clamp(22px,5.6vw,30px);font-weight:700;line-height:1.4;margin:0 0 8px}
.big b{font-family:var(--digits);font-variant-numeric:tabular-nums}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:10px 0 0;padding:0;list-style:none}
.facts li{border:1px solid var(--line);border-radius:10px;padding:8px 12px;margin:0;background:var(--paper)}
.facts span{display:block;font-size:14px;color:var(--muted)}
.facts strong{font-family:var(--digits);font-variant-numeric:tabular-nums;font-size:19px;word-break:break-all}
.err{color:var(--warn);font-weight:600;margin:10px 0 0;min-height:1.7em}

/* figures */
figure{margin:8px 0 18px}
figure svg{display:block;width:100%;max-width:560px}
figcaption{font-size:14px;color:var(--muted);margin-top:6px}

/* photo crop tool */
.stage{position:relative;margin:0 auto;max-width:320px;aspect-ratio:5/7;background:var(--hi);border-radius:8px;overflow:hidden;touch-action:none;cursor:grab;user-select:none}
.stage canvas{display:block;width:100%;height:100%}
.stage .guide{position:absolute;inset:0;pointer-events:none}
.drop{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:150px;border:2px dashed var(--line);border-radius:var(--radius);text-align:center;padding:16px;cursor:pointer}
.drop:hover{border-color:var(--link)}
input[type=range]{min-height:44px;padding:0;border:0;background:transparent;accent-color:var(--link)}
input[type=file]{position:absolute;width:1px;height:1px;opacity:0}
input[type=file]:focus-visible+.drop{outline:3px solid var(--tape);outline-offset:2px}
.drop[hidden],[hidden]{display:none!important}

/* home list */
.tools{list-style:none;padding:0;margin:18px 0 8px;border-top:1px solid var(--line)}
.tools li{margin:0;border-bottom:1px solid var(--line)}
.tools a{display:grid;grid-template-columns:1fr auto;gap:2px 16px;padding:14px 4px;color:var(--ink);text-decoration:none}
.tools a:hover .t{color:var(--link);text-decoration:underline}
.tools .t{font-size:20px;font-weight:700}
.tools .d{grid-column:1;color:var(--muted);font-size:16px}
.tools .v{grid-row:1/3;grid-column:2;align-self:center;font-family:var(--digits);font-variant-numeric:tabular-nums;font-size:15px;color:var(--muted);text-align:right}

/* footer */
.foot{border-top:1px solid var(--line);padding:22px 0 32px;font-size:15px;color:var(--muted)}
.foot ul{list-style:none;padding:0;margin:0 0 10px;display:flex;flex-wrap:wrap;gap:4px 16px}
.foot li{margin:0}
.foot a{color:var(--muted);display:inline-flex;min-height:44px;min-width:44px;align-items:center}
@media (max-width:520px){.tools .v{display:none}.tools a{grid-template-columns:1fr}}
@media (max-width:400px){.nav a{padding:0 6px;font-size:15px}}
