/* Nygui release: interactive word-search, reaction feedback and responsive finishing. */
.nc-word-controls{display:flex;flex-wrap:wrap;gap:12px;margin:10px 0 14px;align-items:center}
.nc-word-controls label{display:flex;align-items:center;gap:8px;font-size:.85rem;color:var(--ink);font-weight:650}
.nc-word-controls select{border-radius:9px;border:1px solid var(--line);padding:8px 11px;background:var(--surface);color:var(--ink);font:inherit}
.nc-word-controls input[type=color]{width:42px;height:40px;padding:4px;border:1px solid var(--line);border-radius:9px;background:var(--surface);cursor:pointer}
.nc-word-board .nc-letter{font-family:ui-rounded,'Trebuchet MS',system-ui,sans-serif;transition:background .1s ease,box-shadow .1s ease;outline-offset:-3px}
.nc-word-board.nc-font-serif .nc-letter{font-family:Georgia,'Times New Roman',serif;font-weight:700}
.nc-word-board.nc-font-mono .nc-letter{font-family:ui-monospace,Menlo,Consolas,monospace;font-weight:700}
.nc-word-board .nc-letter.found{background:color-mix(in srgb,var(--nc-highlight) 34%,var(--surface))!important;border-color:var(--nc-highlight);color:var(--ink);box-shadow:inset 0 0 0 1px var(--nc-highlight)}
.nc-word-board .nc-letter.tracing{background:var(--nc-highlight)!important;color:#fff!important;border-color:var(--nc-highlight)!important;box-shadow:0 1px 6px color-mix(in srgb,var(--nc-highlight) 30%,transparent)}
.nc-word-board .nc-letter.selected{outline:2px solid var(--nc-highlight)}
.nc-word-board .nc-letter.hint:not(.tracing){background:#ffefa8!important;color:#503e3d}
.nvg-reaction{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:6px;min-width:64px;min-height:40px;transition:background .16s ease,color .16s ease,transform .16s ease;border-radius:11px!important}
.nvg-reaction svg{display:block;width:22px;height:22px;flex:0 0 22px}
.nvg-reaction.is-selected{background:color-mix(in srgb,var(--primary) 18%,var(--surface))!important;border:1px solid var(--primary)!important;color:var(--primary)!important;font-weight:750}
.nvg-reaction.is-selected[data-kind=like] svg{fill:color-mix(in srgb,var(--primary) 65%,transparent)}
.nvg-reaction.is-selected[data-kind=dislike] svg{fill:color-mix(in srgb,var(--primary) 25%,transparent)}
.nvg-reaction:disabled{opacity:.65}
.nvg-reaction-pop{animation:nvg-reaction-bounce .36s ease}
.nvg-reaction-flourish{position:absolute;top:-20px;left:35%;width:25px;height:25px;color:var(--primary);pointer-events:none;animation:nvg-reaction-float .65s ease-out forwards}
.nvg-reaction-flourish svg{width:25px;height:25px;fill:var(--primary)}
@keyframes nvg-reaction-bounce{30%{transform:scale(1.09)}100%{transform:scale(1)}}
@keyframes nvg-reaction-float{0%{transform:translateY(12px) scale(.5);opacity:0}25%{opacity:1}100%{transform:translateY(-19px) scale(1.2);opacity:0}}
/* A removed like fractures into two vector halves, then fades. No emoji graphics. */
.nvg-reaction-flourish.nvg-heartbreak{top:-21px;left:34%;width:32px;height:32px;animation:nvg-heartbreak-float .76s ease-out both}
.nvg-heartbreak .nvg-broken-heart-svg{width:32px;height:32px;overflow:visible;fill:color-mix(in srgb,var(--primary) 40%,transparent)}
.nvg-heartbreak .nvg-heart-left{transform-origin:50% 50%;animation:nvg-heart-left-fall .76s ease-out both}
.nvg-heartbreak .nvg-heart-right{transform-origin:50% 50%;animation:nvg-heart-right-fall .76s ease-out both}
@keyframes nvg-heartbreak-float{0%{transform:translateY(9px) scale(.75);opacity:0}20%{opacity:1}62%{opacity:1}100%{transform:translateY(-13px) scale(1.02);opacity:0}}
@keyframes nvg-heart-left-fall{0%,18%{transform:translateX(0) rotate(0)}100%{transform:translate(-6px,4px) rotate(-24deg)}}
@keyframes nvg-heart-right-fall{0%,18%{transform:translateX(0) rotate(0)}100%{transform:translate(6px,4px) rotate(24deg)}}
@media(max-width:450px){.nc-word-board .nc-letter{font-size:clamp(.7rem,3vw,1rem)!important}.nvg-reaction{min-width:58px}}
@media(prefers-reduced-motion:reduce){.nvg-reaction-pop,.nvg-reaction-flourish,.nvg-heartbreak .nvg-heart-left,.nvg-heartbreak .nvg-heart-right{animation:none!important}}

/* Hidden Objects scenes: carefully drawn illustrated environments, unobtrusive targets. */
.nc-scene-toolbar{display:flex;gap:14px;align-items:center;justify-content:space-between;width:min(100%,720px);margin:14px 0 8px;color:var(--muted);font-size:.83rem}
.nc-scene-scroll{width:min(100%,720px);max-width:100%;overflow:auto;overscroll-behavior:contain;border-radius:19px;scrollbar-width:thin;border:1px solid var(--line);background:var(--subtle)}
.nc-scene{width:100%;max-width:none;height:auto!important;aspect-ratio:8/5;border:0!important;border-radius:0!important;background-size:100% 100%!important;background-position:center!important;background-repeat:no-repeat!important;isolation:isolate;position:relative;overflow:hidden}
.nc-scene.nc-scene-zoom{width:175%;min-width:640px}
.nc-scene-window,.nc-scene-shelf,.nc-scene-table,.nc-scene-vase{display:none!important}
.nc-scene .nc-object{width:5%;height:8%;min-width:21px;min-height:25px;max-width:48px;max-height:48px;border:0!important;border-radius:50%!important;background:transparent!important;box-shadow:none!important;color:#a65c83;opacity:.8;padding:2px;filter:drop-shadow(0 1px 0 #fff6f5);transition:transform .15s ease,color .15s ease,opacity .15s ease}
.nc-scene .nc-object .nvg-icon{width:100%;height:100%;stroke-width:1.7}
.nc-scene .nc-object:hover,.nc-scene .nc-object:focus-visible{opacity:1;color:#93365f;transform:translate(-50%,-50%) scale(1.15)}
.nc-scene .nc-object.collected{opacity:0!important;pointer-events:none}
.nc-scene .nc-object-hinted{opacity:1!important;background:#fffbe4cc!important;box-shadow:0 0 0 5px #ffe4a6,0 0 15px #f9ce91!important}
.nc-scene-scroll::-webkit-scrollbar{height:9px}.nc-scene-scroll::-webkit-scrollbar-thumb{background:var(--tint);border-radius:9px}
@media (prefers-reduced-motion:reduce){.nc-scene .nc-object{transition:none!important}}

.nvg-follow.is-selected,[data-social="toggle-bff"][aria-pressed="true"]{background:color-mix(in srgb,var(--primary) 16%,var(--surface))!important;border-color:var(--primary)!important;color:var(--primary)!important;font-weight:700}
.mood-btn[aria-pressed="true"],.ng-secondary[aria-pressed="true"]{box-shadow:inset 0 0 0 2px var(--primary);background:var(--tint)!important}
