@font-face{font-family:YAGhHqQeYWg_0;src:url(fonts/LINESeedSans-THIN.woff) format('woff');font-weight:100 299;font-display:block}
@font-face{font-family:YAGhHqQeYWg_0;src:url(fonts/LINESeedSans-REGULAR.woff) format('woff');font-weight:300 599;font-display:block}
@font-face{font-family:YAGhHqQeYWg_0;src:url(fonts/LINESeedSans-BOLD.woff) format('woff');font-weight:600 749;font-display:block}
@font-face{font-family:YAGhHqQeYWg_0;src:url(fonts/LINESeedSans-ULTRA_BOLD.woff) format('woff');font-weight:750 849;font-display:block}
@font-face{font-family:YAGhHqQeYWg_0;src:url(fonts/LINESeedSans-HEAVY.woff) format('woff');font-weight:850 1000;font-display:block}
@font-face{font-family:YAGhHumixAc_0;src:url(fonts/LINESeedSansTH-THIN.woff) format('woff');font-weight:100 299;font-display:block}
@font-face{font-family:YAGhHumixAc_0;src:url(fonts/LINESeedSansTH-REGULAR.woff) format('woff');font-weight:300 599;font-display:block}
@font-face{font-family:YAGhHumixAc_0;src:url(fonts/LINESeedSansTH-BOLD.woff) format('woff');font-weight:600 749;font-display:block}
@font-face{font-family:YAGhHumixAc_0;src:url(fonts/LINESeedSansTH-ULTRA_BOLD.woff) format('woff');font-weight:750 849;font-display:block}
@font-face{font-family:YAGhHumixAc_0;src:url(fonts/LINESeedSansTH-HEAVY.woff) format('woff');font-weight:850 1000;font-display:block}
@font-face{font-family:YACkoNvcDv8_0;src:url(fonts/Garuda-REGULAR.woff2) format('woff2');font-weight:400;font-display:block}
@font-face{font-family:YACkoNvcDv8_0;src:url(fonts/Garuda-BOLD.woff2) format('woff2');font-weight:700;font-display:block}

