@font-face{font-family:Alexandria Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/alexandria-arabic-wght-normal-BMWQQIfH.woff2) format("woff2-variations");unicode-range:U+0600-06FF,U+0750-077F,U+0870-088E,U+0890-0891,U+0897-08E1,U+08E3-08FF,U+200C-200E,U+2010-2011,U+204F,U+2E41,U+FB50-FDFF,U+FE70-FE74,U+FE76-FEFC,U+102E0-102FB,U+10E60-10E7E,U+10EC2-10EC4,U+10EFC-10EFF,U+1EE00-1EE03,U+1EE05-1EE1F,U+1EE21-1EE22,U+1EE24,U+1EE27,U+1EE29-1EE32,U+1EE34-1EE37,U+1EE39,U+1EE3B,U+1EE42,U+1EE47,U+1EE49,U+1EE4B,U+1EE4D-1EE4F,U+1EE51-1EE52,U+1EE54,U+1EE57,U+1EE59,U+1EE5B,U+1EE5D,U+1EE5F,U+1EE61-1EE62,U+1EE64,U+1EE67-1EE6A,U+1EE6C-1EE72,U+1EE74-1EE77,U+1EE79-1EE7C,U+1EE7E,U+1EE80-1EE89,U+1EE8B-1EE9B,U+1EEA1-1EEA3,U+1EEA5-1EEA9,U+1EEAB-1EEBB,U+1EEF0-1EEF1}@font-face{font-family:Alexandria Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/alexandria-vietnamese-wght-normal-DvU6pLYV.woff2) format("woff2-variations");unicode-range:U+0102-0103,U+0110-0111,U+0128-0129,U+0168-0169,U+01A0-01A1,U+01AF-01B0,U+0300-0301,U+0303-0304,U+0308-0309,U+0323,U+0329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Alexandria Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/alexandria-latin-ext-wght-normal-CJ9LaFMc.woff2) format("woff2-variations");unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Alexandria Variable;font-style:normal;font-display:swap;font-weight:100 900;src:url(/assets/alexandria-latin-wght-normal-9GNYQ01K.woff2) format("woff2-variations");unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}:root{--ground: #0b0b0c;--panel: #121214;--metal: #3a3a3e;--metal-hi: #5c5c62;--amber: #ffb020;--amber-dim: #5a3f0e;--amber-glow: rgb(255 176 32 / .35);--paper: #f4efe6;--paper-2: #b9b2a6;--signal: #ff4d3d;--font: "Alexandria Variable", "Noto Sans Arabic", sans-serif;--ease-out: cubic-bezier(.16, 1, .3, 1);--gutter: clamp(12px, 3vw, 24px);color-scheme:dark}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--ground);color:var(--paper);font-family:var(--font);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}::selection{background:var(--amber);color:var(--ground)}:focus-visible{outline:3px solid var(--amber);outline-offset:3px}.app{height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr) auto auto auto;gap:var(--gutter);padding:max(var(--gutter),env(safe-area-inset-top)) var(--gutter) max(var(--gutter),env(safe-area-inset-bottom));max-width:960px;margin-inline:auto}.bar-top{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;row-gap:10px}.modes,.guide-modes{display:flex;gap:8px;overflow-x:auto;scrollbar-width:none}.modes{flex-basis:100%}.guide-modes{margin-bottom:16px}.name{margin:0;font-size:1.25rem;font-weight:700;color:var(--amber)}.bar-end{display:flex;align-items:center;gap:14px}.head-btn{display:inline-flex;align-items:center;gap:6px;min-height:40px;padding:0 14px;border:0;border-radius:6px;background:transparent;color:var(--amber);font:inherit;font-size:.9375rem;font-weight:600;box-shadow:inset 0 0 0 1.5px var(--amber);cursor:pointer}.head-btn:hover{background:#ffb0201f}.head-btn svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.head-btn[hidden]{display:none}.fps{margin:0;font-size:.875rem;color:var(--paper-2);font-variant-numeric:tabular-nums}.stage-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:10px;min-height:0}.stage{position:relative;overflow:hidden;border-radius:6px;background:var(--panel);box-shadow:inset 0 0 0 1px var(--metal),0 1px 0 0 var(--metal-hi)}.stage video,.stage canvas{position:absolute;inset:0;width:100%;height:100%}.stage video{transform:scaleX(-1)}.stage video{object-fit:cover;filter:saturate(.75) brightness(.85)}.stage-idle{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:16px;padding:24px;text-align:center;color:var(--paper-2);font-size:1rem;line-height:1.7}.stage-idle p{margin:0;max-width:24ch}.idle-mark{width:72px;fill:none;stroke:var(--metal-hi);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.app[data-state=running] .stage-idle{display:none}.app[data-capturing] .stage{box-shadow:inset 0 0 0 2px var(--amber),0 0 18px var(--amber-glow)}.hand-meter{display:grid;grid-template-rows:minmax(0,1fr) auto;justify-items:center;gap:8px;width:28px}.segments{display:flex;flex-direction:column-reverse;gap:4px;width:12px;height:100%;max-height:240px;align-self:center}.segments i{flex:1;border-radius:2px;background:var(--amber-dim);opacity:.45;transition:background-color .16s var(--ease-out),opacity .16s var(--ease-out),box-shadow .16s var(--ease-out)}.hand-meter[data-on] .segments i{background:var(--amber);opacity:1;box-shadow:0 0 10px var(--amber-glow)}.hand-meter[data-on] .segments i:nth-child(2){transition-delay:30ms}.hand-meter[data-on] .segments i:nth-child(3){transition-delay:60ms}.hand-meter[data-on] .segments i:nth-child(4){transition-delay:90ms}.hand-meter[data-on] .segments i:nth-child(5){transition-delay:.12s}.hand-label{font-size:.75rem;color:var(--paper-2)}.hand-meter[data-on] .hand-label{color:var(--amber)}.board{background:#050505;border-radius:6px;padding:18px 20px 16px;box-shadow:inset 0 0 0 1px var(--metal),inset 0 2px 12px #000c,0 1px 0 0 var(--metal-hi);background-image:radial-gradient(rgb(255 255 255 / .035) 1px,transparent 1.2px);background-size:5px 5px}.board-head{display:flex;align-items:center;gap:14px}.board-line{display:block;flex:1;min-width:0;min-height:1.3em;font-size:clamp(2.25rem,9vw,4.5rem);font-weight:800;line-height:1.3;color:var(--amber);text-shadow:0 0 18px var(--amber-glow);perspective:600px;overflow:hidden;text-wrap:balance}.board-line[data-long]{font-size:clamp(1.5rem,6vw,2.75rem);line-height:1.45}.app[data-tone=error] .board-line{color:var(--signal);text-shadow:0 0 18px rgb(255 77 61 / .35)}.flap{display:inline-block;transform-origin:50% 0}.flap[data-in]{animation:flap-in .26s var(--ease-out)}@keyframes flap-in{0%{transform:rotateX(-80deg);opacity:.2;filter:brightness(1.8)}to{transform:none;opacity:1;filter:none}}.hold{height:4px;margin-top:10px;border-radius:2px;background:var(--amber-dim);overflow:hidden;opacity:0;transition:opacity .16s}.hold i{display:block;height:100%;background:var(--amber);box-shadow:0 0 8px var(--amber-glow);transform:scaleX(var(--p, 0));transform-origin:right}.app[data-holding] .hold{opacity:1}.board-sub{margin:6px 0 0;font-size:1rem;line-height:1.6;color:var(--paper-2);min-height:1.6em}.speaking{flex:none;width:40px;height:40px;fill:none;stroke:var(--amber-dim);stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;transition:stroke .16s var(--ease-out)}.speaking .cone{fill:currentColor;color:var(--amber-dim)}.app[data-speaking] .speaking{stroke:var(--amber);filter:drop-shadow(0 0 6px var(--amber-glow))}.app[data-speaking] .speaking .cone{color:var(--amber)}.app[data-speaking] .speaking .wave{animation:wave .9s var(--ease-out) infinite}.app[data-speaking] .speaking .w2{animation-delay:.18s}@keyframes wave{0%,to{opacity:1}50%{opacity:.25}}.choices{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}.choice{min-height:48px;padding:0 18px;border:0;border-radius:6px;background:transparent;color:var(--amber);font:inherit;font-size:1.125rem;font-weight:600;box-shadow:inset 0 0 0 1.5px var(--amber);cursor:pointer}.choice:hover{background:#ffb0201f}.choice-none{color:var(--paper-2);box-shadow:inset 0 0 0 1.5px var(--metal-hi)}.tray{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px}.tray-words{display:flex;flex-wrap:wrap;gap:6px;margin:0;padding:0;list-style:none;min-height:40px;align-items:center}.tray-words:empty:before{content:attr(data-empty);color:var(--paper-2);font-size:.9375rem}.tray-words li{padding:6px 12px;border-radius:4px;background:var(--panel);box-shadow:inset 0 0 0 1px var(--metal);font-size:1rem;font-weight:600}.tray-words li:last-child{color:var(--amber);box-shadow:inset 0 0 0 1px var(--amber-dim)}.tray-actions{display:flex;gap:8px}.tray-btn{display:inline-flex;align-items:center;gap:8px;min-height:48px;min-width:48px;justify-content:center;padding:0 14px;border:0;border-radius:6px;background:var(--panel);color:var(--paper);font:inherit;font-size:1rem;font-weight:600;box-shadow:inset 0 0 0 1px var(--metal-hi);cursor:pointer}.tray-btn svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.tray-speak:not(:disabled){color:var(--amber);box-shadow:inset 0 0 0 1.5px var(--amber)}.tray-btn:disabled{color:var(--metal-hi);cursor:default}.controls{display:grid;gap:10px}.go{display:flex;align-items:center;justify-content:center;gap:12px;min-height:64px;border:0;border-radius:6px;background:var(--amber);color:var(--ground);font:inherit;font-size:1.375rem;font-weight:700;cursor:pointer;box-shadow:0 2px #a8700a,0 6px 16px #00000073;transition:transform .12s var(--ease-out),box-shadow .12s var(--ease-out),background-color .16s var(--ease-out)}.go:hover{background:#ffc04d}.go:active{transform:translateY(2px);box-shadow:0 0 #a8700a,0 3px 8px #00000073}.go:disabled{background:var(--metal);color:var(--paper-2);box-shadow:none;cursor:progress}.go-icon{width:26px;height:26px;fill:currentColor}.go-icon-stop,.app[data-state=running] .go-icon-start{display:none}.app[data-state=running] .go-icon-stop{display:block}.app[data-state=running] .go{background:transparent;color:var(--amber);box-shadow:inset 0 0 0 2px var(--amber)}.privacy{display:flex;align-items:center;justify-content:center;gap:8px;margin:0;font-size:.875rem;color:var(--paper-2)}.privacy svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:2}.idle-guide{min-height:44px;padding:0 16px;border:0;border-radius:6px;background:transparent;color:var(--amber);font:inherit;font-size:1rem;font-weight:600;box-shadow:inset 0 0 0 1.5px var(--amber-dim);cursor:pointer}.idle-guide:hover{box-shadow:inset 0 0 0 1.5px var(--amber)}body.guide-open{overflow:hidden}.guide{position:fixed;inset:0;z-index:10;overflow-y:auto;overscroll-behavior:contain;background:var(--ground);padding:0 var(--gutter) max(var(--gutter),env(safe-area-inset-bottom));scrollbar-color:var(--metal) transparent}.guide-top{position:sticky;top:0;z-index:1;display:flex;align-items:center;gap:12px;margin:0 calc(var(--gutter) * -1);padding:max(12px,env(safe-area-inset-top)) var(--gutter) 12px;background:#0b0b0cf0;box-shadow:0 1px 0 0 var(--metal)}.guide-back{display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:6px;background:var(--panel);color:var(--paper);box-shadow:inset 0 0 0 1px var(--metal-hi);cursor:pointer}.guide-back svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}.guide-title{margin:0;font-size:1.375rem;font-weight:700;color:var(--amber)}.guide-count{margin-inline-start:auto;font-size:.875rem;color:var(--paper-2)}.guide-list,.sign-detail{max-width:1100px;margin:0 auto;padding-top:20px}.howto{padding:18px 20px;border-radius:6px;background:#050505;box-shadow:inset 0 0 0 1px var(--metal)}.howto h3{margin:0 0 10px;font-size:1.125rem;font-weight:700}.howto ol{display:grid;gap:8px;margin:0;padding-inline-start:1.4em;line-height:1.7;color:var(--paper-2);max-width:70ch}.howto li::marker{color:var(--amber);font-weight:700}.howto strong{color:var(--paper);font-weight:600}.howto-note{margin:14px 0 0;padding-top:12px;border-top:1px solid var(--metal);color:var(--amber);line-height:1.7;max-width:70ch}.guide-tools{display:grid;gap:12px;margin:24px 0 16px}.guide-search{display:flex;align-items:center;gap:10px;min-height:52px;padding:0 14px;border-radius:6px;background:var(--panel);box-shadow:inset 0 0 0 1px var(--metal-hi)}.guide-search:focus-within{box-shadow:inset 0 0 0 2px var(--amber)}.guide-search svg{width:20px;height:20px;flex:none;fill:none;stroke:var(--paper-2);stroke-width:2;stroke-linecap:round}.guide-search input{flex:1;min-width:0;border:0;outline:0;background:transparent;color:var(--paper);font:inherit;font-size:1.0625rem;caret-color:var(--amber)}.guide-search input::placeholder{color:#8f897f}.guide-cats{display:flex;gap:8px;overflow-x:auto;padding-bottom:4px;scrollbar-width:none}.cat{flex:none;min-height:40px;padding:0 14px;border:0;border-radius:999px;background:transparent;color:var(--paper-2);font:inherit;font-size:.9375rem;font-weight:600;box-shadow:inset 0 0 0 1px var(--metal-hi);cursor:pointer}.cat[aria-pressed=true]{background:var(--amber);color:var(--ground);box-shadow:none}.sign-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin:0;padding:0;list-style:none}.sign-tile{display:grid;width:100%;padding:0;border:0;border-radius:6px;overflow:hidden;background:#050505;color:var(--paper);font:inherit;text-align:center;box-shadow:inset 0 0 0 1px var(--metal);cursor:pointer;transition:box-shadow .16s var(--ease-out)}.sign-tile:hover,.sign-tile:focus-visible{box-shadow:inset 0 0 0 2px var(--amber)}.sign-tile canvas{width:100%;aspect-ratio:4 / 3;background-image:radial-gradient(rgb(255 255 255 / .035) 1px,transparent 1.2px);background-size:5px 5px}.sign-word{padding:10px 8px 12px;font-size:1.0625rem;font-weight:700;border-top:1px solid var(--metal)}.guide-empty{color:var(--paper-2);text-align:center;padding:32px 0}.sign-detail{display:grid;gap:20px}.detail-stage{position:relative;border-radius:6px;background:#050505;box-shadow:inset 0 0 0 1px var(--metal);background-image:radial-gradient(rgb(255 255 255 / .035) 1px,transparent 1.2px);background-size:5px 5px}.detail-stage canvas{display:block;width:100%;aspect-ratio:4 / 3;max-height:60dvh}.detail-side{position:absolute;bottom:10px;font-size:.8125rem;color:var(--paper-2)}.detail-side-right{right:12px;color:var(--amber)}.detail-side-left{left:12px}.detail-word{margin:0;font-size:clamp(2.5rem,10vw,4.5rem);font-weight:800;line-height:1.2;color:var(--amber);text-shadow:0 0 18px var(--amber-glow)}.detail-cat{margin:4px 0 0;color:var(--paper-2)}.detail-example{margin:14px 0 0;font-size:1.125rem;line-height:1.7}.detail-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}.detail-try{flex:1 1 100%}.detail-actions .tray-btn[aria-pressed=true]{color:var(--ground);background:var(--amber);box-shadow:none}.detail-hint{margin:14px 0 0;font-size:.9375rem;color:var(--paper-2)}@media(min-width:900px){.sign-detail{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);align-items:start}}@media(min-width:900px)and (min-aspect-ratio:4/3){.app{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);grid-template-rows:auto minmax(0,1fr) auto auto;max-width:1280px}.bar-top{grid-column:1 / -1}.stage-row{grid-row:2 / 5}.board{display:flex;flex-direction:column;justify-content:center;padding:32px}.board-line{font-size:clamp(3rem,5.5vw,6rem)}.controls{align-self:end}}@media(prefers-reduced-motion:reduce){.flap[data-in],.app[data-speaking] .speaking .wave{animation:none}.segments i,.go{transition:none}}.guide-panel[hidden]{display:none}.gesture-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,300px),1fr));gap:10px;margin:20px 0 0;padding:0;list-style:none}.gesture{display:flex;gap:16px;align-items:flex-start;padding:16px;border-radius:6px;background:#050505;box-shadow:inset 0 0 0 1px var(--metal)}.gesture-emoji{flex:none;display:grid;place-items:center;width:72px;height:72px;border-radius:6px;background:var(--panel);font-size:2.75rem;line-height:1}.gesture-body{flex:1;min-width:0}.gesture-phrase{margin:0;font-size:1.5rem;font-weight:800;color:var(--amber)}.gesture-how{margin:4px 0 10px;color:var(--paper-2);line-height:1.6}.gesture-tools,.gesture-edit{display:flex;flex-wrap:wrap;gap:8px}.gesture-edit input,.own-form input{flex:1 1 140px;min-width:0;min-height:44px;padding:0 12px;border:0;border-radius:6px;background:var(--panel);color:var(--paper);font:inherit;font-size:1.0625rem;box-shadow:inset 0 0 0 1px var(--metal-hi);caret-color:var(--amber)}.gesture-edit input:focus,.own-form input:focus{outline:0;box-shadow:inset 0 0 0 2px var(--amber)}.own{margin-top:28px;padding:18px 20px;border-radius:6px;background:#050505;box-shadow:inset 0 0 0 1px var(--metal)}.own h3{margin:0;font-size:1.125rem;font-weight:700}.own-hint{margin:6px 0 14px;color:var(--paper-2);line-height:1.6}.own-form{display:flex;flex-wrap:wrap;gap:10px}.own-record{min-height:48px;padding:0 22px;font-size:1.125rem}.own-list{display:grid;gap:8px;margin:14px 0 0;padding:0;list-style:none}.own-list:empty{display:none}.own-item{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:6px;background:var(--panel)}.own-name{flex:1;min-width:0;font-size:1.125rem;font-weight:700;color:var(--amber)}.letter-grid{margin-top:20px;grid-template-columns:repeat(auto-fill,minmax(110px,1fr))}.letter-grid img{display:block;width:100%;aspect-ratio:3 / 4;object-fit:cover;filter:grayscale(1) brightness(.92) contrast(1.05)}.letter-word{font-size:1.75rem;font-weight:800;color:var(--amber)}.credit{color:#8f897f}.credit:before{content:"·";margin-inline-end:8px}
