*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden;background:#000;color:#f7f7f5;font-family:Pretendard,-apple-system,sans-serif}.deck{position:fixed;inset:0}.slide{position:absolute;inset:0;padding:7vh 7vw;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;opacity:0;visibility:hidden;transform:scale(1.05);transition:opacity .7s,transform 1s,visibility 0s .7s}.slide.active{opacity:1;visibility:visible;transform:none}.slide.past{transform:scale(.96)}.b{opacity:0;transform:translateY(25px);transition:.7s cubic-bezier(.2,.8,.2,1)}.active .b{opacity:1;transform:none}.active .b:nth-child(2){transition-delay:.14s}.active .b:nth-child(3){transition-delay:.28s}.active .b:nth-child(4){transition-delay:.42s}.active .b:nth-child(5){transition-delay:.56s}.brand,.num{position:fixed;z-index:9;font-size:11px;font-weight:850;color:#6a6a6a}.brand{letter-spacing:.2em}.tl{top:22px;left:28px}.bl{bottom:22px;left:28px}.num{right:28px;bottom:22px}.k{font-size:13px;letter-spacing:.24em;text-transform:uppercase;color:#777;font-weight:850;margin-bottom:25px}.ko,.en{display:block}.title{font-size:clamp(48px,7.3vw,106px);line-height:.97;letter-spacing:-.055em;font-weight:900;max-width:17ch}.title.wide{font-size:clamp(40px,5.8vw,84px);max-width:21ch}.subtitle{font-size:clamp(20px,2.15vw,32px);line-height:1.35;color:#aaa;max-width:39em;margin-top:22px}.yellow{color:#ffd51f}.red{color:#ff5148}.muted{color:#5f5f5f}.url{font:750 clamp(17px,1.75vw,26px)/1.4 ui-monospace,monospace;color:#ffd51f}.cover{padding:0;background:#f6f4ed}.cover>img{width:100%;height:100%;object-fit:contain}.cover-copy{position:absolute;left:4.5vw;top:4.5vh;color:#000;text-align:left;background:rgba(247,245,238,.94);padding:18px 22px;border-left:8px solid #000}.cover-copy strong{font-size:clamp(22px,2.7vw,42px);letter-spacing:-.04em}.cover-copy p{font-weight:750;line-height:1.35;margin:8px 0 0}.photos{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;width:min(1240px,94vw);margin-top:30px}.photo{height:340px;position:relative;border:1px solid #333;background:linear-gradient(135deg,#191919,#050505);display:flex;align-items:center;justify-content:center}.photo img{width:100%;height:100%;object-fit:cover}.city{position:absolute;left:17px;bottom:14px;font-size:28px;font-weight:900}.placeholder{color:#555;font-size:13px;letter-spacing:.12em}.quote{font-size:clamp(27px,4vw,60px);line-height:1.12;max-width:21ch;font-weight:880;margin-top:28px}.rules{width:min(1150px,94vw);text-align:left;margin-top:25px}.rule{display:grid;grid-template-columns:145px 1fr;gap:25px;padding:14px 0;border-top:1px solid #303030}.rule time{font-size:clamp(25px,3.1vw,44px);font-weight:900}.rule div{font-size:clamp(16px,1.55vw,23px);line-height:1.35}.rule small{display:block;color:#777;font-size:13px;margin-top:4px}.stages{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:30px;width:min(1120px,92vw);margin-top:34px;text-align:left}.stage{border-top:2px solid #333;padding-top:18px}.stage b{font-size:clamp(28px,3.7vw,54px)}.stage p{font-size:clamp(16px,1.55vw,23px);line-height:1.4;color:#888}.arrow{font-size:48px;color:#ffd51f}.hero{font-size:clamp(54px,9vw,132px);font-weight:950;line-height:.9;letter-spacing:-.065em}.claim{font-size:clamp(23px,2.8vw,44px);font-weight:850;margin-top:28px}.contract{width:min(1250px,95vw);text-align:left;background:#0b0b0b;border:1px solid #292929;border-radius:18px;padding:24px 28px;font:600 clamp(13px,1.42vw,21px)/1.48 ui-monospace,monospace}.contract mark,.example mark{background:none;color:#ffd51f}.example{margin-top:14px;border-left:4px solid #ffd51f;padding:13px 18px;color:#b7b7b7;font:550 clamp(12px,1.12vw,17px)/1.46 ui-monospace,monospace;text-align:left;width:min(1250px,95vw)}.legend{display:flex;gap:20px;width:min(1250px,95vw);margin-top:10px;color:#777;font:650 11px/1.3 ui-monospace,monospace}.legend b{color:#ffd51f}.cards{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;width:min(1180px,92vw);margin-top:32px;text-align:left}.card{border-top:2px solid #333;padding:17px 4px}.card b{font-size:clamp(23px,2.5vw,38px)}.card p{font-size:clamp(15px,1.4vw,21px);line-height:1.4;color:#888}.demo{border:1px solid #333;border-radius:24px;width:min(1100px,92vw);height:390px;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(circle at 50% 40%,#171717,#050505);margin-top:28px}.demo-label{font-size:12px;letter-spacing:.24em;color:#666;font-weight:850}.demo-title{font-size:clamp(37px,5vw,74px);font-weight:920;margin:16px 0}.cta{margin-top:24px;padding:15px 26px;border-radius:999px;background:#f7f7f5;color:#000;font-weight:900;font-size:18px}.repo-demo{display:grid;grid-template-columns:1.15fr .85fr;gap:34px;width:min(1180px,93vw);margin-top:28px;text-align:left}.repo-guide{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.repo-guide .card{padding-right:10px}.repo-card{border:1px solid #333;border-radius:22px;padding:30px;background:radial-gradient(circle at 50% 20%,#171717,#050505);display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}.repo-card strong{font-size:clamp(28px,3.3vw,48px)}
body[data-mode=ko] .en{display:none}body[data-mode=en] .ko{display:none}body[data-mode=bi] .title.ko,body[data-mode=bi] .title.en{font-size:clamp(32px,4.15vw,60px);line-height:1.02;max-width:24ch}body[data-mode=bi] .title.en{margin-top:12px;color:#dedede}body[data-mode=bi] .subtitle.ko,body[data-mode=bi] .subtitle.en{font-size:clamp(17px,1.65vw,24px);margin-top:13px;color:#999}body[data-mode=bi] .quote.ko,body[data-mode=bi] .quote.en{font-size:clamp(23px,2.8vw,42px);max-width:31ch;margin-top:15px}body[data-mode=bi] .stage p .en,body[data-mode=bi] .card p .en{margin-top:8px;color:#aaa}body[data-mode=bi] .cover-copy .en{margin-top:6px}body[data-mode=en] .title{max-width:19ch}body[data-mode=en] .subtitle{max-width:44em}

/* Iteration 2: keep the official poster intact and give the talk metadata its own panel. */
.cover{padding:0;background-color:#f6f4ed;background-image:url('assets/ralphthon-icml-official-cover.png');background-repeat:no-repeat;background-size:58% auto;background-position:left center;align-items:flex-start}.cover>img{visibility:hidden;width:58%;height:100%;object-fit:contain}.cover-copy{position:absolute;left:auto;right:0;top:0;width:42%;height:100%;color:#f7f7f5;text-align:left;background:#000;padding:10vh 5vw;display:flex;flex-direction:column;justify-content:center;border:0;border-left:1px solid #222}.cover-copy strong{font-size:clamp(34px,4.2vw,64px);line-height:.98;letter-spacing:-.05em}.cover-copy p{font-size:clamp(17px,1.5vw,23px);font-weight:700;line-height:1.45;margin:24px 0 0;color:#aaa}body[data-mode=bi] .cover-copy strong.ko,body[data-mode=bi] .cover-copy strong.en{font-size:clamp(27px,2.8vw,43px)}body[data-mode=bi] .cover-copy strong.en{margin-top:12px;color:#ffd51f}body[data-mode=bi] .cover-copy p{font-size:clamp(14px,1.15vw,18px);margin-top:16px}

.criteria{display:grid;grid-template-columns:1fr 1fr;gap:26px;width:min(1240px,94vw);margin-top:28px;text-align:left}.criterion{border:1px solid #303030;border-radius:20px;padding:26px;background:#080808}.criterion .track{font-size:12px;letter-spacing:.2em;color:#777;font-weight:850}.criterion h2{font-size:clamp(22px,2.4vw,36px);line-height:1.15;margin:13px 0 17px}.criterion p{font-size:clamp(14px,1.25vw,19px);line-height:1.45;color:#8d8d8d;margin:18px 0 0}.axis{display:grid;grid-template-columns:1fr 1fr;gap:8px}.axis span{border-top:1px solid #333;padding:9px 0;font-size:clamp(16px,1.5vw,22px);font-weight:800}.mix{display:grid;grid-template-columns:1fr auto 1fr;gap:15px;align-items:center;text-align:center;margin-top:25px}.mix strong{font-size:clamp(18px,1.7vw,26px);line-height:1.2}.mix span{font-size:32px;color:#ffd51f}.skill-link{margin-top:18px;color:#ffd51f;font:750 clamp(15px,1.45vw,21px)/1.3 ui-monospace,monospace}.now-flow{display:flex;gap:18px;align-items:center;margin-top:30px;font-size:clamp(23px,2.8vw,42px);font-weight:900}.now-flow span:nth-child(even){color:#555}.first-submit{width:min(1050px,90vw);display:grid;grid-template-columns:1.1fr .9fr;gap:28px;align-items:center;text-align:left;border-top:1px solid #333;border-bottom:1px solid #333;padding:20px 0;margin-top:26px}.first-submit small{display:block;color:#777;font-size:14px;font-weight:700}.first-submit strong{display:block;font-size:clamp(25px,3vw,45px);margin-top:5px}.first-submit p{font-size:clamp(16px,1.55vw,23px);line-height:1.35;color:#aaa;margin:0}.closing{font-size:clamp(18px,1.8vw,27px);font-weight:750;margin-top:24px;color:#ddd}body[data-mode=bi] .criteria{margin-top:20px;gap:18px}body[data-mode=bi] .criterion{padding:20px}body[data-mode=bi] .criterion h2{font-size:clamp(18px,1.75vw,26px);margin:10px 0}body[data-mode=bi] .criterion p{font-size:clamp(12px,1vw,15px);margin-top:10px}body[data-mode=bi] .mix{margin-top:13px}body[data-mode=bi] .mix strong{font-size:clamp(14px,1.2vw,18px)}body[data-mode=bi] .first-submit p.ko,body[data-mode=bi] .first-submit p.en{font-size:clamp(14px,1.2vw,18px);margin:3px 0}body[data-mode=bi] .closing.ko,body[data-mode=bi] .closing.en{font-size:clamp(15px,1.35vw,20px);margin-top:8px}

/* Use the original city photos as CSS backgrounds to avoid large-JPEG decode artifacts. */
.photo{background-repeat:no-repeat;background-size:cover;background-position:center}.photo:nth-child(1){background-image:url('assets/ralphthon-seoul.jpeg')}.photo:nth-child(2){background-image:url('assets/ralphthon-sf.jpeg')}.photo:nth-child(3){background-image:url('assets/ralphthon-singapore.jpeg')}.photo>img{visibility:hidden}
.page-limit{display:inline-block;margin-top:9px;padding:6px 9px;border:1px solid #5a4c00;border-radius:999px;color:#ffd51f;font:800 clamp(10px,.9vw,13px)/1.1 ui-monospace,monospace;letter-spacing:.04em}