:root{--sc:1;--sw:100vw;--sh:56.25vw;color-scheme:dark}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:#000;color:#fff;font-family:YAGhHqQeYWg_0,YAGhHumixAc_0,system-ui,sans-serif}
body[data-mode=deck]{overflow:hidden;overscroll-behavior:none}
#deck{position:relative}
body[data-mode=deck] #deck{position:fixed;inset:0}
.slide{position:absolute;inset:0;display:grid;place-items:center;overflow:hidden;visibility:hidden}
.slide.active{visibility:visible}
body[data-mode=scroll] .slide{position:relative;inset:auto;height:var(--sh);visibility:visible;border-bottom:1px solid #111}
.stage{position:relative;flex:none;overflow:hidden;transform:scale(var(--sc));transform-origin:50% 50%}
body[data-mode=scroll] .stage{position:absolute;left:0;top:0;transform-origin:0 0}
body[data-mode=deck] .stage{position:absolute;left:50%;top:50%;margin-left:calc(var(--sw) / -2);margin-top:calc(var(--sh) / -2);transform-origin:0 0}
.el{position:absolute;transform-origin:50% 50%}
.an{position:absolute;inset:0;transform-origin:50% 50%}
.clip{position:absolute;inset:0;overflow:hidden}
.fill{position:absolute;inset:0}
.bd{position:absolute;inset:0;pointer-events:none}
.media{position:absolute;max-width:none;object-fit:fill;display:block;user-select:none;-webkit-user-drag:none}
video.media{object-fit:cover}
.txt{position:absolute;left:0;top:0;transform-origin:0 0}
.txti{white-space:pre-wrap;word-wrap:break-word}
.para{margin:0}
.shape{position:absolute;inset:0}
.shape>svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.mfill{position:absolute;left:0;top:0;transform-origin:0 0;overflow:hidden}
.grp{position:absolute;left:0;top:0;transform-origin:0 0}
.line .an svg{overflow:visible}

/* UI */
#ui{position:fixed;left:0;right:0;bottom:0;z-index:20;pointer-events:none;padding:0 max(16px,env(safe-area-inset-right)) max(14px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}
#progress{position:fixed;left:0;right:0;top:0;height:2px;background:rgba(255,255,255,.08);z-index:21}
#bar{display:block;height:100%;background:linear-gradient(90deg,#4ddec5,#8100f4);transform-origin:0 50%;transform:scaleX(0);transition:transform .6s cubic-bezier(.2,.7,.2,1)}
#ctrl{display:flex;gap:6px;align-items:center;justify-content:flex-end;opacity:.35;transition:opacity .3s}
#ctrl:hover,body:not(.ready) #ctrl{opacity:1}
#ctrl button{pointer-events:auto;width:38px;height:38px;border-radius:50%;border:1px solid rgba(255,255,255,.25);background:rgba(0,0,0,.45);backdrop-filter:blur(8px);display:grid;place-items:center;cursor:pointer;color:#fff}
#ctrl button:focus-visible{outline:2px solid #4ddec5;outline-offset:2px}
#ctrl svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
#gridbtn svg{fill:currentColor;stroke:none}
#count{pointer-events:auto;font:600 13px/1 YAGhHqQeYWg_0,system-ui;letter-spacing:.14em;padding:0 8px;font-variant-numeric:tabular-nums}
body[data-mode=scroll] #prev,body[data-mode=scroll] #next{display:none}
#grid{position:fixed;inset:0;z-index:30;background:rgba(0,0,0,.92);backdrop-filter:blur(14px);overflow:auto;opacity:0;pointer-events:none;transition:opacity .35s;padding:64px max(16px,env(safe-area-inset-right)) 40px max(16px,env(safe-area-inset-left))}
#grid.open{opacity:1;pointer-events:auto}
#grid .cells{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px;max-width:1600px;margin:0 auto}
#grid .cell{position:relative;aspect-ratio:16/9;border:1px solid rgba(255,255,255,.14);border-radius:10px;overflow:hidden;background:#111;padding:0;cursor:pointer;transition:transform .25s,border-color .25s}
#grid .cell:hover,#grid .cell:focus-visible{transform:translateY(-3px);border-color:#4ddec5;outline:none}
#grid .cell img{width:100%;height:100%;object-fit:cover;display:block}
#grid .cell span{position:absolute;left:8px;bottom:6px;font:700 12px YAGhHqQeYWg_0,system-ui;letter-spacing:.1em;text-shadow:0 1px 6px #000}
#gridclose{position:fixed;top:14px;right:max(16px,env(safe-area-inset-right));width:42px;height:42px;border-radius:50%;border:1px solid rgba(255,255,255,.3);background:#000;color:#fff;font-size:24px;cursor:pointer;z-index:31}
@media (prefers-reduced-motion:reduce){#bar{transition:none}}
.fx{position:absolute;inset:0;transform-origin:50% 50%}
body[data-mode=scroll] .slide:not(.active) .stage{visibility:visible}
.bd{-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask:linear-gradient(#000 0 0) content-box exclude,linear-gradient(#000 0 0)}
.bgl{position:absolute;inset:0}
.slide.active{z-index:1}.slide.incoming{z-index:2}
#playbtn .i-pause{display:none}#playbtn[aria-pressed=true] .i-play{display:none}#playbtn[aria-pressed=true] .i-pause{display:block}#playbtn svg{fill:currentColor;stroke:none}
body[data-mode=scroll] #playbtn{display:none}
body[data-mode=deck]{cursor:grab;user-select:none;-webkit-user-select:none}body[data-mode=deck]:active{cursor:grabbing}
.edge{position:fixed;top:0;bottom:0;width:20vw;z-index:5}

/* responsive: every screen is the deck; the 16:9 stage is contained, a blurred copy of the slide fills the rest */
html,body{height:100%;height:100dvh}
body[data-mode=deck] #deck{position:fixed;inset:0;touch-action:none}
.backdrop{position:absolute;inset:-60px;background-size:cover;background-position:center;filter:blur(40px) brightness(.55) saturate(1.2);transform:scale(1.1)}
.slide{background:#000}
body[data-orient=portrait] #ui{padding-bottom:max(22px,env(safe-area-inset-bottom))}
body[data-orient=portrait] #ctrl{justify-content:center;opacity:.9}
body[data-orient=portrait] #prev,body[data-orient=portrait] #next{display:grid}
#hint{position:fixed;left:50%;top:calc(50% + var(--sh) / 2 + 28px);transform:translateX(-50%);z-index:22;display:none;align-items:center;gap:10px;padding:10px 16px;border-radius:99px;background:rgba(0,0,0,.55);backdrop-filter:blur(8px);border:1px solid rgba(255,255,255,.15);font:500 13px YAGhHqQeYWg_0,YAGhHumixAc_0,system-ui;color:#fff;white-space:nowrap;transition:opacity .6s}
#hint svg{width:20px;height:20px;fill:none;stroke:#fff;stroke-width:1.8;animation:rot 2.4s ease-in-out infinite}
@keyframes rot{0%,30%{transform:rotate(0)}60%,100%{transform:rotate(-90deg)}}
body[data-orient=portrait] #hint{display:flex}
#hint.gone{opacity:0;pointer-events:none}
@media (pointer:coarse){#ctrl{opacity:.85}#ctrl button{width:44px;height:44px}}
