:root{
  --bg:#070D18; --ink:#E2E8F0; --muted:#94A3B8; --line:rgba(148,163,184,.18);
  --sand:#0D1527; --card:#0D1527; --accent:#22D3EE; --cyan:#06B6D4; --glow:#67E8F9; --dark:#040810; --raise:#131F38;
  --ease:cubic-bezier(.22,.8,.2,1);
  --f:'Be Vietnam Pro',system-ui,-apple-system,'Segoe UI',sans-serif;
  --fd:'Playfair Display','Times New Roman',serif;           /* tiêu đề */
  --fa:'Cormorant Garamond','Playfair Display',serif;         /* chữ nghiêng nhấn */
}
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
body{font-family:var(--f);background:radial-gradient(1100px 520px at 50% -8%,rgba(6,182,212,.16),transparent 62%),var(--bg);background-attachment:fixed;color:var(--ink);font-size:16px;line-height:1.6;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;cursor:pointer;border:0;background:none;color:inherit}
.wrap{width:min(1240px,100% - 48px);margin-inline:auto}
h1,h2,h3{font-weight:500;letter-spacing:-.02em;line-height:1.08}
h2{font-size:clamp(32px,4.6vw,60px)}
.eyebrow{font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);font-weight:500}

/* nav */
.nav{position:fixed;inset:0 0 auto 0;z-index:50;padding:20px 0;transition:background .4s,backdrop-filter .4s,padding .4s;color:#fff}
.nav.solid{background:rgba(7,13,24,.82);backdrop-filter:blur(16px);padding:12px 0;color:var(--ink);border-bottom:1px solid var(--line)}
.nav .wrap{display:flex;align-items:center;justify-content:space-between;gap:24px}
.logo{font-weight:600;font-size:20px;letter-spacing:-.01em;display:flex;align-items:center;gap:10px}
.logo i{width:30px;height:30px;border:1.5px solid currentColor;border-radius:8px;display:grid;place-items:center;font-style:normal;font-size:13px}
.menu{display:flex;gap:34px;font-size:17px}
.menu a{opacity:.72;transition:opacity .25s}
.menu a:hover,.menu a.on{opacity:1}
.btn{display:inline-flex;align-items:center;gap:10px;padding:12px 20px;border-radius:12px;border:1px solid currentColor;font-size:15px;transition:transform .35s var(--ease),background .3s,color .3s}
.btn:hover{transform:translateY(-2px)}
.btn.fill{background:var(--cyan);color:#031018;border-color:var(--cyan);font-weight:500}
.btn.fill:hover{background:var(--accent);border-color:var(--accent);box-shadow:0 10px 40px -8px rgba(6,182,212,.7)}
.btn.light{background:var(--cyan);color:#031018;border-color:var(--cyan);font-weight:500}
.btn svg{width:16px;height:16px}
.burger{display:none}

/* hero */
.hero{position:relative;height:100svh;min-height:680px;color:#fff;overflow:hidden;background:var(--card)}
.hero .bg{position:absolute;inset:0;background-size:cover;background-position:center 55%}
.hero .veil{position:absolute;inset:0;background:linear-gradient(180deg,rgba(4,8,16,.55),rgba(4,8,16,.08) 35%,rgba(7,13,24,.92))}
.hero .word{position:absolute;left:50%;top:9%;transform:translateX(-50%);white-space:nowrap;font-weight:600;font-size:clamp(90px,19.5vw,300px);letter-spacing:-.045em;color:rgba(255,255,255,.42);line-height:.95;will-change:transform;pointer-events:none}
.hero .word span{display:inline-block;opacity:0;transform:translateY(40%);animation:rise 1.2s var(--ease) forwards}
@keyframes rise{to{opacity:1;transform:none}}
.hero-bot{position:absolute;inset:auto 0 44px 0}
.hero-bot .wrap{display:grid;grid-template-columns:1.1fr 1fr 360px;align-items:end;gap:32px}
.hero-bot p{max-width:340px;font-size:17px;line-height:1.5;opacity:.95}
.hero-card{background:rgba(13,21,39,.88);backdrop-filter:blur(14px);color:var(--ink);border:1px solid rgba(6,182,212,.3);border-radius:20px;padding:10px;width:100%;box-shadow:0 30px 80px rgba(0,0,0,.5),0 0 60px -20px rgba(6,182,212,.5)}
.hero-card .th{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.hero-card .th div{aspect-ratio:1.5;border-radius:12px;background-size:cover;background-position:center}
.hero-card h3{font-size:17px;margin:14px 8px 2px;font-weight:500}
.hero-card small{display:block;margin:0 8px 12px;color:var(--muted);font-size:14px}
.hero-card .btn{width:100%;justify-content:center;background:var(--cyan);color:#031018;border-color:var(--cyan);padding:14px;font-weight:500}

/* sections */
section{padding:clamp(72px,10vw,150px) 0}
.about{display:grid;grid-template-columns:1fr 1.6fr;gap:60px;align-items:start}
.about p.lead{font-size:clamp(22px,2.6vw,34px);line-height:1.3;letter-spacing:-.015em}
.about p.lead em{font-style:normal;color:var(--muted)}
.sec-head{display:flex;justify-content:space-between;align-items:end;gap:40px;margin-bottom:56px;flex-wrap:wrap}
.sec-head p{max-width:420px;color:var(--muted)}

.proj-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.pcard{position:relative;border:1px solid var(--line);border-radius:22px;overflow:hidden;background:var(--card);display:block;transition:transform .6s var(--ease),box-shadow .6s}
.pcard:hover{transform:translateY(-6px);box-shadow:0 30px 60px -30px rgba(6,182,212,.35)}
.pcard .im{aspect-ratio:4/5;overflow:hidden;background:var(--raise)}
.pcard .im img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.pcard:hover .im img{transform:scale(1.06)}
.pcard .tx{padding:20px 22px 24px;display:flex;justify-content:space-between;gap:16px;align-items:end}
.pcard h3{font-size:22px;font-weight:500}
.pcard small{color:var(--muted);display:block;margin-top:4px;font-size:14px;line-height:1.4}
.pcard .go{flex:none;width:44px;height:44px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;transition:.4s var(--ease)}
.pcard:hover .go{background:var(--cyan);color:#031018;border-color:var(--cyan);transform:rotate(-45deg)}

.marquee{overflow:hidden;border-block:1px solid var(--line);padding:26px 0;background:var(--bg)}
.marquee div{display:flex;gap:56px;white-space:nowrap;width:max-content;animation:mq 38s linear infinite;font-size:clamp(28px,4vw,54px);letter-spacing:-.02em;font-weight:500}
.marquee span{opacity:.9}.marquee b{color:var(--accent);font-weight:400}
@keyframes mq{to{transform:translateX(-50%)}}

.picks{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.ucard{border:1px solid var(--line);border-radius:22px;overflow:hidden;background:var(--card);display:block;transition:transform .6s var(--ease),box-shadow .6s}
.ucard:hover{transform:translateY(-6px);box-shadow:0 30px 60px -30px rgba(6,182,212,.35)}
.imgbox{position:relative;overflow:hidden;background:var(--raise);aspect-ratio:4/3}
.imgbox img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.ucard:hover .imgbox img{transform:scale(1.05)}
/* ảnh nhỏ: nền mờ + ảnh gốc giữ nguyên nét, không phóng to */
.imgbox.soft{background-size:cover;background-position:center}
.imgbox.soft::before{content:"";position:absolute;inset:0;background:inherit;filter:blur(28px) brightness(.85);transform:scale(1.2)}
.imgbox.soft img{position:relative;object-fit:contain}
.tag{position:absolute;top:14px;left:14px;z-index:2;background:var(--cyan);color:#031018;padding:5px 12px;border-radius:99px;font-size:12.5px;font-weight:500}
.ucard .tx{padding:20px 22px 24px}
.ucard h3{font-size:20px;font-weight:500}
.ucard .sub{color:var(--muted);font-size:14.5px;margin-top:2px}
.ucard .pr{display:flex;gap:22px;margin-top:16px;padding-top:16px;border-top:1px solid var(--line);font-size:15px}
.ucard .pr b{display:block;font-size:20px;font-weight:600;letter-spacing:-.01em}
.ucard .pr span{color:var(--muted);font-size:12.5px;letter-spacing:.08em;text-transform:uppercase}

.approach{background:linear-gradient(180deg,#0D1527,#070D18);border:1px solid var(--line);color:var(--ink);border-radius:36px;margin-inline:12px}
.approach .eyebrow{color:var(--accent)}
.steps{margin-top:48px;border-top:1px solid var(--line)}
.step{display:grid;grid-template-columns:90px 1fr 1.2fr;gap:24px;padding:30px 0;border-bottom:1px solid var(--line);align-items:baseline;transition:padding .5s var(--ease)}
.step:hover{padding-left:16px}
.step i{font-style:normal;color:var(--accent);font-size:14px;letter-spacing:.1em}
.step h3{font-size:clamp(22px,2.6vw,34px);font-weight:500}
.step p{color:var(--muted)}

.faq details{border-bottom:1px solid var(--line);padding:24px 0}
.faq summary{list-style:none;font-size:clamp(19px,2.2vw,26px);display:flex;justify-content:space-between;gap:20px;cursor:pointer;letter-spacing:-.01em}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-size:28px;line-height:1;transition:transform .4s var(--ease)}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq details p{color:var(--muted);max-width:720px;padding-top:14px}
.faq-grid{display:grid;grid-template-columns:1fr 1.5fr;gap:60px}

.cta{position:relative;border-radius:36px;margin-inline:12px;overflow:hidden;color:#fff;padding:clamp(80px,12vw,170px) 0;text-align:center;background:var(--card) center/cover}
.cta::before{content:"";position:absolute;inset:0;background:linear-gradient(rgba(4,8,16,.55),rgba(7,13,24,.85)),radial-gradient(600px 300px at 50% 100%,rgba(6,182,212,.3),transparent)}
.cta .wrap{position:relative}
.cta h2{max-width:900px;margin:0 auto 22px}
.cta p{opacity:.85;max-width:520px;margin:0 auto 34px}
.cta .row{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
footer{padding:70px 0 40px}
footer .cols{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:40px;padding-bottom:48px;border-bottom:1px solid var(--line)}
footer h4{font-weight:500;font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted);margin-bottom:14px}
footer li{list-style:none;margin:6px 0}
footer .bot{display:flex;justify-content:space-between;color:var(--muted);font-size:14px;padding-top:26px;flex-wrap:wrap;gap:10px}

/* dự án / căn */
.phero{height:78svh;min-height:520px;position:relative;color:#fff;display:flex;align-items:end;overflow:hidden;background:var(--card)}
.phero .bg{position:absolute;inset:0;background-size:cover;background-position:center}
.phero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(4,8,16,.5),transparent 30%,rgba(7,13,24,.92))}
.phero .wrap{position:relative;z-index:2;padding-bottom:56px}
.phero h1{font-size:clamp(44px,8vw,120px);letter-spacing:-.04em}
.phero p{max-width:560px;margin-top:14px;font-size:19px;opacity:.92}
.facts{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:20px;margin-top:-40px;position:relative;z-index:5;background:var(--card);overflow:hidden}
.facts div{padding:24px 26px;border-right:1px solid var(--line)}
.facts div:last-child{border:0}
.facts span{display:block;font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin-bottom:6px}
.facts b{font-weight:500;font-size:18px;line-height:1.3;display:block}
.two{display:grid;grid-template-columns:1fr 1.3fr;gap:60px}
.hl{list-style:none}
.hl li{padding:18px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:34px 1fr;gap:10px;font-size:17px}
.hl li::before{content:"→";color:var(--accent)}
.gal{display:grid;grid-template-columns:repeat(6,1fr);gap:14px}
.gal .imgbox{border-radius:18px;aspect-ratio:auto;height:100%;min-height:240px}
.gal .imgbox:nth-child(1){grid-column:span 4;grid-row:span 2}
.gal .imgbox:nth-child(2),.gal .imgbox:nth-child(3){grid-column:span 2}
.gal .imgbox:nth-child(n+4){grid-column:span 2}
.gal .imgbox{cursor:zoom-in}
.rooms{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}
.room{background:var(--card);border:1px solid var(--line);border-radius:20px;padding:26px 28px;display:grid;gap:6px}
.room h3{font-size:22px;font-weight:500}
.room p{color:var(--muted);font-size:15px}
.room .l{display:flex;justify-content:space-between;border-top:1px solid var(--line);margin-top:12px;padding-top:12px;font-size:15px}
.plans{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.plans figure{background:var(--card);border:1px solid var(--line);border-radius:18px;padding:12px;cursor:zoom-in}
.plans img{width:100%;border-radius:10px;aspect-ratio:4/3;object-fit:contain;background:#fff}
.plans figcaption{padding:10px 6px 4px;font-size:14.5px;color:var(--muted)}
.chips{display:flex;flex-wrap:wrap;gap:10px;margin-top:20px}
.chips span{border:1px solid var(--line);border-radius:99px;padding:8px 16px;font-size:15px}

.udetail{display:grid;grid-template-columns:1.4fr 1fr;gap:48px;align-items:start;padding-top:120px}
.ugal .main{border-radius:24px;aspect-ratio:4/3;cursor:zoom-in}
.ugal .thumbs{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-top:10px}
.ugal .thumbs .imgbox{border-radius:12px;aspect-ratio:1;cursor:pointer;opacity:.6;transition:opacity .3s}
.ugal .thumbs .imgbox.on,.ugal .thumbs .imgbox:hover{opacity:1}
.uinfo{position:sticky;top:96px}
.uinfo h1{font-size:clamp(32px,3.6vw,50px);margin:10px 0 8px}
.uinfo .price{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:18px;margin:26px 0;overflow:hidden;background:var(--card)}
.uinfo .price div{padding:20px 22px}
.uinfo .price div+div{border-left:1px solid var(--line)}
.uinfo .price span{font-size:12.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
.uinfo .price b{display:block;font-size:26px;font-weight:600;letter-spacing:-.02em;margin-top:2px}
.spec{list-style:none;margin-bottom:26px}
.spec li{display:flex;justify-content:space-between;padding:13px 0;border-bottom:1px solid var(--line);font-size:16px}
.spec li span{color:var(--muted)}
.uinfo .btns{display:grid;gap:10px}
.uinfo .btns .btn{justify-content:center;padding:15px}
.note{font-size:13.5px;color:var(--muted);margin-top:14px}

/* lightbox */
.lb{position:fixed;inset:0;z-index:200;background:rgba(15,11,8,.94);display:none;place-items:center;padding:30px;cursor:zoom-out}
.lb.on{display:grid;animation:fade .35s}
.lb img{max-height:92vh;max-width:94vw;object-fit:contain;border-radius:8px}
@keyframes fade{from{opacity:0}}

/* chuyển trang + reveal */
.curtain{position:fixed;inset:0;z-index:300;background:var(--dark) radial-gradient(500px 300px at 50% 55%,rgba(6,182,212,.25),transparent);transform:translateY(100%);pointer-events:none;display:grid;place-items:center;color:var(--accent);font-size:clamp(28px,5vw,64px);font-weight:500;letter-spacing:-.03em}
.curtain.in{animation:cin .65s var(--ease) forwards;pointer-events:all}
.curtain.out{transform:translateY(0);animation:cout .8s var(--ease) .05s forwards}
@keyframes cin{to{transform:translateY(0)}}
@keyframes cout{to{transform:translateY(-100%)}}
.rv{opacity:0;transform:translateY(46px);transition:opacity 1s var(--ease),transform 1.1s var(--ease);transition-delay:var(--d,0s)}
.rv.on{opacity:1;transform:none}
.maskimg img{clip-path:inset(0 0 100% 0);transition:clip-path 1.3s var(--ease),transform 1.2s var(--ease);transition-delay:inherit}
.maskimg.on img{clip-path:inset(0)}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.rv{opacity:1;transform:none}.maskimg img{clip-path:none}.hero .word span{opacity:1;transform:none}}

@media (max-width:980px){
  .menu{display:none}.burger{display:block}
  .hero-bot .wrap{grid-template-columns:1fr}
  .hero-bot p{display:none}
  .hero .word{top:12%}
  .about,.two,.faq-grid,.udetail{grid-template-columns:1fr;gap:34px}
  .proj-grid,.picks{grid-template-columns:1fr 1fr}
  .facts{grid-template-columns:1fr 1fr}.facts div:nth-child(2){border-right:0}.facts div:nth-child(-n+2){border-bottom:1px solid var(--line)}
  .rooms{grid-template-columns:1fr}
  .step{grid-template-columns:50px 1fr}.step p{grid-column:2}
  footer .cols{grid-template-columns:1fr 1fr}
  .uinfo{position:static}
}
@media (max-width:620px){
  .proj-grid,.picks{grid-template-columns:1fr}
  .gal{grid-template-columns:1fr 1fr}.gal .imgbox,.gal .imgbox:nth-child(n){grid-column:span 2;min-height:200px}
  .hero-card .th{display:none}
  .hero .word{font-size:17.5vw;top:14%}
  .logo{font-size:16px;white-space:nowrap}
  .nav .btn{padding:9px 14px;font-size:14px;white-space:nowrap}
  footer .cols{grid-template-columns:1fr}
}

/* bài viết dự án */
.article{display:grid;grid-template-columns:1fr 1.5fr;gap:60px;border-top:1px solid var(--line);padding-top:48px}
.article h2{font-size:clamp(26px,3.2vw,42px);margin-top:12px}
.abody h3{font-size:21px;font-weight:500;margin:30px 0 12px}
.abody h3:first-child{margin-top:0}
.abody p{color:var(--muted);margin-bottom:14px;max-width:720px}
.abody ul{list-style:none;margin-bottom:10px}
.abody li{padding:12px 0 12px 26px;border-bottom:1px solid var(--line);position:relative;color:var(--ink)}
.abody li::before{content:"";position:absolute;left:4px;top:21px;width:8px;height:8px;border-radius:50%;background:var(--cyan);box-shadow:0 0 12px var(--cyan)}

/* thẻ mở trình xem layout */
.lvcard{display:grid;grid-template-columns:1fr 1.2fr;gap:40px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:28px;padding:clamp(28px,4vw,56px);overflow:hidden}
.lvprev{position:relative;height:300px;perspective:900px}
.lvprev img{position:absolute;left:50%;top:50%;width:62%;aspect-ratio:4/3;object-fit:contain;background:#fff;border-radius:12px;box-shadow:0 20px 50px rgba(0,0,0,.5);transform:translate(calc(-50% + var(--i)*34px),calc(-50% - var(--i)*6px)) rotateY(-24deg) translateZ(calc(var(--i)*-30px));opacity:calc(1 - var(--i)*.14);transition:transform .8s var(--ease)}
.lvcard:hover .lvprev img{transform:translate(calc(-50% + var(--i)*46px),calc(-50% - var(--i)*8px)) rotateY(-12deg) translateZ(calc(var(--i)*-30px))}

/* trình xem layout toàn khung */
.lv{position:fixed;inset:0;z-index:250;background:radial-gradient(900px 500px at 50% 35%,#0f1d36,#040810);color:var(--ink);display:grid;grid-template-rows:auto auto 1fr auto auto;animation:fade .35s}
.lv-top{display:flex;justify-content:space-between;align-items:center;padding:18px 28px}
.lv-top b{font-size:20px;font-weight:500}
.lv-x{width:42px;height:42px;border-radius:50%;border:1px solid var(--line);font-size:16px;transition:.3s}
.lv-x:hover{background:var(--cyan);color:#031018;border-color:var(--cyan)}
.lv-tabs{display:flex;gap:8px;padding:0 28px 12px;overflow-x:auto;scrollbar-width:none}
.lv-tabs button{white-space:nowrap;padding:9px 16px;border:1px solid var(--line);border-radius:99px;font-size:14.5px;color:var(--muted);transition:.3s}
.lv-tabs button i{font-style:normal;opacity:.6;margin-left:4px}
.lv-tabs button.on{background:var(--cyan);border-color:var(--cyan);color:#031018}
.lv-stage{position:relative;perspective:1500px;overflow:hidden;min-height:0}
.lv-track{position:absolute;inset:0;transform-style:preserve-3d}
.lv-card{position:absolute;left:50%;top:50%;width:min(62vw,860px);height:min(100%,640px);margin-left:calc(min(62vw,860px)/-2);transform-origin:center;translate:0 -50%;transition:transform .7s var(--ease),opacity .5s;display:grid;place-items:center;cursor:pointer}
.lv-card img{max-width:100%;max-height:100%;background:#fff;border-radius:14px;box-shadow:0 30px 80px rgba(0,0,0,.6);user-select:none;transition:transform .45s var(--ease);will-change:transform}
.lv-card.on{cursor:zoom-in}
.lv.zoomed .lv-card.on{cursor:grab;z-index:200!important}
.lv.zoomed .lv-card.on img{transition:none}
.lv-nav{position:absolute;top:50%;translate:0 -50%;z-index:300;width:52px;height:52px;border-radius:50%;background:rgba(13,21,39,.8);border:1px solid var(--line);font-size:28px;line-height:1;transition:.3s;backdrop-filter:blur(8px)}
.lv-nav:hover{background:var(--cyan);color:#031018}
.lv-nav.prev{left:20px}.lv-nav.next{right:20px}
.lv-cap{display:flex;gap:18px;align-items:center;justify-content:center;padding:12px 28px;font-size:16px}
.lv-cap .n{color:var(--muted)}
.lv-zoom{padding:8px 16px;border:1px solid var(--line);border-radius:99px;font-size:14px;transition:.3s}
.lv-zoom:hover{background:var(--cyan);color:#031018;border-color:var(--cyan)}
.lv-rail{display:flex;gap:10px;padding:6px 28px 20px;overflow-x:auto;scrollbar-width:thin;justify-content:safe center}
.lv-rail button{flex:none;width:92px;height:68px;border-radius:10px;overflow:hidden;border:2px solid transparent;opacity:.55;background:#fff;transition:.3s}
.lv-rail button.on{border-color:var(--cyan);opacity:1}
.lv-rail img{width:100%;height:100%;object-fit:contain}

/* ảnh khóa + form lead */
.locked{position:relative;display:block;width:100%;border-radius:26px;overflow:hidden;border:1px solid var(--line);background:var(--card);cursor:pointer;padding:0}
.locked img{width:100%;display:block;filter:blur(10px) saturate(1.1) brightness(.7);transform:scale(1.06);image-rendering:auto;transition:filter .6s}
.locked:hover img{filter:blur(7px) saturate(1.15) brightness(.78)}
.locked.open img{filter:none;transform:none;cursor:zoom-in}
.lockbox{position:absolute;inset:0;display:grid;place-content:center;justify-items:center;gap:8px;text-align:center;color:#fff;padding:20px}
.lockbox svg{width:54px;height:54px;padding:13px;border-radius:50%;background:rgba(6,182,212,.18);border:1px solid var(--cyan);color:var(--glow);box-shadow:0 0 40px rgba(6,182,212,.5)}
.lockbox b{font-size:clamp(18px,2.4vw,28px);font-weight:500}
.lockbox small{color:rgba(255,255,255,.75);font-size:15px}
.leadm{position:fixed;inset:0;z-index:260;background:rgba(4,8,16,.78);backdrop-filter:blur(6px);display:grid;place-items:center;padding:20px;animation:fade .3s}
.leadbox{position:relative;width:min(460px,100%);background:var(--card);border:1px solid rgba(6,182,212,.35);border-radius:24px;padding:34px 30px 26px;display:grid;gap:14px;box-shadow:0 40px 100px rgba(0,0,0,.6),0 0 80px -30px rgba(6,182,212,.6)}
.leadbox .x{position:absolute;right:16px;top:16px;width:36px;height:36px}
.leadbox h3{font-size:26px;font-weight:500;margin-top:-4px}
.leadbox p{color:var(--muted);font-size:15px;margin-top:-6px}
.leadbox label{display:grid;gap:6px;font-size:13.5px;color:var(--muted)}
.leadbox input,.leadbox select{font:inherit;font-size:16px;color:var(--ink);background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:13px 14px;outline:none;transition:border .25s,box-shadow .25s}
.leadbox input:focus,.leadbox select:focus{border-color:var(--cyan);box-shadow:0 0 0 3px rgba(6,182,212,.2)}
.leadbox .err{color:#fca5a5;font-size:14px;min-height:0}
.leadbox .err a{color:var(--accent);text-decoration:underline}
.leadbox .go{justify-content:center;padding:15px}
.leadbox small{color:var(--muted);font-size:12.5px;text-align:center}
@media (max-width:980px){.article,.lvcard{grid-template-columns:1fr;gap:28px}.lvprev{height:230px}.lv-card{width:84vw;margin-left:-42vw}.lv-nav{width:42px;height:42px}.lv-nav.prev{left:8px}.lv-nav.next{right:8px}.lv-rail button{width:72px;height:54px}}

/* video nền hero dự án, ảnh cá nhân */
.phero .bgvid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}
.phero .wrap{z-index:2}
.me{position:relative;display:grid;place-items:end center;min-height:420px;align-self:end}
.me .halo{position:absolute;left:50%;bottom:0;width:min(420px,90%);aspect-ratio:1;translate:-50% 8%;border-radius:50%;background:radial-gradient(circle at 50% 40%,rgba(6,182,212,.55),rgba(6,182,212,.12) 55%,transparent 72%);filter:blur(6px)}
.me img{position:relative;max-height:560px;width:auto;max-width:100%;object-fit:contain;filter:drop-shadow(0 30px 40px rgba(0,0,0,.45))}
@keyframes kb{from{scale:1}to{scale:1.07}}
@media (max-width:980px){.me{min-height:340px}.me img{max-height:420px}}

/* chế độ chụp ảnh xem trước (?shot): khung hero cố định, hiện hết nội dung */
.shot .hero:not(.ifc){height:900px!important}.shot .phero{height:720px!important}
.shot .rv{opacity:1!important;transform:none!important}.shot .maskimg img{clip-path:none!important}.shot .curtain{display:none}
.shot .hero .word span{animation:none;opacity:1;transform:none}

/* ảnh hero dự án: phóng rất chậm bằng GPU (mượt, không cần video) */

/* blog */
.bgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.bcard{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:22px;overflow:hidden;transition:transform .6s var(--ease),box-shadow .6s}
.bcard:hover{transform:translateY(-6px);box-shadow:0 30px 60px -30px rgba(6,182,212,.35)}
.bim{aspect-ratio:3/2;background:var(--raise);overflow:hidden}
.bim img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease)}
.bcard:hover .bim img{transform:scale(1.05)}
.btx{padding:20px 22px 24px;display:grid;gap:10px}
.btx h3{font-size:20px;font-weight:500;line-height:1.25}
.btx p{color:var(--muted);font-size:15px;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.bmeta{display:flex;gap:14px;font-size:12.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--accent)}
.bmeta span+span{color:var(--muted)}
.chipb{border:1px solid var(--line);border-radius:99px;padding:8px 16px;font-size:14.5px;color:var(--muted);transition:.3s}
.chipb.on,.chipb:hover{background:var(--cyan);border-color:var(--cyan);color:#031018}
.bpost{padding:150px 0 90px}
.narrow{width:min(820px,100% - 48px)}
.bpost h1{font-size:clamp(32px,4.6vw,56px);margin:14px 0 18px}
.blead{font-size:clamp(18px,2vw,22px);color:var(--muted);margin-bottom:34px}
.bcover{border-radius:22px;overflow:hidden;margin-bottom:36px;border:1px solid var(--line)}
.bcover img{width:100%;display:block}
.bbody p{font-size:17.5px;line-height:1.75;color:#cbd5e1;max-width:none}
.bbody h3{font-size:24px;margin:38px 0 14px}
.bbody li{font-size:17px}
.bfig{margin:30px 0;border-radius:18px;overflow:hidden;border:1px solid var(--line)}
.bfig img{width:100%;display:block}
.bsrc{margin-top:40px;padding-top:20px;border-top:1px solid var(--line);color:var(--muted);font-size:14px}
.bsrc a{color:var(--accent);text-decoration:underline}
.bcta{margin-top:36px;background:var(--card);border:1px solid rgba(6,182,212,.3);border-radius:22px;padding:30px;display:grid;gap:10px;justify-items:start}
.bcta h3{font-size:24px;font-weight:500}
.bcta p{color:var(--muted)}
@media (max-width:980px){.bgrid{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.bgrid{grid-template-columns:1fr}}

/* typography: Playfair Display (tiêu đề) + Cormorant Garamond Italic (nhấn) + Be Vietnam Pro (nội dung, nhãn) */
h1,h2{font-family:var(--fd);font-weight:500;letter-spacing:-.015em;line-height:1.08}
h3{font-family:var(--fd);font-weight:500;letter-spacing:-.005em}
.it,h1 em,h2 em,h3 em{font-family:var(--fa);font-style:italic;font-weight:500;color:var(--accent);font-size:1.12em;letter-spacing:0;line-height:1}
.eyebrow{letter-spacing:.24em;font-size:12px}
.logo{font-family:var(--fd);font-weight:600;font-size:21px;letter-spacing:-.01em}
.logo .it{font-size:1.18em;margin-left:2px;color:var(--glow)}
.logo i{font-family:var(--fd)}
.step h3,.pcard h3,.ucard h3,.btx h3{font-family:var(--fd)}
.ucard .pr b,.uinfo .price b{font-family:var(--fd);font-weight:600}
.uinfo h1{font-family:var(--fd)}
/* khối chữ ở hero: THỦ THIÊM (Playfair) chồng chữ nghiêng Property (Cormorant) */
.hero .word{font-family:var(--fd);font-weight:600;letter-spacing:-.035em;color:rgba(255,255,255,.5);font-size:clamp(84px,17vw,270px);top:13%}
.hero .word .prop{position:absolute;right:3%;bottom:-.16em;font-family:var(--fa);font-style:italic;font-weight:500;letter-spacing:0;font-size:.42em;line-height:1;color:var(--glow);text-shadow:0 0 40px rgba(6,182,212,.6);-webkit-text-fill-color:var(--glow);opacity:0;animation:rise 1.2s var(--ease) 1.1s forwards}
.hero-bot p{font-family:var(--fa);font-style:italic;font-size:clamp(20px,1.7vw,26px);line-height:1.35;font-weight:500}
.phero h1{font-weight:500;letter-spacing:-.025em}
.phero .eyebrow{color:var(--glow)}
.blead,.sec-head p{font-family:var(--f)}
.bpost h1{font-family:var(--fd)}
@media (max-width:620px){.hero .word{font-size:15.5vw;top:14%}.hero .word .prop{font-size:.4em;bottom:-.3em}}

.about p.lead{font-family:var(--fd);font-weight:400;letter-spacing:-.01em;line-height:1.28}
.about p.lead em{font-family:var(--fa);font-style:italic;color:var(--muted);font-size:1.1em}
.marquee div{font-family:var(--fd);font-weight:500;letter-spacing:-.01em}
.marquee b{font-family:var(--fa)}
.facts b{font-family:var(--fd);font-weight:500}

.bfaq{margin-top:44px}.bfaq h2{font-size:26px;margin-bottom:12px}.bfaq details{border-bottom:1px solid var(--line);padding:16px 0}.bfaq summary{list-style:none;cursor:pointer;font-size:18px;display:flex;justify-content:space-between;gap:16px}.bfaq summary::-webkit-details-marker{display:none}.bfaq summary::after{content:'+';font-size:24px;line-height:1;transition:transform .3s}.bfaq details[open] summary::after{transform:rotate(45deg)}.bfaq details p{color:var(--muted);padding-top:10px}

/* ảnh hero giữ nguyên kích thước thật: không phóng, không lệch tầng để giữ độ nét */
.hero .bg,.phero .bg{transform:none!important;animation:none!important;image-rendering:auto}

/* hero banner = ảnh infographic nguyên khổ (có sẵn tiêu đề), không chữ đè, không cắt */
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.hero.ifc{height:auto;min-height:0;background:var(--bg)}
.ifcimg{display:block;width:100%;height:auto}
.hero.ifc .veil{background:linear-gradient(180deg,rgba(4,8,16,.6),rgba(4,8,16,0) 16%);pointer-events:none}
.ifc-strip{padding:30px 0 10px}
.ifc-strip .strip{display:grid;grid-template-columns:1.2fr 1fr;gap:40px;align-items:center}
.ifc-strip p{font-family:var(--fa);font-style:italic;font-weight:500;font-size:clamp(22px,2vw,30px);line-height:1.35;max-width:560px}
.ifc-strip .hero-card{display:grid;grid-template-columns:150px 1fr auto;gap:16px;align-items:center;padding:12px 16px 12px 12px}
.ifc-strip .hero-card .th{grid-template-columns:1fr;gap:0}
.ifc-strip .hero-card .th div:nth-child(2){display:none}
.ifc-strip .hero-card .th div{aspect-ratio:4/3}
.ifc-strip .hc-tx h3{margin:0;font-size:18px}
.ifc-strip .hc-tx small{margin:2px 0 0}
.ifc-strip .hero-card .btn{width:auto;padding:12px 18px}
@media (max-width:980px){.ifc-strip .strip{grid-template-columns:1fr;gap:22px}.ifc-strip .hero-card{grid-template-columns:110px 1fr}.ifc-strip .hero-card .btn{grid-column:1/-1;justify-content:center}}

/* ===== chữ chuyển động ===== */
.kstats{display:grid;grid-template-columns:repeat(4,1fr);gap:0;border:1px solid var(--line);border-radius:18px;background:var(--card);overflow:hidden;margin:34px 0 8px;position:relative}
.kstats::before,.kfeat .kcard::before{content:"";position:absolute;left:0;top:0;height:2px;width:0;background:var(--cyan);transition:width 1.6s var(--ease) .2s}
.kstats.on::before,.kcard.on::before{width:100%}
.kst{padding:24px 22px;border-right:1px solid var(--line)}
.kst:last-child{border:0}
.kn{font-family:var(--fd,'Playfair Display',serif);font-size:clamp(30px,4vw,46px);line-height:1.05;color:var(--ink)}
.kn u{display:block;text-decoration:none;color:var(--accent);font-family:var(--f);font-size:.36em;margin-top:8px;letter-spacing:.04em}
.kst p{color:var(--muted);font-size:13.5px;line-height:1.5;margin-top:10px}
.kfeat{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.kcard{position:relative;overflow:hidden;display:block;border:1px solid var(--line);background:var(--card);border-radius:18px;padding:26px 22px 54px;transition:border-color .4s,transform .5s var(--ease)}
.kcard:hover{border-color:rgba(34,211,238,.5);transform:translateY(-4px)}
.kcard small{display:block;color:var(--accent);letter-spacing:.1em;text-transform:uppercase;font-size:11.5px;margin-bottom:16px;min-height:4.6em;line-height:1.5}
.kcard p{color:var(--muted);font-size:13.5px;margin-top:10px}
.kcard .go{position:absolute;right:18px;bottom:16px;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);display:grid;place-items:center;transition:all .4s var(--ease)}
.kcard .go svg{width:14px;height:14px}
.kcard:hover .go{background:var(--cyan);color:#031018;border-color:var(--cyan);transform:rotate(-45deg)}
.ktl{margin:46px 0 10px}
.ktl h2{font-size:clamp(24px,2.8vw,34px);margin-bottom:22px}
.ktl ol{list-style:none;padding:0 0 0 26px;position:relative;margin:0}
.ktl ol::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:1px;background:linear-gradient(var(--accent),rgba(34,211,238,.15));transform:scaleY(0);transform-origin:top;transition:transform 1.6s var(--ease) .1s}
.ktl.on ol::before{transform:none}
.ktl li{position:relative;padding:0 0 26px;opacity:0;transform:translateX(-10px);transition:opacity .8s var(--ease),transform .8s var(--ease);transition-delay:calc(.35s + var(--i)*.38s)}
.ktl li::before{content:"";position:absolute;left:-26px;top:7px;width:11px;height:11px;border-radius:50%;background:var(--bg);border:2px solid var(--accent);transform:scale(0);transition:transform .5s var(--ease);transition-delay:calc(.3s + var(--i)*.38s)}
.ktl.on li{opacity:1;transform:none}
.ktl.on li::before{transform:scale(1)}
.ktl time{display:block;color:var(--accent);font-size:13px;letter-spacing:.08em;text-transform:uppercase;margin-bottom:3px}
.ktl li span{color:var(--ink);font-size:16px;line-height:1.55}
@media (max-width:980px){.kstats{grid-template-columns:1fr 1fr}.kst:nth-child(2){border-right:0}.kst:nth-child(-n+2){border-bottom:1px solid var(--line)}.kfeat{grid-template-columns:1fr 1fr}}
@media (max-width:560px){.kfeat{grid-template-columns:1fr}}
@media (prefers-reduced-motion:reduce){.kt .kl,.kscrub .kw,.kword .kl,.ktl li,.ktl li::before{opacity:1!important;transform:none!important;filter:none!important}.ktl ol::before{transform:none!important}.kstats::before,.kcard::before{width:100%!important}}
.shot .kt .kl,.shot .kscrub .kw,.shot .ktl li,.shot .ktl li::before{opacity:1!important;transform:none!important}.shot .ktl ol::before{transform:none!important}.shot .kstats::before,.shot .kcard::before{width:100%!important}

/* ===== kinetic typography v2 ===== */
.kw{display:inline-block;white-space:nowrap}
.kl{display:inline-block;will-change:transform}
.kl b{display:inline-block;font-weight:inherit;font-style:inherit;transform:translateY(calc(var(--s,0)*-9px)) scale(calc(1 + var(--s,0)*.22));text-shadow:0 0 calc(var(--s,0)*20px) rgba(34,211,238,calc(var(--s,0)*.95));transition:transform .18s,text-shadow .18s}
.kt{perspective:900px}
/* tên dự án: từng chữ rơi xuống chậm, mờ dần rồi nét */
.kt-drop .kl{transform:translateY(-.85em);opacity:0;filter:blur(8px);transition:transform 2s cubic-bezier(.16,1,.3,1),opacity 1.5s ease,filter 1.6s ease;transition-delay:calc(.25s + var(--k)*85ms)}
.kt-drop.on .kl{transform:none;opacity:1;filter:none}
/* lật 3D từng ký tự */
.kt-flip .kl{transform-origin:50% 100%;transform:rotateX(-105deg) translateY(.45em);opacity:0;transition:transform .9s var(--ease),opacity .6s var(--ease);transition-delay:calc(var(--k)*26ms)}
.kt-flip.on .kl{transform:none;opacity:1}
/* bung rộng rồi hội tụ về chỗ */
.kt-spread .kl{transform:translateX(calc((var(--k) - var(--n)/2)*.55em)) scale(1.9) rotate(calc((var(--k) - var(--n)/2)*2deg));opacity:0;filter:blur(10px);transition:transform 1.3s var(--ease),opacity .9s var(--ease),filter 1s var(--ease);transition-delay:calc(var(--k)*14ms)}
.kt-spread.on .kl{transform:none;opacity:1;filter:none}
/* trồi từ khe cắt, nghiêng rồi đứng thẳng */
.kt-rise .kw{overflow:hidden;vertical-align:bottom;padding:0 .06em .14em;margin:0 -.06em}
.kt-rise .kl{transform:translateY(112%) skewY(9deg);opacity:0;transition:transform 1s var(--ease),opacity .7s var(--ease);transition-delay:calc(var(--k)*22ms)}
.kt-rise.on .kl{transform:none;opacity:1}
/* giải mã */
.kt-scr .kl{opacity:0;transition:opacity .25s linear;transition-delay:calc(var(--k)*22ms)}
.kt-scr.on .kl{opacity:1}
.kt-scr.scrambling .kl b{color:var(--accent);text-shadow:0 0 14px rgba(34,211,238,.55)}
.kt-scr .kl b{transition:color .6s,text-shadow .6s,transform .18s}
/* đoạn dẫn: sáng dần theo cuộn */
.kscrub .kw{opacity:calc(.14 + var(--o,0)*.86);filter:blur(calc((1 - var(--o,0))*2.5px));transition:none;margin-right:.0em}
.kscrub .kl b{transform:none;text-shadow:none}
/* dải chữ viền khổng lồ chạy theo cuộn */
.kmq{overflow:hidden;padding:36px 0;border-block:1px solid var(--line);background:var(--bg);position:relative}
.kmq>div{display:flex;gap:.5em;white-space:nowrap;width:max-content;font-family:var(--fd,'Playfair Display',serif);font-size:clamp(54px,11vw,150px);line-height:1.05;will-change:transform}
.kmq>div:nth-child(1) span{color:transparent;-webkit-text-stroke:1.5px rgba(34,211,238,.75)}
.kmq>div:nth-child(2){margin-top:6px}
.kmq>div:nth-child(2) span{color:rgba(226,232,240,.92);font-style:italic}
.kmq b{color:var(--cyan);font-size:.4em;align-self:center;font-weight:400}
/* màn chữ khổng lồ ghim theo cuộn */
.kstage{height:calc(var(--n)*36vh + 100vh);position:relative}
.kpin{position:sticky;top:0;height:100vh;display:flex;align-items:center;overflow:hidden}
.kpin .wrap{position:relative}
.kwords{position:relative;height:clamp(150px,30vw,330px);margin:22px 0 10px;perspective:1100px}
.kword{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:center;pointer-events:none}
.kword .ttl{font-family:var(--fd,'Playfair Display',serif);font-size:clamp(50px,13vw,190px);line-height:1;font-weight:500;letter-spacing:-.01em;white-space:nowrap}
.kword:nth-child(even) .ttl{color:transparent;-webkit-text-stroke:2px var(--accent);font-style:italic}
.kword .kl{transform-origin:50% 100%;transform:translateY(70%) rotateX(-85deg);opacity:0;transition:transform .8s var(--ease),opacity .5s var(--ease);transition-delay:calc(var(--k)*34ms)}
.kword.is-act .kl{transform:none;opacity:1}
.kword.is-past .kl{transform:translateY(-70%) rotateX(85deg);opacity:0;transition-delay:calc(var(--k)*18ms)}
.kword p{margin:14px 0 0;color:var(--muted);font-size:clamp(15px,1.6vw,19px);opacity:0;transform:translateY(12px);transition:opacity .7s var(--ease) .35s,transform .7s var(--ease) .35s}
.kword.is-act p{opacity:1;transform:none}
.kfoot{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;margin-top:28px}
.kdots{display:flex;gap:10px}
.kdots i{width:26px;height:3px;border-radius:3px;background:var(--line);transition:background .4s,width .5s var(--ease)}
.kdots i.on{background:var(--accent);width:56px}
/* số lăn */
.od{display:inline-block;line-height:1;vertical-align:bottom}
.oc{display:inline-block;height:1em;overflow:hidden;vertical-align:bottom}
.oi{display:block;transform:translateY(0);transition:transform 2.2s cubic-bezier(.16,.84,.24,1);transition-delay:calc(var(--c)*.14s + .15s)}
.oi i{display:block;height:1em;line-height:1;font-style:normal}
.os{display:inline-block;line-height:1}
.on .oi{transform:translateY(calc(var(--t)*-1em))}
.kn{line-height:1.05}
@media (prefers-reduced-motion:reduce){.kt .kl,.kscrub .kw,.kword .kl{opacity:1!important;transform:none!important;filter:none!important}.kstage{height:auto}.kpin{position:static;height:auto;padding:60px 0}.kwords{height:auto}.kword{position:static;margin-bottom:24px}.kword p{opacity:1;transform:none}.oi{transform:translateY(calc(var(--t)*-1em))!important}}
@media (max-width:640px){.kword:nth-child(even) .ttl{-webkit-text-stroke:1.2px var(--accent)}.kmq>div{font-size:clamp(46px,16vw,90px)}}
.shot .kt .kl,.shot .kscrub .kw,.shot .kword .kl{opacity:1!important;transform:none!important;filter:none!important}.shot .oi{transform:translateY(calc(var(--t)*-1em))!important}
@media (max-width:980px){.kcard small{min-height:0}}

.hero.team{padding:112px 0 6px!important}
.teamfig{margin:0;border-radius:22px;overflow:hidden;border:1px solid var(--line);box-shadow:0 40px 100px -34px rgba(6,182,212,.4);background:#fff}
.teamimg{display:block;width:100%;height:auto}
@media (max-width:640px){.hero.team{padding-top:84px!important}.teamfig{border-radius:14px}}

.kcard{padding:0 0 64px}
.kcard .kim{aspect-ratio:16/9;overflow:hidden;border-bottom:1px solid var(--line);background:var(--sand)}
.kcard .kim img{width:100%;height:100%;object-fit:cover;display:block;transition:transform 1.2s var(--ease)}
.kcard:hover .kim img{transform:scale(1.06)}
.kcard .kbody{padding:20px 22px 0}
.kcard small{min-height:0!important;margin-bottom:12px!important}

/* ===== hero vòng xoay infographic ===== */
.hero.hcar{height:auto;min-height:0;padding:104px 0 28px!important;background:transparent;overflow:visible}
.hcaps{position:relative;height:clamp(64px,8.4vw,112px);margin-top:10px;perspective:1000px}
.hcaps .kword{position:absolute;inset:0;display:flex;align-items:center}
.hcaps .kword .ttl{font-size:clamp(28px,5.2vw,72px);color:var(--ink);-webkit-text-stroke:0;font-style:normal;white-space:normal;line-height:1.05}
.hcaps .kword:nth-child(even) .ttl{color:var(--ink);-webkit-text-stroke:0;font-style:normal}
.hcaps .kword:nth-child(3n+2) .ttl{color:var(--accent)}
.hstage{position:relative;height:clamp(250px,36vw,520px);margin-top:18px;perspective:1700px;perspective-origin:50% 40%;touch-action:pan-y;outline:none}
.hs{position:absolute;left:50%;top:50%;width:min(62%,860px);aspect-ratio:3/2;display:block;border-radius:16px;overflow:hidden;background:var(--card);border:1px solid var(--line);box-shadow:0 40px 90px -30px rgba(0,0,0,.8);transition:transform .85s var(--ease),opacity .7s var(--ease);will-change:transform}
.hs img{width:100%;height:100%;object-fit:contain;display:block;pointer-events:none;-webkit-user-drag:none}
.hs.act{border-color:rgba(34,211,238,.55);box-shadow:0 40px 100px -28px rgba(6,182,212,.5),0 0 0 1px rgba(34,211,238,.25)}
.hs:not(.act){filter:brightness(.55) saturate(.8);cursor:pointer}
.hctl{display:flex;align-items:center;gap:16px;margin-top:22px}
.hb{width:44px;height:44px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--ink);cursor:pointer;display:grid;place-items:center;transition:all .35s var(--ease);flex:none}
.hb svg{width:15px;height:15px;transform:rotate(-135deg)}
.hb.nx svg{transform:rotate(45deg)}
.hb:hover{background:var(--cyan);color:#031018;border-color:var(--cyan)}
.hdots{display:flex;gap:8px;flex:1;max-width:420px}
.hdots button{flex:1;height:18px;background:none;border:0;padding:0;cursor:pointer;display:flex;align-items:center}
.hdots i{display:block;width:100%;height:3px;border-radius:3px;background:var(--line);position:relative;overflow:hidden}
.hdots i::after{content:"";position:absolute;inset:0;background:var(--accent);transform:scaleX(0);transform-origin:left}
.hdots button.on i::after{transform:scaleX(1)}
.hdots button.run i::after{animation:hfill 3s linear forwards}
@keyframes hfill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
.hgo{margin-left:auto}
@media (max-width:700px){.hero.hcar{padding-top:84px!important}.hs{width:76%}.hstage{height:clamp(210px,62vw,320px)}.hgo{display:none}.hdots{max-width:none}}
@media (prefers-reduced-motion:reduce){.hs{transition:none}.hdots button.run i::after{animation:none;transform:scaleX(1)}}
.shot .hs{transition:none!important}

/* ===== chuyển trang mượt + số hiện nhẹ ===== */
@view-transition{navigation:auto}
::view-transition-old(root){animation:vtout .2s ease both}
::view-transition-new(root){animation:vtin .3s ease .05s both}
@keyframes vtout{to{opacity:0}}
@keyframes vtin{from{opacity:0}}
.curtain{display:none!important}
.kst .kn,.kcard .kn{opacity:0;transform:translateY(14px);transition:opacity 1.1s var(--ease),transform 1.3s var(--ease);transition-delay:calc(.15s + var(--i,0)*.12s)}
.kst:nth-child(2) .kn{--i:1}.kst:nth-child(3) .kn{--i:2}.kst:nth-child(4) .kn{--i:3}
.kstats.on .kn,.kcard.on .kn{opacity:1;transform:none}
.kst p{opacity:0;transition:opacity 1.2s var(--ease) .5s}
.kstats.on .kst p{opacity:1}
@media (prefers-reduced-motion:reduce){.kst .kn,.kcard .kn,.kst p{opacity:1!important;transform:none!important}}
.shot .kst .kn,.shot .kcard .kn,.shot .kst p{opacity:1!important;transform:none!important}
