/* article.css — styles for the บทความ index + article pages. Loaded via <link> in articleShell().
   Design tokens (--ink, --cobalt, --paper, --font-*, --ease, …) come from theme.css. */
*{box-sizing:border-box;margin:0}
body{background:var(--paper);color:var(--ink);font-family:var(--font-sans);font-size:1.0625rem;line-height:1.75;-webkit-font-smoothing:antialiased;min-height:100vh}
.wrap{max-width:var(--maxw);margin-inline:auto;padding:0 var(--pad-x) clamp(3rem,7vw,5rem);width:100%}
.kicker{font-family:var(--font-mono);font-size:.72rem;font-weight:500;letter-spacing:.16em;text-transform:uppercase;color:var(--cobalt)}
.tag{display:inline-block;font-family:var(--font-mono);font-size:.68rem;border:1px solid var(--line-soft);padding:.14rem .5rem;color:var(--ink-72);letter-spacing:.04em}
.idx-head{padding:clamp(1.8rem,5vw,3rem) 0 clamp(1.3rem,3vw,1.7rem);border-bottom:1px solid var(--ink);margin-bottom:clamp(1.6rem,4vw,2.3rem)}
.idx-head h1{font-family:var(--font-sans);font-weight:800;letter-spacing:-.025em;font-size:clamp(2rem,5.5vw,3rem);line-height:1.05;margin-top:.6rem}
.idx-sub{color:var(--ink-72);font-size:1.05rem;margin-top:.7rem;max-width:56ch}
.idx-list{display:grid;gap:1rem;max-width:52rem}
.art-card{display:block;text-decoration:none;color:var(--ink);border:1px solid var(--ink);background:var(--white);padding:clamp(1.1rem,3vw,1.6rem);box-shadow:5px 5px 0 var(--ink);transition:transform .16s var(--ease),box-shadow .16s var(--ease)}
.art-card:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--ink)}
.art-card:active{transform:translate(1px,1px);box-shadow:3px 3px 0 var(--ink)}
.art-meta{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.06em;color:var(--ink-52)}
.art-title{font-family:var(--font-sans);font-weight:800;letter-spacing:-.02em;font-size:clamp(1.3rem,2.8vw,1.65rem);line-height:1.18;margin-top:.5rem;text-wrap:balance}
.art-ex{color:var(--ink-72);font-size:1rem;line-height:1.6;margin-top:.6rem;max-width:60ch}
.art-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.9rem}
.art-more{display:inline-block;margin-top:1rem;font-family:var(--font-mono);font-size:.7rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--cobalt)}
/* youtube live, listed alongside the articles — cobalt while it is upcoming/on air, calmer once
   it is a replay so it does not outshout the articles for ever */
