:root{--nj-bottom-nav:64px;--nj-correct:#16a34a;--nj-correct-bg:#dcfce7;--nj-wrong:#dc2626;--nj-wrong-bg:#fee2e2;--nj-gold:#f59e0b;--nj-ink:#001a4d;--nj-ground:#f3f6fc;--nj-ground-2:#e9effb;--nj-edge:#d5deef;--nj-line:#e3e9f4}body.nj-body{background:var(--nj-ground);color:var(--nj-ink);touch-action:manipulation;overscroll-behavior-y:none;-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}body.nj-body:before{content:"";z-index:-1;pointer-events:none;background:radial-gradient(70% 45% at 50% -10%, #0060cc29, transparent 70%), radial-gradient(45% 35% at 100% 100%, #fd632b24, transparent 70%), radial-gradient(40% 30% at 0% 60%, #003d991a, transparent 70%), var(--nj-ground);position:fixed;inset:0}.nj-hud{-webkit-backdrop-filter:blur(14px);background:#ffffffdb}.nj-hud--bottom{border-top:1px solid var(--nj-line);box-shadow:0 -8px 24px -16px #02144240}.nj-hud--top{border-bottom:1px solid var(--nj-line)}.nj-glass{border:1px solid var(--nj-line);box-shadow:0 2px 0 0 var(--nj-edge);background:#fff}.nj-fade-up{background:linear-gradient(to top, var(--nj-ground) 55%, #f3f6fc00)}.nj-raised{box-shadow:0 0 0 1px var(--nj-line), 0 7px 0 0 var(--nj-edge)}.nj-raised-sm{box-shadow:0 0 0 1px var(--nj-line), 0 5px 0 0 var(--nj-edge)}body.nj-body input,body.nj-body textarea{-webkit-user-select:text;user-select:text}.nj-screen{min-height:100dvh;padding-bottom:calc(var(--nj-bottom-nav) + env(safe-area-inset-bottom,0px) + 16px)}.nj-screen--bare{min-height:100dvh;padding-bottom:env(safe-area-inset-bottom,0px)}.nj-safe-top{padding-top:env(safe-area-inset-top,0px)}.nj-ruby rt{color:#64748b;letter-spacing:0;font-size:.55em;line-height:1}.nj-ruby--hidden rt{visibility:hidden}.nj-ja{font-feature-settings:"palt";line-height:1.75}@keyframes njPop{0%{opacity:0;transform:scale(.92)}60%{opacity:1;transform:scale(1.03)}to{opacity:1;transform:scale(1)}}.nj-pop{animation:.22s cubic-bezier(.34,1.35,.64,1) both njPop}@keyframes njRise{0%{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}.nj-rise{animation:.26s cubic-bezier(.32,.72,0,1) both njRise}@keyframes njSheetUp{0%{transform:translateY(100%)}to{transform:translateY(0)}}.nj-sheet-up{animation:.32s cubic-bezier(.32,.72,0,1) both njSheetUp}@keyframes njShake{10%,90%{transform:translate(-2px)}20%,80%{transform:translate(4px)}30%,50%,70%{transform:translate(-6px)}40%,60%{transform:translate(6px)}}.nj-shake{animation:.42s cubic-bezier(.36,.07,.19,.97) both njShake}@keyframes njStar{0%{opacity:0;transform:scale(0)rotate(-30deg)}70%{opacity:1;transform:scale(1.25)rotate(8deg)}to{opacity:1;transform:scale(1)rotate(0)}}.nj-star{animation:.48s cubic-bezier(.34,1.4,.64,1) both njStar}@keyframes njPulse{0%,to{box-shadow:0 0 #fd632b8c}70%{box-shadow:0 0 0 14px #fd632b00}}.nj-pulse{animation:1.8s ease-out infinite njPulse}@keyframes njConfetti{0%{opacity:1;transform:translateY(-10px)rotate(0)}to{opacity:0;transform:translateY(70vh)rotate(720deg)}}.nj-confetti span{border-radius:2px;width:8px;height:14px;animation:1.6s ease-in both njConfetti;position:absolute;top:0}@keyframes njBounce{0%,to{transform:translateY(0)}50%{transform:translateY(-6px)}}.nj-bounce{animation:1.4s ease-in-out infinite njBounce}@keyframes njFlip{0%{opacity:0;transform:rotateY(90deg)}to{opacity:1;transform:rotateY(0)}}.nj-flip{animation:.26s ease-out both njFlip}@keyframes njPunch{0%{transform:scale(1)}40%{transform:scale(1.25)}to{transform:scale(1)}}.nj-punch{animation:.26s cubic-bezier(.34,1.4,.64,1) both njPunch}.nj-bar-fill{transition:width .32s cubic-bezier(.32,.72,0,1)}.nj-path{background-image:repeating-linear-gradient(#001a4d2e 0 10px,#0000 10px 20px)}.nj-node{box-shadow:0 7px 0 0 var(--nj-node-edge,#94a3b8);transition:transform .1s,box-shadow .1s}button:active .nj-node{box-shadow:0 1px 0 0 var(--nj-node-edge,#94a3b8);transform:translateY(6px)}@keyframes njGlow{0%,to{box-shadow:0 7px 0 0 var(--nj-node-edge,#94a3b8), 0 0 0 0 #fd632b99}70%{box-shadow:0 7px 0 0 var(--nj-node-edge,#94a3b8), 0 0 0 16px #fd632b00}}.nj-node--current{animation:1.8s ease-out infinite njGlow}.nj-timer-fill{transition:width .2s linear}.nj-sign{color:#fff;background:#0f172a;border:3px solid #1e293b;border-radius:12px;box-shadow:inset 0 0 0 2px #334155}.nj-sign--green{background:#14532d;border-color:#166534;box-shadow:inset 0 0 0 2px #15803d}.nj-paper{color:#1f2937;background:#fffdf7;border:1px solid #e7e0c9;border-radius:8px;box-shadow:0 6px 20px -10px #02144240}.nj-ticket{color:#0f172a;font-variant-numeric:tabular-nums;background:#fff;border:1px dashed #94a3b8;border-radius:10px}
