/* Jemetic — homepage additions on top of site.css.
   Manga page language from site.css; AI signals come from product UI (chat, memory, voice, the real Shuohua screen);
   the character 潔米 stays an accent: one hero panel, a chat avatar, one small strip, one sticker. */

/* ---------- hero: one full-screen title, like a manga splash page ---------- */
.kv{position:relative;min-height:calc(100svh - 56px);display:grid;align-items:center;overflow:hidden;background:var(--paper);border-bottom:var(--b) solid var(--line);padding-block:clamp(56px,9vh,96px) clamp(96px,14vh,140px)}
.kv .lines{position:absolute;inset:-60%;background:repeating-conic-gradient(from 0deg at 50% 50%,transparent 0deg 2.6deg,color-mix(in srgb,var(--ink) 7%,transparent) 2.6deg 3.2deg);animation:spin 80s linear infinite;pointer-events:none}
.kv::after{content:"";position:absolute;inset:0;background:radial-gradient(ellipse 46% 40% at 50% 48%,var(--paper) 30%,transparent 100%);pointer-events:none}
@keyframes spin{to{transform:rotate(360deg)}}
.kv .flash{position:absolute;inset:0;z-index:3;background:var(--paper);opacity:0;pointer-events:none;animation:flash .5s .55s ease-out}
@keyframes flash{0%{opacity:0}15%{opacity:.85}100%{opacity:0}}
.kv .inner{position:relative;z-index:2;text-align:center;display:flex;flex-direction:column;align-items:center}
.kv .kicker{font-family:var(--f-mono);font-size:12px;letter-spacing:.2em;color:var(--spot);animation:drop .45s .05s cubic-bezier(.2,.8,.2,1) both}
@keyframes drop{from{transform:translateY(-18px);opacity:0}}
.kv .title{font-family:var(--f-heavy);font-weight:900;font-size:clamp(64px,13.5vw,210px);line-height:.95;letter-spacing:-.02em;margin:18px 0 0;display:flex;align-items:center;justify-content:center;gap:.06em;white-space:nowrap}
body.en .kv .title{font-family:var(--f-latin);font-weight:700;letter-spacing:-.045em}
.kv .title span{display:inline-block}
.kv .title .t1{animation:slam .38s .2s cubic-bezier(.6,0,.9,.5) both}
.kv .title .x{color:var(--spot);font-family:var(--f-mono);font-weight:500;font-size:.5em;animation:spinin .55s .5s cubic-bezier(.3,1.6,.5,1) both}
.kv .title .t2{animation:slam .38s .62s cubic-bezier(.6,0,.9,.5) both}
@keyframes slam{from{transform:scale(3.2);opacity:0}}
@keyframes spinin{from{transform:rotate(-540deg) scale(0)}}
.kv .inner{animation:shake .3s 1s linear}
@keyframes shake{20%{transform:translateX(6px)}40%{transform:translateX(-5px)}60%{transform:translateX(4px)}80%{transform:translateX(-2px)}}
.kv .tagline{font-family:var(--f-display);font-size:clamp(20px,2.4vw,30px);margin-top:22px;min-height:1.5em}
body.en .kv .tagline{font-family:var(--f-latin);font-weight:500}
.kv .caret{display:inline-block;width:2px;height:1em;background:currentColor;vertical-align:-3px;margin-left:3px;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}
.kv .sub{margin-top:10px;color:var(--ink-2);max-width:34em}
.kv .cta{display:flex;flex-wrap:wrap;justify-content:center;gap:16px;align-items:center;margin-top:28px}
.kv .sub,.kv .cta,.kv .built{animation:rise .6s 1.25s cubic-bezier(.2,.8,.2,1) both}
@keyframes rise{from{transform:translateY(14px);opacity:0}}
.kv .built{margin-top:22px;display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:6px 10px;font-size:13px;color:var(--muted)}
.kv .built span{font-family:var(--f-mono);font-size:11px;letter-spacing:.1em;border:1px solid var(--line);padding:2px 8px;color:var(--ink)}
.kv .sfx{position:absolute;z-index:2;left:clamp(12px,8vw,140px);top:16%;font-family:var(--f-heavy);font-weight:900;font-size:clamp(40px,6vw,88px);color:var(--spot);-webkit-text-stroke:3px var(--paper);paint-order:stroke fill;transform:rotate(-14deg);animation:sfx .3s 1s cubic-bezier(.3,1.8,.5,1) both;pointer-events:none}
@keyframes sfx{from{transform:rotate(-14deg) scale(0);opacity:0}}
/* 潔米: a sticker in the corner, not the subject */
.buddy{position:absolute;z-index:2;right:clamp(8px,4vw,72px);bottom:0;display:flex;align-items:flex-end;gap:4px;animation:rise .7s 1.6s cubic-bezier(.2,.8,.2,1) both}
.buddy img{height:clamp(150px,22vh,230px);width:auto;display:block;filter:drop-shadow(3px 0 0 #fff) drop-shadow(-3px 0 0 #fff) drop-shadow(0 -3px 0 #fff)}
.buddy .say{align-self:flex-start;margin-top:8px;position:relative;background:var(--paper);border:2.5px solid var(--line);border-radius:22px;padding:8px 14px;font-family:var(--f-display);font-size:15px;line-height:1.4;max-width:210px;box-shadow:3px 3px 0 var(--spot)}
body.en .buddy .say{font-family:var(--f-latin);font-weight:500}
.buddy .say::after{content:"";position:absolute;right:-12px;bottom:12px;width:16px;height:14px;background:var(--paper);border:2.5px solid var(--line);border-left:0;border-bottom:0;transform:skewY(28deg) rotate(8deg);clip-path:polygon(0 0,100% 0,0 100%)}
.buddy .who{display:block;font-family:var(--f-mono);font-size:10px;letter-spacing:.06em;color:var(--spot)}
.scroll-hint{position:absolute;z-index:2;bottom:22px;left:50%;transform:translateX(-50%);font-family:var(--f-mono);font-size:11px;letter-spacing:.2em;color:var(--muted);display:grid;justify-items:center;gap:8px}
.scroll-hint i{width:2px;height:36px;background:linear-gradient(var(--spot),transparent);animation:drip 1.6s ease-in-out infinite}
@keyframes drip{0%{transform:scaleY(0);transform-origin:top}50%{transform:scaleY(1);transform-origin:top}51%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* ---------- beliefs: words ink in as you read down ---------- */
.believe{padding-block:clamp(72px,11vw,150px)}
.lines-ink .line{font-family:var(--f-heavy);font-weight:900;font-size:clamp(32px,5.6vw,80px);line-height:1.2;letter-spacing:-.01em}
body.en .lines-ink .line{font-family:var(--f-latin);font-weight:700;letter-spacing:-.03em}
.lines-ink .line + .line{margin-top:.35em}
.lines-ink .w{color:color-mix(in srgb,var(--ink) 14%,var(--paper));transition:color .2s}
.lines-ink .w.on{color:var(--ink)}
.lines-ink .w.hot.on{color:var(--spot)}
.believe .bsub{margin-top:36px;color:var(--ink-2);max-width:40em;font-size:17px}

/* ---------- three directions: pinned, panels slide sideways as you scroll ---------- */
.hx{position:relative;padding:0;background:var(--paper)}
.hx-pin{position:sticky;top:0;height:100svh;overflow:hidden;display:flex;flex-direction:column;padding-top:clamp(76px,10vh,104px)}
.hx-head{position:relative;width:100%;display:flex;align-items:flex-end;gap:16px}
.hx-head .chap{flex:1;margin-bottom:0}
.hx-head .chap p{max-width:44em}
.hx-head .count{font-family:var(--f-mono);font-size:13px;color:var(--muted);padding-bottom:16px;white-space:nowrap}
.hx-head .count b{color:var(--spot);font-weight:500;font-size:22px}
.hx-track{flex:1;display:flex;gap:28px;align-items:center;padding:24px max(var(--gutter),calc((100vw - 1200px)/2 + var(--gutter)));width:max-content;will-change:transform}
.hx-panel{position:relative;flex:none;width:min(80vw,1000px);height:min(58svh,520px);border:var(--b) solid var(--line);background:var(--paper);display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);overflow:hidden;transition:box-shadow .4s}
.hx-panel:nth-child(odd){transform:rotate(-.6deg)}
.hx-panel:nth-child(even){transform:rotate(.5deg)}
.hx-panel.on{box-shadow:8px 8px 0 var(--spot)}
.hx-ui{position:relative;border-right:var(--b) solid var(--line);background:var(--panel);background-image:radial-gradient(var(--tone) 1.1px,transparent 1.3px);background-size:7px 7px;display:grid;place-items:center;padding:clamp(16px,2.4vw,32px);overflow:hidden}
.hx-ui::before{content:"";position:absolute;inset:-60%;background:repeating-conic-gradient(from 0deg at 50% 50%,transparent 0deg 3deg,color-mix(in srgb,var(--paper) 60%,transparent) 3deg 4.4deg);pointer-events:none}
.win{position:relative;width:100%;max-width:440px;display:flex;flex-direction:column;gap:12px}
.hx-txt{padding:clamp(22px,3vw,40px);display:flex;flex-direction:column;gap:14px;justify-content:center;min-width:0}
.hx-txt .k{font-family:var(--f-mono);font-size:12px;letter-spacing:.12em;color:var(--spot)}
.hx-txt h3{font-size:clamp(30px,3.4vw,50px);line-height:1.1}
.hx-txt > p{color:var(--ink-2)}
.hx-txt .now{margin-top:6px}
.hx-progress{height:3px;background:var(--tone);margin:0 var(--gutter) 22px}
.hx-progress i{display:block;height:100%;background:var(--spot);transform-origin:left;transform:scaleX(0)}

/* the little product UIs inside each panel */
.ui-bar{display:flex;align-items:center;gap:8px;font-family:var(--f-mono);font-size:11px;letter-spacing:.04em;color:var(--ink-2);background:var(--paper);border:2px solid var(--line);padding:6px 10px}
.ui-bar .dot{width:8px;height:8px;border-radius:50%;background:#2fb36b}
.ui-bar .r{margin-left:auto;color:var(--blue)}
.ui-chat{display:flex;flex-direction:column;gap:8px}
.ui-chat p{max-width:86%;font-size:14px;line-height:1.5;padding:8px 13px;border:2px solid var(--line);border-radius:16px;background:var(--paper)}
.ui-chat .u{align-self:flex-end;background:var(--ink);color:var(--on-ink);border-bottom-right-radius:4px}
.ui-chat .c{border-bottom-left-radius:4px}
.ui-chat .note{border:0;background:none;padding:0 4px;font-family:var(--f-mono);font-size:11px;color:var(--blue)}
.pop{opacity:0;transform:translateY(10px) scale(.92);transition:opacity .35s,transform .35s cubic-bezier(.3,1.6,.5,1)}
.on .pop{opacity:1;transform:none}
.on .pop:nth-child(2){transition-delay:.55s}.on .pop:nth-child(3){transition-delay:.9s}.on .pop:nth-child(4){transition-delay:1.4s}.on .pop:nth-child(5){transition-delay:1.95s}
.ui-prompt{display:flex;align-items:center;gap:10px;background:var(--paper);border:2px solid var(--line);padding:9px 12px;font-size:14px}
.ui-prompt span{font-family:var(--f-mono);font-size:10px;color:var(--paper);background:var(--ink);padding:1px 6px;white-space:nowrap}
.ui-prompt em{font-style:normal;min-height:1.5em}
.ui-prompt b{margin-left:auto;color:var(--spot)}
.ui-steps{display:flex;flex-wrap:wrap;gap:6px}
.ui-steps span{font-size:12px;border:1.5px solid var(--line);background:var(--paper);padding:1px 10px;border-radius:999px;transition:background .2s,color .2s}
.on .ui-steps span{animation:stepon .3s both}
.on .ui-steps span:nth-child(1){animation-delay:1.3s}.on .ui-steps span:nth-child(2){animation-delay:1.6s}.on .ui-steps span:nth-child(3){animation-delay:1.9s}.on .ui-steps span:nth-child(4){animation-delay:2.2s}.on .ui-steps span:nth-child(5){animation-delay:2.5s}
@keyframes stepon{to{background:var(--ink);color:var(--on-ink)}}
.ui-pages{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;direction:rtl}
.ui-pages img{width:100%;aspect-ratio:800/1130;object-fit:cover;border:2px solid var(--line);background:#fff;display:block;box-shadow:4px 4px 0 color-mix(in srgb,var(--ink) 14%,transparent)}
.fly img{opacity:0;transition:transform .7s cubic-bezier(.2,.8,.2,1),opacity .4s}
.fly img:nth-child(1){transform:translate(60px,-50px) rotate(14deg) scale(.7)}
.fly img:nth-child(2){transform:translate(20px,60px) rotate(-9deg) scale(.7)}
.fly img:nth-child(3){transform:translate(-30px,-60px) rotate(7deg) scale(.7)}
.fly img:nth-child(4){transform:translate(-70px,40px) rotate(-15deg) scale(.7)}
.on .fly img{opacity:1;transform:none}
.on .fly img:nth-child(1){transition-delay:2.7s}.on .fly img:nth-child(2){transition-delay:2.8s}.on .fly img:nth-child(3){transition-delay:2.9s}.on .fly img:nth-child(4){transition-delay:3s}
.stage2{display:flex;align-items:flex-end;gap:10px;background:var(--paper);border:2px solid var(--line);padding:10px 12px 0;min-height:130px}
.stage2 .who{height:120px;width:auto;display:block}
.stage2 .who.swap{animation:swap .35s cubic-bezier(.3,1.5,.5,1)}
.stage2 .sub2{align-self:center;font-family:var(--f-display);font-size:15px;line-height:1.5;border:2px solid var(--line);border-radius:16px 16px 16px 4px;padding:8px 12px;background:var(--paper)}
body.en .stage2 .sub2{font-family:var(--f-latin)}
.ui-wave{display:flex;align-items:center;justify-content:center;gap:4px;height:58px;background:var(--paper);border:2px solid var(--line)}
.ui-wave i{width:4px;height:40px;border-radius:2px;background:var(--spot);transform:scaleY(.2)}
.on .ui-wave i{animation:wave 1.1s ease-in-out infinite}
.ui-wave i:nth-child(3n){animation-delay:.2s}.ui-wave i:nth-child(3n+1){animation-delay:.45s}.ui-wave i:nth-child(4n){animation-delay:.7s;background:var(--ink)}
.ui-emo{display:flex;flex-wrap:wrap;gap:6px}
.ui-emo span{font-size:12px;border:1.5px solid var(--line);background:var(--paper);padding:1px 10px;border-radius:999px;transition:background .2s,color .2s}
.ui-emo .on{background:var(--ink);color:var(--on-ink)}

/* ---------- Shuohua: the real product screen ---------- */
.screen{border:var(--b) solid var(--line);background:var(--paper);margin-bottom:14px;box-shadow:6px 6px 0 var(--spot)}
.screen-bar{display:flex;align-items:center;gap:6px;padding:6px 10px;border-bottom:2px solid var(--line);font-family:var(--f-mono);font-size:11px;color:var(--muted)}
.screen-bar i{width:9px;height:9px;border-radius:50%;border:1.5px solid var(--line)}
.screen-bar span{margin-left:8px}
.screen video{display:block;width:100%;height:auto;aspect-ratio:16/9;background:#fff}
.stack{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:clamp(40px,5vw,64px)}
.stack .belief .n{background:var(--ink);color:var(--paper)}

/* ---------- 潔米: one small strip ---------- */
.jemi{margin-top:clamp(36px,5vw,56px);display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:20px;border:var(--b) solid var(--line);background:var(--panel);padding:0 20px 0 12px;overflow:hidden;position:relative}
.jemi .me{height:128px;width:auto;display:block;align-self:end;margin-top:10px}
.jemi .me.swap{animation:swap .35s cubic-bezier(.3,1.5,.5,1)}
@keyframes swap{from{transform:translateY(12px);opacity:.2}}
.jemi .who{font-size:13px;color:var(--muted)}
.jemi .who b{font-family:var(--f-mono);font-weight:500;font-size:12px;letter-spacing:.08em;color:var(--spot);margin-right:10px}
.jemi .line{font-family:var(--f-display);font-size:clamp(17px,1.7vw,21px);margin-top:4px}
.faces{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}
.faces button{appearance:none;border:2px solid var(--line);background:var(--paper);color:var(--ink);font:500 13px/1 var(--f-body);padding:7px 12px;cursor:pointer;border-radius:999px}
.faces button:hover{box-shadow:2px 2px 0 var(--line)}
.faces button[aria-pressed="true"]{background:var(--ink);color:var(--on-ink)}

/* contact band: 潔米 leans on the desk in a slanted panel, waiting for you to say something */
.band{padding-block:clamp(64px,8vw,104px);min-height:340px;display:flex;align-items:center}
.band > .wrap{width:100%}
.band .wrap{padding-right:calc(var(--gutter) + min(40vw,520px))}
.band .call{position:absolute;right:0;top:0;bottom:0;width:min(44vw,600px);margin:0;border-left:var(--b) solid var(--on-ink);clip-path:polygon(14% 0,100% 0,100% 100%,0 100%);overflow:hidden;background:var(--cream,#f6efe2)}
.band .call img{width:100%;height:100%;object-fit:cover;object-position:78% 28%;display:block;transform:scale(1.04);transition:transform 1.2s cubic-bezier(.2,.8,.2,1)}
.band:hover .call img{transform:scale(1.08)}
.band .call::after{content:"先說說看?";position:absolute;left:22%;top:16%;background:#fff;color:#111214;border:2.5px solid #111214;border-radius:20px;padding:6px 14px;font:700 15px/1.4 var(--f-display);box-shadow:3px 3px 0 var(--spot)}
body.en .band .call::after{content:"Go on, tell me.";font-family:var(--f-latin)}

/* founder card: company facts */
.co{margin:14px 0 0;display:grid;grid-template-columns:auto minmax(0,1fr);gap:4px 14px;font-size:14px;border-top:1px dashed var(--tone);padding-top:12px}
.co dt{font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;color:var(--muted);padding-top:3px}
.co dd{margin:0;color:var(--ink-2)}

/* ---------- scroll reveal ---------- */
.rv{opacity:0;transform:translateY(24px);transition:opacity .6s ease,transform .6s cubic-bezier(.2,.8,.2,1)}
.rv.in{opacity:1;transform:none}

@media (max-width:960px){
  .stack{grid-template-columns:minmax(0,1fr)}
  .jemi{grid-template-columns:auto minmax(0,1fr)}
  .faces{grid-column:1 / -1;justify-content:flex-start;padding-bottom:14px}
}
@media (max-width:960px){
  .hx-panel{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
}
@media (max-width:760px){
  .hx{height:auto!important}
  .hx-pin{position:static;height:auto;overflow:visible;padding-top:clamp(56px,8vw,104px)}
  .hx-head .count,.hx-progress{display:none}
  .hx-track{width:auto;flex-direction:column;padding:8px var(--gutter) 56px;gap:20px;transform:none!important}
  .hx-panel{width:100%;height:auto;grid-template-columns:minmax(0,1fr)}
  .hx-panel:nth-child(n){transform:none}
  .hx-ui{border-right:0;border-bottom:var(--b) solid var(--line);padding:18px}
  .kv{min-height:calc(100svh - 56px);padding-bottom:200px}
  .kv .sfx{top:12px;font-size:34px;left:10px}
  .kv{padding-top:76px}
  .buddy img{height:150px}
  .buddy .say{font-size:13px;max-width:170px}
  .scroll-hint{display:none}
  .band{padding-top:0}
  .band .wrap{padding-right:var(--gutter);padding-top:28px}
  .band .call{position:relative;width:100%;height:auto;aspect-ratio:16/9;clip-path:polygon(0 0,100% 0,100% 92%,0 100%);border-left:0}
  .jemi .me{height:96px}
}
@media (prefers-reduced-motion:reduce){.pop,.fly img{opacity:1!important;transform:none!important}.rv{opacity:1!important;transform:none!important}.lines-ink .w{color:var(--ink)}.lines-ink .w.hot{color:var(--spot)}}
