/* EiKI design system: AI101 slide look (purple, blue-grey boxes, head silhouette) + the Paul's games UI */

@font-face{font-family:'Figtree';font-style:normal;font-weight:400 900;font-display:swap;src:url(../assets/fonts/figtree.woff2) format('woff2')}
@font-face{font-family:'Figtree';font-style:italic;font-weight:400 700;font-display:swap;src:url(../assets/fonts/figtree-italic.woff2) format('woff2')}
@font-face{font-family:'Archivo';font-style:normal;font-weight:600 900;font-display:swap;src:url(../assets/fonts/archivo.woff2) format('woff2')}

:root{
  color-scheme:light;
  --bg:#F6F5FA; --bg-2:#EEECF5; --panel:#FFFFFF; --panel-2:#F4F2FA; --line:rgba(58,28,113,.13); --line-2:rgba(58,28,113,.22);
  --ink:#1E1833; --muted:#5E5873; --heading:#3A1C71; --accent:#7B55C7; --accent-hi:#6A44B8; --accent-ink:#FFFFFF; --accent-soft:#EEE8FA;
  --box:#DEE5F0; --box-head:#C5D2E6; --box-line:#2F5597; --box-ink:#1F3864;
  --cream:#FBF6EA; --cream-ink:#2A1E14; --sil:#E7EAF2; --sil-pink:#F2E0E1;
  --good:#2E7D4F; --good-soft:#E2F2E7; --bad:#B3363A; --bad-soft:#F9E4E4; --gold:#C9A04A; --gold-hi:#F2D27A;
  --a-col:#1F8A8A; --b-col:#D9822B;
  --shadow:0 1px 2px rgba(30,24,51,.06),0 8px 24px rgba(30,24,51,.08);
  --shadow-lg:0 24px 64px rgba(30,24,51,.22);
  --radius:20px; --radius-sm:12px;
  --font:'Figtree',system-ui,-apple-system,'Segoe UI',sans-serif;
  --display:'Archivo','Arial Black','Helvetica Neue',Arial,sans-serif;
  --cjk:'PingFang SC','Hiragino Sans GB','Microsoft YaHei','Noto Sans SC','Noto Sans CJK SC','Source Han Sans SC',sans-serif;
  --skin:#F2C7AA; --skin-dark:#E0A98C;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --bg:#13101F; --bg-2:#19152A; --panel:#1F1A33; --panel-2:#262040; --line:rgba(220,210,255,.11); --line-2:rgba(220,210,255,.2);
    --ink:#EEEAF8; --muted:#ABA4C2; --heading:#CDB8FF; --accent:#9C7BEA; --accent-hi:#AE91F2; --accent-ink:#160F2B; --accent-soft:#2B2250;
    --box:#222B44; --box-head:#2C3757; --box-line:#7E9BD6; --box-ink:#DCE5F7;
    --cream:#F4EEDD; --sil:#1B1830; --sil-pink:#23182A;
    --good:#7BCB95; --good-soft:#1C3328; --bad:#F08A80; --bad-soft:#3A1F25; --gold:#E2C06A;
    --a-col:#5CC8C8; --b-col:#F0A55A;
    --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.25);
  }
}
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#13101F; --bg-2:#19152A; --panel:#1F1A33; --panel-2:#262040; --line:rgba(220,210,255,.11); --line-2:rgba(220,210,255,.2);
  --ink:#EEEAF8; --muted:#ABA4C2; --heading:#CDB8FF; --accent:#9C7BEA; --accent-hi:#AE91F2; --accent-ink:#160F2B; --accent-soft:#2B2250;
  --box:#222B44; --box-head:#2C3757; --box-line:#7E9BD6; --box-ink:#DCE5F7;
  --cream:#F4EEDD; --sil:#1B1830; --sil-pink:#23182A;
  --good:#7BCB95; --good-soft:#1C3328; --bad:#F08A80; --bad-soft:#3A1F25; --gold:#E2C06A;
  --a-col:#5CC8C8; --b-col:#F0A55A;
  --shadow:0 1px 2px rgba(0,0,0,.3),0 8px 24px rgba(0,0,0,.25);
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:84px}
body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--bg);color:var(--ink);font:16px/1.5 var(--font);-webkit-tap-highlight-color:transparent;overflow-x:hidden}
img,svg{max-width:100%}
a{color:var(--accent);text-underline-offset:3px}
button{font:inherit;color:inherit;cursor:pointer}
button:disabled{cursor:default}
:focus-visible{outline:3px solid var(--accent);outline-offset:2px;border-radius:6px}
h1,h2,h3,h4{font-family:var(--display);color:var(--heading);line-height:1.08;margin:0;letter-spacing:-.01em}
p{margin:0}
[hidden]{display:none!important}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.muted{color:var(--muted)}
.wrap{width:100%;max-width:1240px;margin:0 auto;padding:0 20px}
@media (max-width:600px){.wrap{padding:0 16px}}

