.game-mobile-block{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;min-height:300px;padding:2.5rem 1.75rem;text-align:center;border-radius:14px;border:1px solid var(--border);background:#0e0e1ce0}.game-mobile-block__icon{font-size:2rem;line-height:1;opacity:.85}.game-mobile-block__title{margin:0;font-size:1.15rem;font-weight:700;letter-spacing:.04em;color:var(--text)}.game-mobile-block__desc{margin:0;max-width:28rem;font-size:.88rem;line-height:1.55;color:var(--text-muted)}.game-outer{width:100%}.game-scaler{position:relative;width:100%}.game-world{position:relative;overflow:hidden;border-radius:14px;border:1px solid var(--border);background:#0a0818;-webkit-user-select:none;user-select:none}.game-layer{position:absolute;top:0;left:0;height:100%;will-change:transform}.game-bg{position:absolute;top:0;left:0;height:100%;background-repeat:repeat-x;background-size:auto 100%;background-position:left bottom;pointer-events:none}.knight-pos{position:absolute;left:0;z-index:10;will-change:transform,filter;pointer-events:none}.knight-pos--hurt{filter:brightness(1.25) sepia(.45) saturate(5) hue-rotate(310deg)}.knight-flip{will-change:transform}.hit-burst{position:absolute;z-index:6;width:32px;height:32px;margin:-16px 0 0 -16px;border-radius:50%;background:radial-gradient(circle,rgb(255 230 120 / 85%) 0%,rgb(255 180 60 / 35%) 45%,transparent 72%);pointer-events:none;animation:hit-burst-pop .26s ease-out forwards}@keyframes hit-burst-pop{0%{transform:scale(.25);opacity:1}to{transform:scale(1.7);opacity:0}}.hit-spark{position:absolute;z-index:6;margin:-2px 0 0 -2px;pointer-events:none;animation:hit-spark-fly var(--dur, .4s) ease-out forwards}.hit-spark--shard{width:7px;height:3px;border-radius:1px}.hit-spark--dot{width:5px;height:5px;border-radius:50%}@keyframes hit-spark-fly{0%{transform:translate(0) rotate(var(--rot, 0deg));opacity:1}to{transform:translate(var(--dx, 0),var(--dy, 0)) rotate(calc(var(--rot, 0deg) + 120deg));opacity:0}}.enemy-pos{position:absolute;left:0;z-index:4;width:96px;height:96px;pointer-events:none;will-change:transform,filter,opacity}.enemy-flip{will-change:transform}.enemy-pos--hurt{animation:enemy-hurt-flash .24s ease-out}@keyframes enemy-hurt-flash{0%,to{filter:none}20%,60%{filter:brightness(1.3) sepia(.5) saturate(6) hue-rotate(310deg)}40%,80%{filter:none}}.enemy-pos--dying{animation:enemy-death-fade .48s ease-out forwards;pointer-events:none}@keyframes enemy-death-fade{0%{opacity:1;filter:brightness(1.6) saturate(1.5)}40%{opacity:.85;filter:brightness(2) saturate(.4)}to{opacity:0;filter:brightness(2.5) saturate(0)}}.enemy-hp-bar{position:absolute;top:-8px;left:50%;width:28px;height:4px;margin-left:-14px;border-radius:2px;background:#0000007f;box-shadow:inset 0 0 0 1px #ffffff1a;overflow:hidden}.enemy-hp-bar:after{content:"";display:block;height:100%;border-radius:2px;background:#e8d820;width:calc(100% * var(--hp-ratio, 1))}.enemy-pos--tough .enemy-hp-bar:after{background:#ffb347}.enemy-pos--elite .enemy-hp-bar:after{background:#ff6b4a}.enemy-hp-bar[data-max-hp="2"][data-hp="2"]{--hp-ratio: 1}.enemy-hp-bar[data-max-hp="2"][data-hp="1"]{--hp-ratio: .5}.enemy-hp-bar[data-max-hp="3"][data-hp="3"]{--hp-ratio: 1}.enemy-hp-bar[data-max-hp="3"][data-hp="2"]{--hp-ratio: .66}.enemy-hp-bar[data-max-hp="3"][data-hp="1"]{--hp-ratio: .33}.enemy-hp-bar[data-max-hp="4"][data-hp="4"]{--hp-ratio: 1}.enemy-hp-bar[data-max-hp="4"][data-hp="3"]{--hp-ratio: .75}.enemy-hp-bar[data-max-hp="4"][data-hp="2"]{--hp-ratio: .5}.enemy-hp-bar[data-max-hp="4"][data-hp="1"]{--hp-ratio: .25}.death-ring{position:absolute;z-index:7;width:48px;height:48px;margin:-24px 0 0 -24px;border:2px solid rgb(196 181 253 / 70%);border-radius:50%;pointer-events:none;animation:death-ring-expand .42s ease-out forwards}@keyframes death-ring-expand{0%{transform:scale(calc(.3 * var(--death-scale, 1)));opacity:1}to{transform:scale(calc(2.2 * var(--death-scale, 1)));opacity:0}}.death-puff{position:absolute;z-index:6;width:40px;height:40px;margin:-20px 0 0 -20px;border-radius:50%;background:radial-gradient(circle,rgb(139 92 246 / 55%) 0%,transparent 70%);pointer-events:none;animation:death-puff-pop .38s ease-out forwards}@keyframes death-puff-pop{0%{transform:scale(.4);opacity:1}to{transform:scale(2);opacity:0}}.death-shard{position:absolute;z-index:7;width:6px;height:6px;margin:-3px 0 0 -3px;border-radius:1px;pointer-events:none;animation:death-shard-fly .52s ease-out forwards}@keyframes death-shard-fly{0%{transform:translate(0) rotate(var(--rot, 0deg));opacity:1}to{transform:translate(var(--dx, 0),var(--dy, 0)) rotate(calc(var(--rot, 0deg) + 180deg));opacity:0}}.game-heart-pickup{z-index:8;pointer-events:none;color:#e85050;font-size:22px;line-height:1;text-align:center;text-shadow:0 0 10px rgb(232 80 80 / 70%),0 2px 4px rgb(0 0 0 / 35%);animation:heart-pickup-pulse .9s ease-in-out infinite}.game-heart-pickup:before{content:"♥";display:block}@keyframes heart-pickup-pulse{0%,to{filter:brightness(1)}50%{filter:brightness(1.2)}}.game-hud{position:absolute;top:12px;left:0;right:0;display:flex;justify-content:space-between;align-items:center;padding:0 16px;pointer-events:none}.game-hearts{display:flex;gap:4px}.heart{font-size:1.1rem;line-height:1;transition:opacity .2s}.heart--full{color:#e05050;text-shadow:0 0 8px rgb(224 80 80 / 60%)}.heart--empty{color:#3a2a2a}.game-score-display{font-size:1rem;font-weight:700;letter-spacing:.1em;color:#fff;font-family:var(--font-mono);text-shadow:0 1px 4px rgb(0 0 0 / 65%)}.game-overlay{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:#04030fbf;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:12px}.game-overlay__box{display:flex;flex-direction:column;align-items:center;gap:.6rem;padding:2rem 2.5rem;background:#0e0e1ce5;border:1px solid var(--border);border-radius:16px;text-align:center}.game-overlay__title{margin:0;font-size:1.5rem;font-weight:800;letter-spacing:.08em;color:var(--text)}.game-overlay__score{margin:0;font-size:1rem;color:var(--accent-soft);font-family:var(--font-mono)}.game-overlay__desc{margin:0;font-size:.82rem;color:var(--text-dim)}.game-overlay__btn{margin-top:.5rem;padding:.6rem 1.75rem;border:none;border-radius:999px;background:linear-gradient(135deg,var(--accent) 0%,#6366f1 100%);color:#fff;font-family:inherit;font-size:.9rem;font-weight:600;cursor:pointer;transition:transform .15s,box-shadow .15s}.game-overlay__btn:hover{transform:translateY(-1px);box-shadow:0 4px 16px var(--accent-glow)}.game-overlay__hint{margin:0;font-size:.72rem;color:var(--text-dim);letter-spacing:.04em;font-family:var(--font-mono)}.game-touch{display:none;justify-content:space-between;align-items:center;margin-top:.75rem;padding:0 .25rem}@media(hover:none)and (pointer:coarse){.game-touch{display:flex}}.game-touch__dpad{display:flex;gap:.5rem}.game-touch__btn{width:56px;height:56px;border:1px solid var(--border);border-radius:12px;background:#ffffff0d;color:var(--text);font-size:1.2rem;display:flex;align-items:center;justify-content:center;cursor:pointer;touch-action:none;transition:background .1s}.game-touch__btn:active{background:#8b7cf833}.game-touch__atk{width:64px;height:64px;border-radius:50%;background:#8b7cf81f;border-color:#8b7cf840;font-size:1.4rem}.game-touch__atk:active{background:#8b7cf84d}.game-section{margin-top:2rem;background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:1.5rem}.game-section h2{margin:0 0 1.25rem;font-size:1.1rem}.use-cases-nav{display:flex;flex-wrap:wrap;gap:.5rem;margin:1.5rem 0 0;padding:.35rem;border-radius:999px;background:#ffffff0a;border:1px solid var(--border);width:fit-content;max-width:100%}.use-cases-nav__tab{padding:.55rem 1.1rem;border:none;border-radius:999px;font-family:inherit;font-size:.82rem;font-weight:600;color:var(--text-muted);background:transparent;cursor:pointer;transition:color .15s,background .15s;white-space:nowrap}.use-cases-nav__tab:hover{color:var(--text)}.use-cases-nav__tab.is-active{color:#fff;background:linear-gradient(135deg,var(--accent) 0%,#6366f1 100%);box-shadow:0 4px 16px var(--accent-glow)}.use-case-header{margin-top:2rem}.use-case-header__title{margin:0 0 .75rem;font-size:clamp(1.35rem,3vw,1.75rem);font-weight:700;letter-spacing:-.02em}.use-case-header__desc{margin:0;color:var(--text-muted);line-height:1.65}@media(max-width:640px){.use-cases-nav{width:100%;border-radius:14px}.use-cases-nav__tab{flex:1 1 auto;text-align:center;white-space:normal;font-size:.78rem;padding:.5rem .65rem}}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-Thin.woff2) format("woff2");font-weight:100;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-ExtraLight.woff2) format("woff2");font-weight:200;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-Light.woff2) format("woff2");font-weight:300;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-Regular.woff2) format("woff2");font-weight:400;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-Medium.woff2) format("woff2");font-weight:500;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-SemiBold.woff2) format("woff2");font-weight:600;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-Bold.woff2) format("woff2");font-weight:700;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-ExtraBold.woff2) format("woff2");font-weight:800;font-display:swap}@font-face{font-family:Pretendard;src:url(https://cdn.jsdelivr.net/gh/projectnoonnu/pretendard@1.0/Pretendard-Black.woff2) format("woff2");font-weight:900;font-display:swap}:root{--font-sans: "Pretendard", -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Fira Sans", "Droid Sans", "Helvetica Neue", sans-serif;--font-mono: "Fira Code", "Courier New", monospace}.site-header{position:fixed;top:0;left:0;right:0;z-index:100;background:#050508b8;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border)}.site-header__inner{display:flex;align-items:center;justify-content:space-between;height:var(--header-h);padding:0 clamp(1rem,4vw,2.5rem)}.site-header__brand{display:flex;align-items:center;gap:.65rem;color:var(--text);text-decoration:none}.site-header__logo{display:block;width:32px;height:32px;object-fit:contain}.site-header__name{font-size:.875rem;font-weight:300;letter-spacing:0}.site-header__nav{display:flex;align-items:center;gap:2rem}.site-header__nav a{font-size:.72rem;font-weight:500;letter-spacing:0;text-decoration:none;color:var(--text-muted);transition:color .2s}.site-header__nav a:hover,.site-header__nav a.is-active{color:var(--text)}.site-header__actions{display:flex;align-items:center;gap:1rem}.site-header__version{font-size:.72rem;color:var(--text-dim);letter-spacing:.04em}.site-header__menu{display:none;flex-direction:column;justify-content:center;gap:5px;width:36px;height:36px;padding:0;border:none;background:transparent;cursor:pointer}.site-header__menu span{display:block;width:18px;height:1.5px;margin:0 auto;background:var(--text);transition:transform .25s cubic-bezier(.22,1,.36,1),opacity .25s}.site-header__menu[aria-expanded=true] span:nth-child(1){transform:translateY(6.5px) rotate(45deg)}.site-header__menu[aria-expanded=true] span:nth-child(2){opacity:0}.site-header__menu[aria-expanded=true] span:nth-child(3){transform:translateY(-6.5px) rotate(-45deg)}.lang-select{display:inline-flex;align-items:center;gap:.45rem}.lang-select__label{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.lang-select__input{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding:.35rem 1.75rem .35rem .7rem;border-radius:999px;border:1px solid var(--border);background:#ffffff08 url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none'%3E%3Cpath d='M7 10l5 5 5-5' stroke='%238b8b9e' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right .55rem center;font-family:inherit;font-size:.68rem;font-weight:500;letter-spacing:.02em;color:var(--text-muted);cursor:pointer;transition:color .2s,border-color .2s,background-color .2s}.lang-select__input:hover{color:var(--text);border-color:#ffffff24}.lang-select__input:focus-visible{outline:2px solid rgb(139 124 248 / 45%);outline-offset:2px}.footer{position:relative;z-index:1;width:100%;padding:2rem clamp(1.5rem,5vw,3rem);border-top:1px solid rgb(255 255 255 / 3%)}.footer__inner{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;max-width:var(--max-w);margin:0 auto}.footer__copy{margin:0;font-size:.85rem;color:#fff3}.footer__family{margin:0;flex-shrink:0;font-size:.72rem;color:#ffffff47;text-align:right}.footer__family a{margin-left:.35rem;color:#ffffff61;text-decoration:none;transition:color .2s}.footer__family a:hover{color:var(--accent-soft)}@media(max-width:768px){.site-header__version{display:none}.site-header__nav{position:fixed;top:var(--header-h);left:0;right:0;flex-direction:column;gap:0;padding:1rem 0;background:#050508f5;-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);border-bottom:1px solid var(--border);transform:translateY(-110%);opacity:0;pointer-events:none;transition:transform .3s cubic-bezier(.22,1,.36,1),opacity .3s}.site-header__nav.is-open{transform:translateY(0);opacity:1;pointer-events:auto}.site-header__nav a{padding:.85rem 2rem;width:100%}.site-header__menu{display:flex}}@media(max-width:640px){.footer__inner{flex-direction:column;align-items:flex-start;gap:.75rem}.footer__family{text-align:left}}:root{font-family:var(--font-sans);color:#f2f2f8;background:#050508;--bg: #050508;--bg-elevated: #0e0e14;--bg-card: #12121a;--text: #f2f2f8;--text-muted: #8b8b9e;--text-dim: #5a5a6e;--accent: #8b7cf8;--accent-soft: #a89cf9;--accent-hover: #7a6ae8;--accent-glow: rgb(139 124 248 / 35%);--badge-bg: rgb(139 124 248 / 15%);--border: rgb(255 255 255 / 8%);--code-bg: #0a0a10;--preview-bg: #0a0a10;--header-h: 64px;--max-w: 1080px;--content-w: 960px}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;line-height:1.6}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:0;background:radial-gradient(ellipse 60% 40% at 50% -10%,rgb(99 102 241 / 14%) 0%,transparent 70%),radial-gradient(ellipse 50% 40% at 100% 100%,rgb(139 92 246 / 10%) 0%,transparent 70%)}code{font-family:var(--font-mono);font-size:.9em;padding:.15em .45em;border-radius:4px;background:#ffffff0f;color:var(--accent-soft)}main{position:relative;z-index:1;max-width:var(--content-w);margin:0 auto;padding:calc(var(--header-h) + 2.5rem) clamp(1rem,4vw,2.5rem) 4rem}.page-header{margin-bottom:.5rem}.page-header__top{display:flex;align-items:center;gap:1rem;margin-bottom:.75rem}.page-header__framework-logo{flex-shrink:0;width:2.75rem;height:2.75rem;object-fit:contain}.page-header__intro{min-width:0}.page-header__eyebrow{margin:0 0 .5rem;font-size:.72rem;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--accent-soft)}.page-header__title{margin:0 0 .75rem;font-size:clamp(1.75rem,4vw,2.25rem);font-weight:700;letter-spacing:-.03em}.page-header__desc{margin:0;max-width:36rem}h1{margin:0 0 .5rem;font-size:1.75rem;font-weight:700;letter-spacing:-.02em}h2{color:var(--text)}p{color:var(--text-muted);line-height:1.7;font-weight:300}.sprite-sheet{margin-top:2rem;background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:1.5rem}.sprite-sheet h2{margin:0 0 .75rem;font-size:1.1rem}.sprite-sheet__desc{margin:0 0 1rem}.sprite-sheet__image-wrap{overflow-x:auto;padding:1rem;background:#000;border-radius:8px;border:1px solid var(--border)}.sprite-sheet__image{display:block;max-width:100%;height:auto;margin:0 auto;image-rendering:pixelated}.sprite-sheet__meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:.75rem 1.5rem;margin:1rem 0 0;padding:1rem 0 0;border-top:1px solid var(--border)}.sprite-sheet__meta dt{margin:0;font-size:.75rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim)}.sprite-sheet__meta dd{margin:.25rem 0 0;font-size:.95rem;color:var(--text)}.props-section{margin-top:2rem;background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:1.5rem}.props-section h2{margin:0 0 .5rem;font-size:1.1rem}.props-section__desc{margin:0 0 1rem;font-size:.92rem}.props-section__group+.props-section__group{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid var(--border)}.props-section__subtitle{margin:0 0 .65rem;font-size:.78rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-soft);font-family:var(--font-mono)}.props-table__wrap{overflow-x:auto}.props-table{width:100%;min-width:32rem;border-collapse:collapse;border:1px solid var(--border);font-size:.88rem}.props-table--methods{min-width:24rem}.props-table th,.props-table td{padding:.55rem .75rem;text-align:left;border:1px solid var(--border);vertical-align:top}.props-table th{font-size:.72rem;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--text-dim);background:#ffffff08}.props-table .props-table__prop,.props-table .props-table__method{font-family:var(--font-mono);color:var(--accent-soft);white-space:nowrap}.props-table .props-table__type,.props-table .props-table__default{font-family:var(--font-mono);font-size:.82rem;color:var(--text-muted);white-space:nowrap}.props-table .props-table__desc{color:var(--text-muted);font-size:.86rem;line-height:1.55;min-width:10rem}.renderer-section{margin-top:2rem}.renderer-section h2{margin:0 0 1rem;font-size:1.1rem}.demo-grid{display:grid;gap:1.5rem}@media(min-width:640px){.demo-grid{grid-template-columns:1fr 1fr}}.demo-card{background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:1.5rem;transition:border-color .2s}.demo-card:hover{border-color:#ffffff24}.demo-card h2{margin:0 0 1rem;font-size:1.1rem}.preview{display:flex;align-items:center;justify-content:center;min-height:160px;background:var(--preview-bg);border:1px solid var(--border);border-radius:8px;margin-bottom:1rem}.preview--sprite{min-height:200px;background:#000}.controls{display:flex;gap:.5rem;flex-wrap:wrap}button{padding:.5rem 1rem;border:none;border-radius:999px;background:linear-gradient(135deg,var(--accent) 0%,#6366f1 100%);color:#fff;font-family:inherit;font-size:.875rem;font-weight:500;cursor:pointer;transition:transform .15s,box-shadow .15s}button:hover{transform:translateY(-1px);box-shadow:0 4px 16px var(--accent-glow)}.badge{display:inline-block;margin-left:.5rem;padding:.15rem .5rem;border-radius:999px;background:var(--badge-bg);color:var(--accent-soft);border:1px solid rgb(139 124 248 / 20%);font-size:.75rem;font-weight:600}.code-section{margin-top:2rem;background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:1.5rem}.code-section h2{margin:0 0 1rem;font-size:1.1rem}.code-section__desc{margin:0 0 1.25rem;font-size:.9rem;color:var(--text-muted);line-height:1.65}.code-block__desc{margin:0 0 .65rem;font-size:.88rem;color:var(--text-muted);line-height:1.6}.code-block{margin-bottom:1.25rem}.code-block:last-child{margin-bottom:0}.code-block h3{margin:0 0 .5rem;font-size:.85rem;font-weight:600;color:var(--text-dim);letter-spacing:.04em}.code-block pre{margin:0;padding:1.15rem 1.35rem;overflow-x:auto;background:var(--code-bg);color:#dce4f4;border:1px solid var(--border);border-radius:8px;font-size:.95rem;font-weight:600;line-height:1.75}.code-block code{font-family:var(--font-mono);font-weight:inherit;white-space:pre;padding:0;background:transparent;color:inherit}.code-block .code-kw{color:#cba6f7}.code-block .code-name{color:#89dceb}.code-block .code-str{color:#a6e3a1}.code-block .code-tag{color:#89b4fa}.code-block .code-attr,.code-block .code-num{color:#fab387}.code-block .code-punct{color:#9399b2}.code-block pre,.code-block code{text-align:left}@media(max-width:640px){.demo-grid{grid-template-columns:1fr}}
