
:root{
  --bg:#FFFFFF; --ink:#1D1D1F; --muted:#56565C; --accent:#F5A524; --accent-hover:#E8961A; --on-accent:#1D1D1F;
  --tint:#FFF5DE; --tint-2:#FFEBC2; --rule:#EFE7D6; --focus:#A35F00; --mark:#FFEBC2; --field:#FFFFFF; --mascot:#FFEFC9; --red:#B42318;
  color-scheme:light; box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px); padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#17181B; --ink:#F2F2F3; --muted:#B4B4BB; --accent:#F5A524; --accent-hover:#FFB848; --on-accent:#1D1D1F;
    --tint:#22211C; --tint-2:#2C2A21; --rule:#2F3036; --focus:#FFC65C; --mark:#4A3A14; --field:#1B1C1F; --mascot:#FFEFC9; --red:#FFB4AB;
    color-scheme:dark;
  }
}
:root[data-theme="dark"]{
  --bg:#17181B; --ink:#F2F2F3; --muted:#B4B4BB; --accent:#F5A524; --accent-hover:#FFB848; --on-accent:#1D1D1F;
  --tint:#22211C; --tint-2:#2C2A21; --rule:#2F3036; --focus:#FFC65C; --mark:#4A3A14; --field:#1B1C1F; --mascot:#FFEFC9; --red:#FFB4AB;
  color-scheme:dark;
}
*,*::before,*::after{box-sizing:inherit}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,"IBM Plex Sans Thai","Noto Sans Thai","Leelawadee UI",Tahoma,sans-serif;font-size:17px;line-height:1.75;-webkit-font-smoothing:antialiased}
button,input{font:inherit;color:inherit}
a{color:inherit;text-decoration-color:var(--accent);text-decoration-thickness:2px;text-underline-offset:4px}
:focus-visible{outline:3px solid var(--focus);outline-offset:3px;border-radius:6px}
article{max-width:760px;margin:0 auto;padding:24px 24px 80px}
.crumb{font-size:15px;color:var(--muted);margin:0 0 8px}
.crumb a{color:var(--muted)}
h1{font-family:Mali,"IBM Plex Sans Thai",sans-serif;font-weight:600;font-size:clamp(30px,5vw,42px);line-height:1.3;margin:0 0 10px;text-wrap:balance}
.lead{font-size:19px;color:var(--muted);margin:0 0 28px;max-width:62ch}
.meta{color:var(--muted);margin:0 0 28px;font-size:15px}
h2{font-family:Mali,"IBM Plex Sans Thai",sans-serif;font-size:24px;line-height:1.4;margin:44px 0 10px;font-weight:600;text-wrap:balance}
h2 .n{font-family:Fredoka,sans-serif;color:var(--muted);margin-right:8px;font-weight:600}
h3{font-size:19px;line-height:1.5;margin:24px 0 4px;font-weight:600}
p,li{max-width:68ch}
ul,ol{padding-left:1.3em}
li{margin:6px 0}
mark{background:var(--mark);color:inherit;border-radius:4px;padding:0 4px}
.summary{background:var(--tint);border-radius:24px;padding:22px 26px;margin:0 0 36px}
.summary h2{margin:0 0 6px;font-size:19px;font-family:Inter,"IBM Plex Sans Thai",sans-serif}
.summary ul{margin:0}
.tbl{overflow-x:auto;margin:16px 0}
table{border-collapse:collapse;width:100%;min-width:480px;font-size:16px}
th,td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--rule);vertical-align:top}
th{font-weight:600}
.cta{background:var(--tint);border-radius:28px;padding:24px 28px;margin:40px 0;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}
.cta p{margin:0;font-weight:600;font-size:19px}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 26px;border-radius:999px;background:var(--accent);color:#1D1D1F;font-weight:600;text-decoration:none;border:0;cursor:pointer;font-size:17px}
.btn:hover{background:var(--accent-hover)}
.btn.soft{background:var(--tint)}
.btn.soft:hover{background:var(--tint-2)}
.msg{background:var(--field);border:1.5px solid var(--rule);border-radius:18px;padding:16px 18px;margin:10px 0 6px;white-space:pre-line}
.msg-h{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-top:22px}
.msg-h h3{margin:0}
.src{font-size:15px;color:var(--muted);border-top:1px solid var(--rule);margin-top:44px;padding-top:16px}
.src ul{margin:6px 0 0}
.related{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}
.related a{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border-radius:999px;background:var(--tint);text-decoration:none;font-weight:600}
.related a:hover{background:var(--tint-2)}
.cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin:12px 0 8px}
.cards a{display:grid;grid-template-columns:56px minmax(0,1fr);column-gap:14px;align-items:start;background:var(--tint);border-radius:22px;padding:18px 20px;text-decoration:none}
.cards .ci{grid-row:1 / span 2;width:56px;height:56px;border-radius:50%;background:#FFFFFF;display:flex;align-items:center;justify-content:center}
.cards b,.cards span:not(.ci){grid-column:2}
.ph{display:flex;align-items:center;justify-content:space-between;gap:24px}
.ph>div{min-width:0}
.ph-ic{flex:0 0 104px;height:104px;border-radius:50%;background:var(--tint);display:flex;align-items:center;justify-content:center}
.ph-ic.duck{flex-basis:132px;height:132px}
.res{position:relative}
.res .peek{position:absolute;right:22px;top:-50px;line-height:0}
.calc .res{margin-top:34px}
.cards a:hover{background:var(--tint-2)}
.cards b{display:block;font-size:18px;margin-bottom:2px}
.cards span{color:var(--muted);font-size:15.5px;line-height:1.6;display:block}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(24px + env(safe-area-inset-bottom,0px));background:var(--ink);color:var(--bg);border-radius:14px;padding:12px 18px;z-index:60;font-size:15px}
[hidden]{display:none !important}
/* calculators */
.calc{background:var(--tint);border-radius:28px;padding:24px;margin:8px 0 32px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:24px}
.calc label{display:block;font-weight:600;margin:0 0 6px}
.calc .fld{margin-bottom:18px}
.calc input[type=text],.calc input[type=number]{width:100%;min-height:52px;border:1.5px solid var(--rule);border-radius:14px;background:var(--field);padding:0 16px;font-size:20px;font-variant-numeric:tabular-nums}
.calc input:focus{border-color:var(--accent);outline:none}
.pills{display:flex;flex-wrap:wrap;gap:8px}
.pills button{border:1.5px solid var(--rule);background:var(--field);border-radius:999px;min-height:44px;padding:0 16px;cursor:pointer;font-weight:600;font-size:15.5px}
.pills button[aria-pressed="true"]{background:var(--accent);border-color:var(--accent);color:#1D1D1F}
.res{background:var(--field);border-radius:20px;padding:18px 20px;align-self:start}
.res div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--rule);font-variant-numeric:tabular-nums}
.res div:last-child{border-bottom:0}
.res .big{font-size:22px;font-weight:700}
.ferr{color:var(--red);font-size:15px;margin:6px 0 0}
.calc input[aria-invalid="true"]{border-color:var(--red)}
.res span{color:var(--muted)}
.out{font-size:22px;font-weight:600;line-height:1.6;min-height:2em;word-break:break-word}
@media (max-width:720px){.calc{grid-template-columns:minmax(0,1fr);padding:18px;border-radius:22px}.cards{grid-template-columns:minmax(0,1fr)}.ph{flex-direction:column-reverse;align-items:flex-start;gap:8px}.ph-ic{flex:0 0 auto;width:72px;height:72px}.ph-ic svg{width:40px;height:40px}.ph-ic.duck{width:96px;height:96px}.ph-ic.duck svg{width:80px;height:80px}.calc .res{margin-top:46px}}
@media (max-width:520px){article{padding:12px 18px 64px}.summary{padding:18px 20px}.cta{padding:20px}}