/* head silhouette motif (from the AI101 slides) */
.silhouette{position:fixed;right:-6vw;top:8vh;height:92vh;width:auto;max-width:none;z-index:-1;pointer-events:none;color:var(--sil)}
.silhouette.pink{color:var(--sil-pink);left:-10vw;right:auto;transform:scaleX(-1)}
@media (max-width:700px){.silhouette{opacity:.6}}
main,header,footer{position:relative;z-index:1}

/* ---------- top bar ---------- */
.topbar{position:sticky;top:0;z-index:30;background:color-mix(in srgb,var(--bg) 86%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);border-bottom:1px solid var(--line)}
.topbar .wrap{display:flex;align-items:center;gap:12px;min-height:64px;padding-top:8px;padding-bottom:8px}
.brand{display:flex;align-items:center;gap:10px;text-decoration:none;color:var(--heading);flex:none}
.brand .logo{font-family:var(--display);font-weight:900;font-size:26px;letter-spacing:-.02em;line-height:1}
.brand .logo i{font-style:normal;color:var(--accent)}
.brand small{display:block;font:600 11px/1.1 var(--font);color:var(--muted);letter-spacing:.02em;margin-top:2px}
.crumb{display:flex;align-items:center;gap:8px;min-width:0;flex:1;font-weight:700;color:var(--muted);overflow:hidden}
.crumb a{color:var(--muted);text-decoration:none;white-space:nowrap}
.crumb a:hover{color:var(--accent)}
.crumb b{color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crumb .sep{opacity:.5}
.tools{display:flex;align-items:center;gap:8px;flex:none;margin-left:auto}
@media (max-width:720px){.crumb .hide-sm,.brand small,.btn .lbl-sm{display:none}}
@media (max-width:560px){.crumb{visibility:hidden}}
@media (max-width:1100px){.topbar:has(.crumb a) .brand small{display:none}}
@media (max-width:480px){h1,h2{overflow-wrap:break-word;hyphens:auto}}
@media (max-width:370px){.topbar .wrap{gap:6px}.tools{gap:4px}.tools .btn.icon{width:38px;min-height:38px;font-size:16px}.tools .pill button{padding-left:9px;padding-right:9px}.brand .logo{font-size:22px}}

/* ---------- buttons, pills, chips ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--line-2);background:var(--panel);color:var(--ink);border-radius:999px;padding:0 16px;min-height:42px;font-weight:700;font-size:15px;text-decoration:none;white-space:nowrap;transition:transform .12s ease,background .15s,border-color .15s,box-shadow .15s}
.btn:hover:not(:disabled){border-color:var(--accent)}
.btn:active:not(:disabled){transform:scale(.97)}
.btn:disabled{opacity:.45}
.btn.primary{background:var(--accent);border-color:transparent;color:var(--accent-ink)}
.btn.primary:hover:not(:disabled){background:var(--accent-hi)}
.btn.big{min-height:54px;padding:0 26px;font-size:17px;border-radius:16px}
.btn.icon{width:42px;padding:0;font-size:18px}
.btn .ico{width:22px;height:22px;flex:none}
@media (max-width:400px){.btn{white-space:normal;max-width:100%;text-align:center;line-height:1.2;padding-top:6px;padding-bottom:6px}}
.btn.ghost{background:transparent}
.btn.good{background:var(--good);color:#fff;border-color:transparent}
.pill{display:inline-flex;background:var(--panel);border:1px solid var(--line-2);border-radius:999px;padding:3px}
.pill button{border:0;background:none;border-radius:999px;padding:0 12px;min-height:34px;font-weight:700;font-size:14px;color:var(--muted)}
.pill button[aria-pressed="true"]{background:var(--accent);color:var(--accent-ink)}
.chip{display:inline-flex;align-items:center;gap:6px;border-radius:999px;padding:4px 11px;font-size:13px;font-weight:700;background:var(--accent-soft);color:var(--heading)}
.chip.good{background:var(--good-soft);color:var(--good)}
.chip.bad{background:var(--bad-soft);color:var(--bad)}
.chip.soon{background:var(--panel-2);color:var(--muted)}

/* ---------- surfaces ---------- */
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.box{border:1.5px solid var(--box-line);background:var(--box);color:var(--box-ink);border-radius:4px;overflow:hidden}
.box>h4,.box>.bh{background:var(--box-head);color:var(--box-ink);font:800 16px/1.2 var(--display);padding:8px 14px;border-bottom:1.5px solid var(--box-line);margin:0}
.box>.bb{padding:10px 14px;line-height:1.5}
.eyebrow{font:800 12px/1 var(--font);letter-spacing:.12em;text-transform:uppercase;color:var(--accent)}
.stars{color:var(--gold);letter-spacing:2px;font-size:15px;white-space:nowrap}
.stars .off{color:var(--line-2)}

/* ---------- footer (slide bar) ---------- */
.slidebar{margin-top:auto;background:var(--accent);color:#fff}
:root[data-theme="dark"] .slidebar{color:var(--accent-ink)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .slidebar{color:var(--accent-ink)}}
.slidebar .wrap{display:flex;align-items:center;gap:6px 18px;flex-wrap:wrap;min-height:44px;padding-top:10px;padding-bottom:10px;font-size:14px}
.slidebar b{font-family:var(--display);font-weight:900;letter-spacing:.01em}
.slidebar a{color:inherit;font-weight:700}
.slidebar .grow{flex:1}
.slidebar .fnote{display:flex;align-items:center;gap:6px 18px;flex-wrap:wrap}
@media (max-width:900px){.slidebar .grow{flex-basis:100%;height:0}}

/* ---------- host character + bubble ---------- */
.host{position:relative;width:150px;flex:none}
.char{width:100%;height:auto;display:block;overflow:visible}
.fx{position:absolute;inset:0;pointer-events:none;overflow:visible}
.bubble{position:relative;background:var(--cream);color:var(--cream-ink);border-radius:18px;padding:12px 16px;font-size:16px;line-height:1.45;box-shadow:var(--shadow);min-height:48px}
.bubble b{color:#3A1C71}
.bubble::after{content:"";position:absolute;border:10px solid transparent}
.bubble.down::after{left:50%;bottom:-19px;margin-left:-10px;border-top-color:var(--cream)}
.bubble.left::after{left:-19px;top:22px;border-right-color:var(--cream)}
.bubble .speaking{display:inline-block;margin-left:6px;opacity:.55;font-size:13px}

/* pivots are set up in character.js (wrapper groups), so every transform here turns around 0 0 */
.char #head,.char .arm,.char #look,.char .blinker{transform-box:view-box;transform-origin:0 0}
.char #head,.char .arm,.char #look{transition:transform .35s ease}
.char #face{transition:fill .4s ease}
.char .blinker{animation:blink 5s infinite}
@keyframes blink{0%,94%,100%{transform:scaleY(1)}97%{transform:scaleY(.1)}}
.char.cheer{animation:jump .42s ease 3}
.char.cheer #armL{transform:rotate(150deg)}
.char.cheer #armR{transform:rotate(-150deg)}
@keyframes jump{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}
.char.nod #head{animation:nod .38s ease 2}
@keyframes nod{50%{transform:translateY(5px) rotate(2deg)}}
.char.think #head{transform:rotate(-9deg)}
.char.think #armR{transform:rotate(-118deg)}
.char.explain #armR{animation:gesture 1.1s ease-in-out}
.char.explain #head{transform:rotate(5deg)}
@keyframes gesture{0%,100%{transform:rotate(0)}30%,75%{transform:rotate(-62deg)}52%{transform:rotate(-48deg)}}
.char.watch #head{transform:rotate(9deg) translateY(4px)}
.char.shudder{animation:shud .07s linear 12}
@keyframes shud{0%,100%{transform:translateX(0)}50%{transform:translateX(-4px)}}
.char.facepalm #armR{transform:rotate(-142deg)}
.char.facepalm #head{transform:rotate(6deg) translateY(4px)}
.char.wave #armR{animation:wave 2s ease-in-out}
@keyframes wave{0%,100%{transform:rotate(0)}18%,46%,74%{transform:rotate(-135deg)}32%,60%{transform:rotate(-160deg)}}
.fx span{position:absolute;font-size:22px;font-weight:800;line-height:1;opacity:0;animation:floatUp 1.5s ease-out forwards}
.fx .word{font:800 15px/1 var(--display);white-space:nowrap;animation:wordUp 1.6s ease-out forwards}
@keyframes wordUp{0%{opacity:0;transform:translate(0,6px) scale(.8)}20%{opacity:1;transform:none}80%{opacity:1}100%{opacity:0;transform:translate(6px,-18px)}}
@keyframes floatUp{0%{opacity:0;transform:translate(0,0) scale(.6)}20%{opacity:1}100%{opacity:0;transform:translate(var(--dx),-80px) scale(1.15)}}

/* ---------- dialogs ---------- */
dialog{border:0;padding:0;border-radius:24px;background:var(--panel);color:var(--ink);box-shadow:var(--shadow-lg);width:min(560px,calc(100vw - 24px));max-height:calc(100vh - 32px)}
dialog::backdrop{background:rgba(19,12,40,.55);backdrop-filter:blur(2px)}
dialog[open]{animation:dlgIn .22s ease}
@keyframes dlgIn{from{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}
.dlg{padding:24px 24px 20px;max-height:calc(100vh - 32px);overflow:auto}
.dlg h3{font-size:30px;margin:0 0 8px}
.dlg p{margin:8px 0;line-height:1.5}
.dlg .row{display:flex;gap:10px;margin-top:20px;flex-wrap:wrap}
.dlg .row .btn{flex:1;min-height:50px;border-radius:14px}
.dlg .close{position:absolute;top:10px;right:10px}
.dlg .close + h3{padding-right:44px}
.dlg .bigstars{font-size:40px;letter-spacing:6px;color:var(--gold);line-height:1;margin:6px 0 4px}
.dlg .bigstars .off{color:var(--line-2)}
.dlg .score{font-weight:800;font-variant-numeric:tabular-nums}
.notes{margin:12px 0 0;padding-left:20px;color:var(--muted);line-height:1.55}
.notes li+li{margin-top:4px}

/* manual book */
dialog.bookdlg{background:transparent;box-shadow:none;width:min(680px,calc(100vw - 20px))}
.book{position:relative;background:#FBF8F1;color:#2A1E14;border-radius:8px 20px 20px 8px;padding:14px 20px 14px 38px;box-shadow:0 24px 64px rgba(0,0,0,.45),inset 14px 0 0 #3A1C71,inset 22px 0 18px -8px rgba(0,0,0,.35);perspective:1200px}
.bookhead{display:flex;justify-content:space-between;align-items:center;font-size:13px;font-weight:700;color:#6B5A7E}
.bookhead .x{border:0;background:none;font-size:30px;line-height:1;width:44px;height:44px;color:#2A1E14;border-radius:50%}
.page{height:min(64vh,580px);overflow:auto;transform-origin:left center;padding:2px 6px 10px 0;font-size:16px;line-height:1.6}
.page.flip-next{animation:flipN .38s ease}.page.flip-prev{animation:flipP .38s ease}
@keyframes flipN{0%{transform:rotateY(-75deg);opacity:0}100%{transform:none;opacity:1}}
@keyframes flipP{0%{transform:rotateY(35deg);opacity:0}100%{transform:none;opacity:1}}
.page h3{font:900 30px/1.08 var(--display);color:#3A1C71;margin:4px 0 10px}
.page h4{font:800 18px/1.2 var(--display);color:#3A1C71;margin:16px 0 6px}
.page p{margin:0 0 12px}
.page .lead{font-style:italic;color:#6B5A7E}
.page ul,.page ol{margin:0 0 12px;padding-left:22px}
.page li+li{margin-top:4px}
.page blockquote{margin:0 0 14px;padding:10px 14px;border-left:4px solid #7B55C7;background:#F1ECFA;border-radius:0 10px 10px 0;font-style:italic}
.page blockquote cite{display:block;font-style:normal;font-weight:700;font-size:14px;margin-top:4px;color:#5E4D7A}
.page .box>h4{margin:0}
.page .box{margin:0 0 14px;--box:#DEE5F0;--box-head:#C5D2E6;--box-line:#2F5597;--box-ink:#1F3864}
.page table{border-collapse:collapse;width:100%;margin:0 0 14px;font-size:15px}
.page th,.page td{border:1.5px solid #2F5597;padding:8px 10px;text-align:left;vertical-align:top}
.page th{background:#C5D2E6;color:#1F3864}
.page td{background:#F3F6FB}
.page td.rowh{background:#F8CBAD;font-weight:800}
.toc{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:8px;margin-top:12px}
.toc button{display:flex;align-items:center;gap:10px;text-align:left;border:1px solid rgba(42,30,20,.16);background:rgba(255,255,255,.65);border-radius:12px;padding:10px 12px;font-weight:700;min-height:48px;color:#2A1E14}
.toc button:hover{border-color:#7B55C7}
.toc button span{display:grid;place-items:center;flex:none;width:26px;height:26px;border-radius:50%;background:#3A1C71;color:#fff;font-size:13px}
.booknav{display:grid;grid-template-columns:1fr auto 1fr;gap:8px;margin-top:10px}
.booknav button{min-height:46px;border-radius:12px;border:1px solid rgba(42,30,20,.18);background:#F1EADB;font-weight:800;color:#2A1E14;padding:0 14px}
.booknav button:disabled{opacity:.35}
@media (max-width:400px){.booknav{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.booknav button{padding:0 6px;font-size:14px}}
.book :focus-visible{outline-color:#7B55C7}

/* toast */
.toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);z-index:90;background:var(--heading);color:var(--panel);font-weight:700;padding:10px 18px;border-radius:14px;box-shadow:var(--shadow-lg);opacity:0;transition:opacity .2s,transform .2s;pointer-events:none;max-width:calc(100vw - 32px);text-align:center}
.toast.on{opacity:1;transform:translate(-50%,0)}

/* ---------- game page shell ---------- */
.game{flex:1;width:100%;max-width:1320px;margin:0 auto;padding:16px 20px 32px;display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start}
.side{display:flex;gap:12px;align-items:center}
.side .hostwrap{width:84px;flex:none;order:0}
.side .host{width:100%}
.side .bubble{flex:1;order:1;font-size:15px;padding:10px 14px}
.side .bubble::after{left:-19px;top:20px;border-right-color:var(--cream)}
.side .meta{display:none;order:2}
.desk{position:relative;z-index:2;height:24px;margin-top:-10px;border-radius:8px;background:linear-gradient(var(--accent),var(--heading));box-shadow:0 6px 0 -2px rgba(30,24,51,.18)}
@media (min-width:1000px){
  .game{grid-template-columns:300px minmax(0,1fr);gap:20px;padding-top:22px}
  .side{position:sticky;top:84px;flex-direction:column;align-items:stretch;gap:8px;background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:16px}
  .side .bubble{order:0;font-size:16px;padding:14px 16px;margin-bottom:6px}
  .side .bubble::after{left:50%;top:auto;bottom:-19px;margin-left:-10px;border:10px solid transparent;border-top-color:var(--cream)}
  .side .hostwrap{order:1;width:190px;margin:4px auto 0}
  .side .meta{display:flex;flex-direction:column;gap:10px;padding-top:14px;margin-top:8px;border-top:1px solid var(--line)}
}
.statrow{display:flex;justify-content:space-between;align-items:center;gap:8px;font-size:14px;font-weight:700;color:var(--muted)}
.statrow b{color:var(--ink);font-variant-numeric:tabular-nums}
.progressbar{height:8px;border-radius:4px;background:var(--panel-2);overflow:hidden}
.progressbar span{display:block;height:100%;background:var(--accent);border-radius:4px;transition:width .4s ease}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}
  .fx span{opacity:1}
}

/* ---------- disclaimer + feedback ---------- */
.disclaimer{max-width:820px}
.disclaimer.compact{max-width:none;margin:14px 0 0;padding:10px 14px;border-radius:12px;background:var(--panel-2);border:1px solid var(--line);color:var(--muted);font-size:14.5px;line-height:1.5}
.linkbtn{border:0;background:none;color:inherit;font:inherit;font-weight:800;padding:4px 8px;border-radius:8px;text-decoration:underline;text-underline-offset:3px}
.linkbtn:hover{background:rgba(255,255,255,.15)}
@media (max-width:480px){.fb-top{display:none}}
.fbform{display:flex;flex-direction:column;gap:14px;margin-top:12px}
.fbform fieldset{border:0;padding:0;margin:0}
.fbform legend,.fbform label{font-weight:700;font-size:15px}
.fbform legend{margin-bottom:6px}
.fbform label{display:flex;flex-direction:column;gap:6px}
.fbform textarea,.fbform input[type=email]{font:inherit;font-weight:400;font-size:15px;color:var(--ink);background:var(--panel-2);border:1.5px solid var(--line-2);border-radius:12px;padding:10px 12px;resize:vertical}
select.field{font:inherit;font-size:15px;font-weight:600;color:var(--ink);background:var(--panel-2);border:1.5px solid var(--line-2);border-radius:12px;padding:8px 10px;width:10.5em;max-width:58%}
select.field:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.fbform textarea:focus,.fbform input[type=email]:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}
.fbform label.check{flex-direction:row;align-items:flex-start;gap:8px;font-weight:600;font-size:14px;color:var(--muted)}
.fbform label.check input{margin-top:3px;accent-color:var(--accent)}
.fbform .pill.wrap{flex-wrap:wrap;border-radius:16px}
.fbform .hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}
.fbprivacy{font-size:13px;color:var(--muted);margin:0}
.fbmsg{font-weight:700;font-size:14px;color:var(--bad);margin:0}
.fbmsg:empty{display:none}
.fbform .row{margin-top:2px}
