/* Preloader chạy bằng CSS: 1,1s rồi tự ẩn, không phụ thuộc JS */
.preloader{position:fixed;inset:0;z-index:200;background:var(--green);display:grid;place-items:center;cursor:pointer;animation:nt-pre-out 1.15s var(--ease) forwards}
.preloader img{width:180px;animation:nt-pre-stamp .75s var(--ease) forwards}
@keyframes nt-pre-stamp{from{transform:scale(1.3);opacity:0;filter:blur(6px)}to{transform:scale(1);opacity:1;filter:blur(0)}}
@keyframes nt-pre-out{0%,70%{opacity:1}100%{opacity:0;visibility:hidden}}
html.nt-seen .preloader{display:none}
.page-veil{position:fixed;inset:0;z-index:190;background:var(--green);transform:translateX(-101%);display:grid;place-items:center;pointer-events:none}
.page-veil .veil-spin{width:72px;color:var(--gold-light)}
.reveal{opacity:0;transform:translateY(24px)}.reveal.is-in{opacity:1;transform:none}
.draw path{stroke:currentColor;stroke-width:1}.draw:not(.is-filled) path{fill:none}.draw.is-filled path{fill-opacity:.9;transition:fill-opacity 1.2s}
[data-hero-line]{opacity:0;transform:translateY(16px)}
html.lenis,html.lenis body{height:auto}.lenis.lenis-smooth{scroll-behavior:auto!important}.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain}.lenis.lenis-stopped{overflow:hidden}
@media (prefers-reduced-motion:reduce){.preloader,.page-veil{display:none}.reveal,[data-hero-line]{opacity:1;transform:none;transition:none}.draw path{stroke-dasharray:none!important;stroke-dashoffset:0!important}}
html.no-motion .preloader,html.no-motion .page-veil{display:none}html.no-motion .reveal,html.no-motion [data-hero-line]{opacity:1;transform:none}
html.no-js .preloader,html.no-js .page-veil{display:none}html.no-js .reveal,html.no-js [data-hero-line]{opacity:1;transform:none}
