/* TCE site in the Emotion Atlas style: editorial paper, ink, one coral accent.
   Always light, like https://emotion-atlas.wasmer.app (no dark variant).
   Text greys are a step darker than the Atlas's so small text keeps >= 4.5:1 on the paper. */
:root{
  color-scheme: light;
  --paper:#f4efe6; --paper-2:#ebe4d6; --card:#fbf8f2;
  --ink:#1b1a17; --ink-2:#57524a; --ink-3:#6a6358;
  --hair:rgba(27,26,23,.32); --hair-soft:rgba(27,26,23,.14);
  --coral:#e4572e; --coral-ink:#b8401d;
  --c-en:#2f4b7c; --c-zh-TW:#647532; --c-ja:#7b3f6e;
  /* aliases used by the pages */
  --bg:var(--paper); --surface:var(--card); --surface-2:var(--paper-2); --line:var(--hair-soft); --muted:var(--ink-3);
  --accent:var(--ink); --accent-ink:var(--paper); --accent-soft:color-mix(in srgb, var(--coral) 11%, var(--card)); --warn:#9a4a12;
  /* chart colours (validated: models / people / two-step) */
  --series-1:#3567b5; --series-2:#e4572e; --series-3:#13917a; --grid:rgba(27,26,23,.10);
  --f-read:"Playfair Display", "Noto Serif TC", "Noto Serif JP", Georgia, serif;
  --f-ui:"Inter Tight", "Noto Sans TC", "Noto Sans JP", system-ui, sans-serif;
  --ease:cubic-bezier(.22,.8,.24,1);
  --page-w:720px;
}
html[lang="zh-TW"]{ --f-read:"Noto Serif TC", "Playfair Display", serif; --f-ui:"Inter Tight", "Noto Sans TC", system-ui, sans-serif; }
html[lang="ja"]{ --f-read:"Noto Serif JP", "Playfair Display", serif; --f-ui:"Inter Tight", "Noto Sans JP", system-ui, sans-serif; }

*,*::before,*::after{box-sizing:border-box} [hidden]{display:none!important}
html{scroll-padding-top:120px}
body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.6 var(--f-ui);-webkit-font-smoothing:antialiased;padding-bottom:56px}
body.wide{--page-w:1120px}
main{max-width:var(--page-w);margin:0 auto;padding-inline:max(18px,env(safe-area-inset-left,0px));display:grid;gap:22px}
p{margin:0}
a{color:inherit;text-decoration-color:var(--coral);text-underline-offset:3px}
a:hover{color:var(--coral-ink)}
button{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--coral);outline-offset:3px;border-radius:2px}
h1,h2,h3{font-family:var(--f-read);font-weight:400;line-height:1.12;margin:0;letter-spacing:-.01em;text-wrap:balance}
h1{font-size:clamp(2rem,5.4vw,3rem)}
h1::after,h2.section::after{content:"";display:inline-block;width:.17em;height:.17em;border-radius:50%;background:var(--coral);margin-left:.08em;vertical-align:baseline}
h2.section{font-size:clamp(1.6rem,3.6vw,2.2rem);margin-top:18px}
em{font-family:var(--f-read);font-style:italic}
html[lang="zh-TW"] em, html[lang="ja"] em{font-style:normal;font-weight:600;color:var(--coral)}
.eyebrow,.sec-no{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2);font-weight:500}
html[lang="zh-TW"] .eyebrow, html[lang="ja"] .eyebrow, html[lang="zh-TW"] .sec-no, html[lang="ja"] .sec-no{letter-spacing:.06em}
.sec-no{display:flex;align-items:center;gap:14px}
.rule{display:block;flex:1;border-top:1px dotted var(--hair)}
.lede{color:var(--ink-2);max-width:62ch;font-size:1.05rem}
.card{background:var(--card);border:1px solid var(--hair-soft);border-radius:6px;padding:22px clamp(18px,4vw,28px);display:grid;gap:14px}
.hint{font-size:13.5px;color:var(--ink-3)}
.btn{display:inline-flex;align-items:center;gap:8px;padding:11px 20px;min-height:44px;border-radius:999px;border:1px solid var(--ink);background:transparent;color:var(--ink);
  font:500 15px var(--f-ui);text-decoration:none;cursor:pointer;transition:background .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease),transform .25s var(--ease)}
