/* Dìn Ký v2 styles. Base layout from the shipped demo; hero + tokens per docs/motion-map.md */
:root{--ease-premium:cubic-bezier(.22,.75,.18,1);--ease-snap:cubic-bezier(.2,.9,.25,1);--duration-fast:260ms;--duration-medium:700ms;--duration-slow:1200ms;--space-section:clamp(5rem,12vw,12rem)}

:root{--wall:#f3b80f;--booth:#f05a1a;--lantern:#c8102e;--slat:#2b1d16;--cream:#fbf4e6;--ink:#20140f;--muted:#6f5a4e}
*{box-sizing:border-box;margin:0}
body{font:400 16px/1.55 "Be Vietnam Pro",system-ui,sans-serif;color:var(--ink);background:var(--cream);overflow-x:hidden}
a{color:inherit}img,video{display:block;max-width:100%}
.wrap{max-width:1120px;margin:0 auto;padding:0 20px}
.k{font:700 12px/1.2 "Be Vietnam Pro";letter-spacing:.18em;text-transform:uppercase;color:var(--lantern)}
h2{font:900 clamp(34px,8.6vw,62px)/1.04 "Playfair Display",serif;letter-spacing:-.015em;margin-top:10px}
section{padding:68px 0}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:50px;padding:0 22px;border-radius:12px;font-weight:700;text-decoration:none;border:0;cursor:pointer;font-size:16px;transition:transform .15s}
.btn:active{transform:scale(.97)}.btn.go{background:#c2410c;color:#fff}.btn.line{border:1.5px solid currentColor;background:none;color:inherit}.btn.wall{background:var(--wall);color:var(--slat)}
/* top */
.top{position:absolute;inset:0 0 auto;z-index:5;color:#fff}
.top .wrap{display:flex;align-items:center;height:64px;gap:12px;justify-content:flex-end}
.lang{display:flex;border:1.5px solid rgba(255,255,255,.75);border-radius:99px;overflow:hidden;font:700 13px "Be Vietnam Pro";background:rgba(0,0,0,.2)}
.lang button{all:unset;cursor:pointer;padding:6px 11px}.lang button[aria-pressed=true]{background:#fff;color:var(--slat)}
/* hero */
.hero{position:relative;height:100svh;min-height:600px;max-height:1000px;overflow:hidden;background:var(--slat);color:#fff}
.hero .still,.hero video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.hero::after{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(20,12,9,.45) 0,rgba(20,12,9,0) 22%,rgba(20,12,9,0) 42%,rgba(20,12,9,.88) 100%)}
.hero .copy{position:absolute;inset:auto 0 0;z-index:2;padding-bottom:max(30px,env(safe-area-inset-bottom))}
.brand{display:flex;align-items:center;gap:14px;margin:12px 0}
.brand img{width:76px;height:auto;filter:drop-shadow(0 8px 18px rgba(0,0,0,.4))}
h1{font:900 clamp(56px,16vw,128px)/.92 "Playfair Display",serif;letter-spacing:-.01em}
h1 small{display:block;font:700 13px/1 "Be Vietnam Pro";letter-spacing:.2em;text-transform:uppercase;color:var(--wall);margin-bottom:10px}
.lede{max-width:36ch;font-size:18px;opacity:.95}
.ctas{display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}
.open{display:inline-flex;align-items:center;gap:8px;font-size:14px;font-weight:500;padding:6px 12px;border-radius:99px;background:rgba(0,0,0,.35);backdrop-filter:blur(6px)}
.open i{width:8px;height:8px;border-radius:50%;background:#7bd36b}.open.closed i{background:#ff6b5f}
/* late strip */
.late{background:var(--wall);color:var(--slat);padding:26px 0}
.late .wrap{display:grid;gap:6px}
.late b{font:900 clamp(26px,6.5vw,44px)/1.05 "Playfair Display",serif}
/* bowl builder */
.pick{background:var(--slat);color:var(--cream)}
.pgrid{display:grid;gap:26px;margin-top:22px}
.styles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.styles button{all:unset;cursor:pointer;text-align:center;padding:14px 6px;border-radius:14px;border:1.5px solid rgba(243,184,15,.4);font:700 14px/1.2 "Be Vietnam Pro"}
.styles button small{display:block;font-weight:400;opacity:.7;font-size:12px;margin-top:4px}
.styles button[aria-pressed=true]{background:var(--wall);color:var(--slat);border-color:var(--wall)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px}
.chips button{all:unset;cursor:pointer;padding:9px 14px;border-radius:99px;background:rgba(251,244,230,.09);font-size:14px}
.chips button[aria-pressed=true]{background:#c2410c;color:#fff}
.ticket{display:grid;grid-template-columns:96px 1fr;gap:16px;align-items:center;background:var(--cream);color:var(--ink);border-radius:18px;padding:14px}
.ticket .ph{width:96px;height:96px;border-radius:12px;background:#f1dfbf center/cover;display:grid;place-items:center;font:900 26px "Playfair Display";color:var(--lantern)}
.ticket .no{font:700 12px "Be Vietnam Pro";letter-spacing:.12em;color:var(--lantern)}
.ticket .nm{font:800 20px/1.2 "Playfair Display"}.ticket .pr{font-weight:700;margin-top:4px}
.ticket a{grid-column:1/-1}
/* menu */
.tabs{display:flex;gap:8px;overflow-x:auto;padding:4px 0 10px;margin-top:20px;scrollbar-width:none}.tabs::-webkit-scrollbar{display:none}
.tabs button{all:unset;flex:none;cursor:pointer;padding:9px 14px;border-radius:99px;border:1.5px solid #e2cfae;font:500 14px "Be Vietnam Pro";white-space:nowrap}
.tabs button[aria-pressed=true]{background:var(--slat);color:var(--cream);border-color:var(--slat)}
.mlist{list-style:none;padding:0;margin-top:6px;columns:1}
.mlist li{display:flex;gap:12px;align-items:center;padding:12px 0;border-bottom:1px dashed #e0cba8;break-inside:avoid}
.mlist img{width:52px;height:52px;border-radius:10px;object-fit:cover;flex:none}
.mlist .n{flex:1}.mlist .p{font-weight:700;white-space:nowrap}
.fine{font-size:13px;color:var(--muted);margin-top:14px}
/* reviews */
.rev{background:#f6e7c8}
.scores{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:20px}
.score{background:#fff;border-radius:16px;padding:16px}
.score .big{font:900 44px/1 "Playfair Display",serif}.score .big small{font:500 13px "Be Vietnam Pro";color:var(--muted);display:block;margin-top:6px}
.bars{display:grid;gap:3px;font-size:11px;margin-top:10px}
.bars div{display:grid;grid-template-columns:10px 1fr 28px;gap:6px;align-items:center}
.bars b{height:6px;border-radius:9px;background:#f1e7d6;position:relative;overflow:hidden}.bars b i{position:absolute;inset:0 auto 0 0;background:var(--booth);border-radius:9px}
.quotes{display:grid;gap:12px;margin-top:22px}
.quotes figure{background:var(--cream);border-radius:16px;padding:18px}
.quotes blockquote{font:800 18px/1.4 "Playfair Display",serif}
.quotes figcaption{font-size:13px;color:var(--muted);margin-top:10px}
/* regulars */
.reg{background:var(--lantern);color:#fff}
.reg form{display:grid;gap:12px;margin-top:22px;max-width:520px}
.reg label{font-size:14px;font-weight:500;display:grid;gap:6px}
.reg input[type=text],.reg input[type=tel],.reg input[type=email]{font:inherit;padding:14px;border-radius:12px;border:0;color:var(--ink);width:100%}
.reg .consent{display:grid;grid-template-columns:22px 1fr;gap:10px;font-size:13px;line-height:1.45;font-weight:400}
.reg .consent input{width:20px;height:20px;margin-top:2px;accent-color:var(--wall)}
.reg .ok{background:rgba(0,0,0,.2);border-radius:14px;padding:16px;display:none;margin-top:20px}
.perks{display:grid;gap:8px;margin-top:16px;padding:0;list-style:none}.perks li::before{content:"— ";opacity:.7}
/* visit */
.vgrid{display:grid;gap:22px;margin-top:22px}
.hours{width:100%;border-collapse:collapse;font-size:15px}.hours td{padding:9px 0;border-bottom:1px solid #eadbbf}.hours td+td{text-align:right}
.hours tr.today td{font-weight:700;color:var(--lantern)}
.map{width:100%;height:300px;border:0;border-radius:18px}
footer{background:var(--slat);color:rgba(251,244,230,.55);font-size:12px;padding:28px 0 110px}footer a{color:rgba(251,244,230,.85)}
.dock{position:fixed;left:10px;right:10px;bottom:max(10px,env(safe-area-inset-bottom));z-index:30;display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:6px;padding:7px;border-radius:18px;background:rgba(43,29,22,.95);backdrop-filter:blur(8px);color:#fff;transform:translateY(140%);transition:transform .35s}
.dock.show{transform:none}.dock .btn{min-height:46px;padding:0 10px;font-size:15px}
@media (min-width:880px){
 .hero::before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(90deg,rgba(20,12,9,.65) 0,rgba(20,12,9,.2) 48%,rgba(20,12,9,0) 70%)}
 .late .wrap{grid-template-columns:1.2fr 1fr;align-items:center}
 .pgrid{grid-template-columns:1fr 1fr;align-items:start}
 .menu-wrap .mlist{columns:2;column-gap:48px}
 .rgrid{display:grid;grid-template-columns:.85fr 1.15fr;gap:48px;align-items:start}.quotes{grid-template-columns:1fr 1fr;margin-top:0}
 .vgrid{grid-template-columns:1fr 1.3fr}.map{height:380px}
 .dock{display:none}footer{padding-bottom:28px}
}
/* hero (v2): poster -> real-footage video -> held land frame -> centered HTML logo reveal -> copy */
.hero .still.end{opacity:0;transition:opacity var(--duration-medium) var(--ease-premium)}
.hero video{opacity:0;transition:opacity var(--duration-fast) linear}.hero video.on{opacity:1}
.mark{position:absolute;z-index:2;left:50%;top:40%;transform:translate(-50%,-50%);display:grid;justify-items:center;gap:10px;text-align:center;pointer-events:none}
.mark img{width:clamp(84px,18vw,128px);height:auto;filter:drop-shadow(0 10px 24px rgba(0,0,0,.45))}
.mark .word{font:900 clamp(60px,17vw,168px)/.9 "Playfair Display",serif;white-space:nowrap;color:#fff;text-shadow:0 6px 30px rgba(0,0,0,.45);padding:.08em .06em .14em}
.mark .rule{width:min(240px,50vw);height:2px;background:var(--wall);transform-origin:50% 50%}
.eyebrow{font:700 13px/1.3 "Be Vietnam Pro",sans-serif;letter-spacing:.2em;text-transform:uppercase;color:var(--wall);margin-bottom:8px}
.replay{all:unset;cursor:pointer;position:absolute;z-index:3;right:12px;top:64px;min-width:44px;min-height:44px;display:none;place-items:center;font-size:12px;font-weight:700;letter-spacing:.08em;padding:0 12px;border-radius:99px;background:rgba(0,0,0,.35);color:#fff;box-sizing:border-box}
.replay.show{display:grid}
.lang button{min-height:44px;min-width:44px;box-sizing:border-box;display:grid;place-items:center;padding:0 12px}
.tabs button,.chips button{min-height:44px;box-sizing:border-box;display:inline-flex;align-items:center}
a:focus-visible,button:focus-visible,input:focus-visible{outline:3px solid var(--wall);outline-offset:2px}
@media (min-width:880px){.mark{top:42%}}
/* JS adds .motion only when motion is allowed; without it everything is visible (plain page). */
.motion:not(.gsap-ready) .mark>*,.motion:not(.gsap-ready) [data-r]{opacity:0}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