/* ---------- shared site header / footer ---------- */
.sh-top{max-width:1120px;margin:0 auto;padding:20px 24px;display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;box-sizing:border-box}
.sh-brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--ink,var(--text))}
.sh-brand .wordmark{font-family:Fredoka,"IBM Plex Sans Thai",sans-serif;font-weight:600;font-size:28px;letter-spacing:-.02em}
.sh-nav{display:flex;align-items:center;gap:28px;flex-wrap:wrap}
.sh-nav a{text-decoration:none;color:var(--muted);font-size:16px;font-family:Inter,"IBM Plex Sans Thai","Noto Sans Thai",Tahoma,sans-serif}
.sh-nav a:hover{color:var(--ink,var(--text))}
.sh-nav a[aria-current="page"]{color:var(--ink,var(--text));font-weight:600;text-decoration:underline;text-decoration-color:var(--accent);text-decoration-thickness:2px;text-underline-offset:8px}
.sh-nav .sh-cta{display:inline-flex;align-items:center;justify-content:center;min-height:48px;padding:0 26px;border-radius:999px;background:var(--accent);color:#1D1D1F;font-weight:600;font-size:17px}
.sh-nav .sh-cta:hover{color:#1D1D1F;filter:brightness(.96)}
.sh-foot{border-top:1px solid var(--rule,var(--line));color:var(--muted);font-size:15px;font-family:Inter,"IBM Plex Sans Thai","Noto Sans Thai",Tahoma,sans-serif}
.sh-foot-in{max-width:1120px;margin:0 auto;padding:28px 24px 36px;display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;box-sizing:border-box}
.sh-foot .wordmark{font-family:Fredoka,sans-serif;font-weight:600;font-size:18px;color:var(--ink,var(--text))}
.sh-foot nav{display:flex;gap:8px 22px;flex-wrap:wrap}
.sh-foot a{color:var(--muted);text-decoration-color:var(--accent);text-decoration-thickness:2px;text-underline-offset:4px;min-height:32px;display:inline-flex;align-items:center}
.sh-foot a:hover{color:var(--ink,var(--text))}
@media (max-width:900px){.sh-top{padding:14px 18px}.sh-nav a:not(.sh-cta){display:none}.sh-foot-in{padding:24px 18px 32px}.sh-foot a{min-height:44px}}
@media print{.sh-top,.sh-foot{display:none !important}}
/* ---------- tumbill mascot motion ---------- */
.tb-duck,.tb-receipt,.tb-wings{transform-box:fill-box}
.tb-logo.tb-hi .tb-duck{animation:tbTilt .42s ease-in-out both;transform-origin:center bottom}
@keyframes tbTilt{0%{transform:rotate(0) translateY(0)}30%{transform:rotate(-12deg) translateY(-4px)}65%{transform:rotate(8deg) translateY(-2px)}100%{transform:rotate(0) translateY(0)}}
.tb-replay{position:absolute;inset:0;border:0;background:none;padding:0;margin:0;cursor:pointer;border-radius:50%}
.tb-check{stroke-dasharray:44;stroke-dashoffset:0}
.tb-hero.tb-play .tb-receipt{animation:tbReceipt .45s cubic-bezier(.2,.8,.3,1.2) both;transform-origin:center bottom}
.tb-hero.tb-play .tb-duck{animation:tbPop .42s cubic-bezier(.2,.8,.3,1.25) .3s both;transform-origin:center bottom}
.tb-hero.tb-play .tb-wings{animation:tbWings .22s ease-out .62s both;transform-origin:center}
.tb-hero.tb-play .tb-check{animation:tbDraw .26s ease-out .72s both}
@keyframes tbReceipt{0%{transform:translateY(70px);opacity:0}50%{transform:translateY(-6px);opacity:1}75%{transform:translateY(3px)}100%{transform:translateY(0)}}
@keyframes tbPop{0%{transform:translateY(48px);opacity:0}10%{opacity:1}65%{transform:translateY(-12px)}85%{transform:translateY(2px)}100%{transform:translateY(0);opacity:1}}
@keyframes tbWings{0%{transform:scale(0)}70%{transform:scale(1.18)}100%{transform:scale(1)}}
@keyframes tbDraw{0%{stroke-dashoffset:44}100%{stroke-dashoffset:0}}
@media (prefers-reduced-motion:reduce){.tb-logo .tb-duck,.tb-hero *{animation:none !important}}