.btn:not(.ghost){background:var(--ink);color:var(--paper)}
.btn:not(.ghost):hover:not([disabled]){background:var(--coral);border-color:var(--coral);color:#fff;transform:translateY(-1px)}
.btn.ghost:hover{background:var(--ink);color:var(--paper);transform:translateY(-1px)}
.btn[disabled]{opacity:.4;cursor:default;transform:none}
.notice{border:1px dotted var(--coral);border-radius:6px;padding:10px 14px;font-size:14.5px;color:var(--ink-2);background:transparent}
.notice a{font-weight:600;color:var(--ink)}

/* ---- site header: a sticky topbar like the Atlas, then the purpose line ---- */
header.site{margin:0 0 26px}
header.site .site-bar{position:sticky;top:0;z-index:20;display:flex;align-items:center;gap:22px;padding:12px max(18px,env(safe-area-inset-left,0px));
  background:color-mix(in srgb, var(--paper) 88%, transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px dotted var(--hair)}
header.site{position:relative}
header.site .brand{font-family:var(--f-read);font-size:1.3rem;line-height:1.15;text-decoration:none;color:var(--ink);white-space:nowrap;margin-right:auto}
header.site .brand::after{content:"";display:inline-block;width:.3em;height:.3em;border-radius:50%;background:var(--coral);margin-left:.12em}
header.site .brand small{display:block;font:500 10.5px/1.3 var(--f-ui);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3)}
nav.tabs{display:flex;gap:20px;overflow-x:auto;scrollbar-width:none}
nav.tabs::-webkit-scrollbar{display:none}
nav.tabs.more{-webkit-mask-image:linear-gradient(90deg,#000 82%,transparent);mask-image:linear-gradient(90deg,#000 82%,transparent)}
nav.tabs a{flex:none;text-decoration:none;font-size:14px;color:var(--ink-2);padding:4px 0;border-bottom:1px solid transparent;white-space:nowrap;transition:color .2s,border-color .2s}
nav.tabs a:hover{color:var(--ink);border-bottom-color:var(--hair)}
nav.tabs a[aria-current="page"]{color:var(--ink);border-bottom-color:var(--coral)}
.langs{display:flex;border:1px solid var(--hair);border-radius:999px;padding:3px;flex:none}
.langs button{border:0;background:transparent;color:var(--ink-2);padding:5px 12px;border-radius:999px;font-size:13px;cursor:pointer;min-height:32px}
.langs button[aria-pressed="true"]{background:var(--ink);color:var(--paper)}
.langs button[aria-disabled="true"]{cursor:not-allowed;opacity:.45}
@media (pointer:coarse){ .langs button{min-height:40px;padding:6px 13px} nav.tabs a{padding:10px 0} }
.lock-note{font-size:13.5px;color:var(--coral-ink);border-left:2px solid var(--coral);padding-left:10px}
.loading{color:var(--ink-3);font-size:14px;padding:28px 0;text-align:center}
.loading::before{content:"";display:inline-block;width:8px;height:8px;border-radius:50%;background:var(--coral);margin-right:8px;animation:pulse 1s ease-in-out infinite}
@keyframes pulse{50%{opacity:.25}}
@media (prefers-reduced-motion: reduce){ .loading::before{animation:none} }
header.site .intro{max-width:var(--page-w);margin:22px auto 0;padding-inline:max(18px,env(safe-area-inset-left,0px));display:grid;gap:10px}
header.site .purpose{color:var(--ink-2);font-size:15.5px;line-height:1.6;max-width:78ch;text-wrap:pretty;font-family:var(--f-read);font-style:italic}
html[lang="zh-TW"] header.site .purpose, html[lang="ja"] header.site .purpose{font-style:normal}

/* ---- embedded pages (dashboard, guide) ---- */
iframe.embed{width:100%;border:0;display:block;min-height:70vh;background:transparent;color-scheme:light;visibility:hidden}
iframe.embed.ready{visibility:visible}
footer.site{max-width:var(--page-w);margin:40px auto 0;padding-inline:max(18px,env(safe-area-inset-left,0px));color:var(--ink-2);font-size:13.5px}
footer.site::before{content:"";display:block;border-top:1px dotted var(--hair);margin-bottom:16px}
@media (max-width:760px){
  header.site .site-bar{flex-wrap:wrap;gap:10px 14px}
  nav.tabs{order:3;width:100%;gap:18px}
}
@media (prefers-reduced-motion: reduce){ .btn{transition:none} .btn:hover{transform:none} }