.live-card{display:block;text-decoration:none;border:1px solid var(--ink);padding:clamp(1.1rem,3vw,1.6rem);box-shadow:5px 5px 0 var(--ink);transition:transform .16s var(--ease),box-shadow .16s var(--ease);background:var(--cobalt);color:#fff}
.live-card:hover{transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--ink)}
.live-card:active{transform:translate(1px,1px);box-shadow:3px 3px 0 var(--ink)}
.live-card .art-title,.live-card .art-ex{color:#fff}
.live-card .art-more{color:#fff}
.live-card .lc-k{display:flex;align-items:center;gap:.45rem;flex-wrap:wrap;font-family:var(--font-mono);font-size:.68rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:rgba(255,255,255,.92)}
.live-card .lc-k svg{flex:none}
.live-card .lc-free{border:1px solid rgba(255,255,255,.5);padding:.1rem .45rem;letter-spacing:.08em}
.live-card .lc-when{margin-top:.7rem;font-family:var(--font-mono);font-size:.74rem;letter-spacing:.04em;color:rgba(255,255,255,.86)}
.live-card.live{background:#D62828}
.live-card.past{background:var(--white);color:var(--ink)}
.live-card.past .art-title{color:var(--ink)}
.live-card.past .art-ex{color:var(--ink-72)}
.live-card.past .lc-k{color:var(--cobalt)}
.live-card.past .lc-free{border-color:var(--cobalt-line)}
.live-card.past .lc-when{color:var(--ink-52)}
.live-card.past .art-more{color:var(--cobalt)}
.post{max-width:44rem}
.post-head{padding:clamp(1.8rem,5vw,3rem) 0 clamp(1.2rem,3vw,1.6rem);border-bottom:1px solid var(--ink)}
.post-head h1{font-family:var(--font-sans);font-weight:800;letter-spacing:-.025em;line-height:1.08;font-size:clamp(1.9rem,5.2vw,3rem);margin-top:.7rem;text-wrap:balance}
.meta{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .9rem;margin-top:1.1rem;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.06em;color:var(--ink-52)}
.meta .tags{display:flex;flex-wrap:wrap;gap:.4rem}
.lead{font-size:clamp(1.12rem,2vw,1.28rem);line-height:1.62;font-weight:500;color:var(--ink);margin-top:clamp(1.4rem,3vw,2rem)}
.post p{margin-top:1.15rem;max-width:66ch}
.post h2{font-family:var(--font-sans);font-weight:800;letter-spacing:-.02em;font-size:clamp(1.25rem,2.6vw,1.6rem);line-height:1.2;margin-top:clamp(2.2rem,4.5vw,3rem)}
.post h2 .mv{font-family:var(--font-mono);font-weight:600;font-size:.68em;letter-spacing:.02em;color:var(--cobalt);display:block;margin-bottom:.15rem}
.post strong{font-weight:700}
.rule{height:1px;background:var(--line-soft);border:0;margin:clamp(2.4rem,5vw,3.2rem) 0}
/* inline figure — borderless on desktop (the page is the frame); a sideways scroller on a phone,
   where shrinking a 720-wide diagram to fit would take the labels below legible size */
.a-fig{margin:clamp(1.6rem,3.5vw,2.4rem) 0 0;padding:0}
.a-fig-in{overflow-x:auto;-webkit-overflow-scrolling:touch}
.a-fig-in > svg{display:block;width:100%;min-width:480px;height:auto}   /* direct child only */
@media (max-width:760px){ .a-fig-in{border:1px solid var(--line-soft)} }
.a-fig figcaption{font-family:var(--font-mono);font-size:.68rem;letter-spacing:.08em;color:var(--ink-52);margin-top:.6rem;max-width:66ch}
.tips{margin-top:clamp(2.2rem,4.5vw,3rem);border:1px solid var(--ink);background:var(--white);box-shadow:5px 5px 0 var(--ink)}
.tips-h{font-family:var(--font-mono);font-size:.72rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#fff;background:var(--ink);padding:.7rem 1.1rem}
.tips ol{list-style:none;margin:0;padding:0;counter-reset:t}
.tips li{counter-increment:t;padding:1.05rem 1.1rem;border-top:1px solid var(--line-soft);display:flex;gap:.9rem}
.tips li:first-child{border-top:0}
.tips li::before{content:counter(t,decimal-leading-zero);font-family:var(--font-mono);font-size:.9rem;font-weight:700;color:var(--cobalt);flex:none;line-height:1.5}
.tips b{display:block;font-weight:700;font-size:1.05rem;letter-spacing:-.01em}
.tips .td{color:var(--ink-72);font-size:.98rem;line-height:1.6;margin-top:.25rem}
.closing{margin-top:clamp(2.2rem,4.5vw,3rem);padding-top:1.4rem;border-top:1px solid var(--ink)}
.closing p{max-width:66ch}
.foottag{margin-top:1.2rem;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.06em;color:var(--ink-52)}
.share{margin-top:clamp(2rem,4vw,2.6rem);padding-top:1.4rem;border-top:1px solid var(--ink);display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}
.share-l{font-family:var(--font-mono);font-size:.68rem;font-weight:600;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-52);margin-right:.3rem}
.share-b{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-height:36px;line-height:1;font-family:var(--font-mono);font-size:.72rem;font-weight:600;letter-spacing:.04em;color:var(--ink);background:var(--white);border:1px solid var(--ink);padding:.5rem .85rem;text-decoration:none;cursor:pointer;-webkit-appearance:none;appearance:none;transition:transform .14s var(--ease),box-shadow .14s var(--ease)}
.share-b:hover{transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}
.share-b:active{transform:translate(0,0);box-shadow:1px 1px 0 var(--ink)}
.share-b:focus-visible{outline:2px solid var(--ink);outline-offset:2px}

/* audio controls — the free-TTS button + the natural-voice player (.np lives in theme.css) share one 40px row */
.tts-row{display:flex;flex-wrap:wrap;align-items:stretch;gap:.6rem;margin-top:1.3rem}
.tts-row .np{flex:1 1 300px;max-width:none}
.tts{display:inline-flex;align-items:center;justify-content:center;gap:.55rem;min-height:40px;box-sizing:border-box;font-family:var(--font-mono);font-size:.72rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#fff;background:var(--cobalt);border:1px solid var(--cobalt);padding:.4rem .95rem;cursor:pointer;box-shadow:3px 3px 0 var(--ink);transition:transform .14s var(--ease),box-shadow .14s var(--ease)}
.tts:hover{transform:translate(-1px,-1px);box-shadow:4px 4px 0 var(--ink)}
.tts:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--ink)}
.tts:focus-visible{outline:2px solid var(--ink);outline-offset:2px}
.tts .ic{width:15px;height:15px}
.tts.on .ic-play{display:none}
.tts.on .ic-pause{display:block}
@media (prefers-reduced-motion:reduce){.tts,.share-b,.art-card,.live-card{transition:none}}
@media (max-width:560px){.tts-row .np{flex-basis:100%}}
.back{display:inline-block;margin-top:2rem;font-family:var(--font-mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase;color:var(--cobalt);text-decoration:none;border-bottom:1px solid transparent;transition:border-color .15s}
.back:hover{border-color:var(--cobalt)}
