:root{--red:#C8141B;--deep:#8F0D13;--ink:#1B1214;--mute:#6B5B5E;--paper:#fff;--ground:#faf7f6;--line:#e6dddd;--soon:#9b8f91}
@media (prefers-color-scheme:dark){:root{--ink:#f4eded;--mute:#b8a9ab;--paper:#241a1c;--ground:#171112;--line:#3a2c2f;--soon:#6f6264}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--ground);color:var(--ink);font:400 16px/1.55 "Be Vietnam Pro",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.wrap{max-width:1040px;width:100%;margin:0 auto;padding-left:max(20px,env(safe-area-inset-left));padding-right:max(20px,env(safe-area-inset-right))}

/* khối đỏ phía trên: lụa đỏ mềm, nếp gấp mờ */
.hero{background:#c8141b url(/silk.svg) center/cover no-repeat;color:#fff;padding:22px 0 clamp(72px,9vw,92px)}
.brand{display:inline-flex;align-items:center;gap:14px;color:#fff;text-decoration:none}
.brand:focus-visible{outline:3px solid #fff;outline-offset:6px}
.brand-row{display:flex;align-items:center;gap:16px;flex-wrap:wrap}
.who{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-left:auto;font-size:15px}
.who a,.who button{color:#fff;font:inherit;font-weight:600;background:transparent;border:1px solid rgba(255,255,255,.65);border-radius:2px;min-height:40px;padding:0 16px;display:inline-flex;align-items:center;text-decoration:none;cursor:pointer}
.who a:hover,.who button:hover{background:rgba(255,255,255,.18)}
.who a:focus-visible,.who button:focus-visible{outline:3px solid #fff;outline-offset:3px}
.word{display:flex;flex-direction:column;line-height:1.05}
.word b{font-size:28px;font-weight:800;letter-spacing:-.01em}
.word small{font-size:12px;font-weight:500;letter-spacing:.22em;opacity:.9;margin-top:4px}
h1{margin:clamp(28px,5vw,48px) 0 0;font-weight:800;font-size:clamp(34px,7vw,64px);line-height:1.05;letter-spacing:-.02em;max-width:20ch}
.sub{margin:14px 0 0;font-size:clamp(16px,2.2vw,19px);opacity:.92;max-width:40ch}

main{flex:1;margin-top:-56px;padding-bottom:40px}
.apps{list-style:none;margin:0;padding:0;display:grid;gap:20px;grid-template-columns:repeat(auto-fill,minmax(min(100%,230px),1fr))}
.app{display:flex;flex-direction:column;align-items:flex-start;gap:6px;height:100%;padding:26px 22px 24px;background:var(--paper);border:1px solid var(--line);border-radius:16px;color:inherit;text-decoration:none;box-shadow:0 10px 28px rgba(60,10,14,.12);transition:transform .18s ease,box-shadow .18s ease}
a.app:hover{transform:translateY(-3px);box-shadow:0 16px 34px rgba(60,10,14,.2)}
a.app:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
.ico{display:block;width:88px;height:88px;margin-bottom:14px;border-radius:22px;overflow:hidden;box-shadow:0 8px 18px color-mix(in srgb,var(--tone) 45%,transparent);transition:transform .18s ease}
a.app:hover .ico{transform:scale(1.05)}
.ico img,.ico .mono{display:block;width:100%;height:100%}
.ico .mono{display:grid;place-items:center;background:linear-gradient(150deg,var(--tone),color-mix(in srgb,var(--tone) 55%,#000));color:#fff;font-weight:800;font-size:34px;letter-spacing:-.02em}
.nm{font-size:21px;font-weight:700;line-height:1.2}
.ds{color:var(--mute);font-size:14.5px;line-height:1.5;max-width:34ch}
.tag{margin-top:auto;padding-top:10px;font-size:13px;font-weight:600;color:var(--tone)}
.app.soon{box-shadow:none;background:transparent;border-style:dashed}
.app.soon .ico{filter:grayscale(.9);opacity:.6;box-shadow:none}
.app.soon .tag{color:var(--soon);font-weight:500}
.gate{grid-column:1/-1;max-width:520px;padding:28px 26px}
.gate .nm{font-size:24px}
.ctas{display:flex;gap:12px;flex-wrap:wrap;margin-top:16px}
.cta{display:inline-flex;align-items:center;min-height:46px;padding:0 22px;border-radius:8px;background:var(--red);color:#fff;font-weight:600;font-size:15px;text-decoration:none;border:1px solid var(--red)}
.cta:hover{background:var(--deep);border-color:var(--deep)}
.cta.alt{background:transparent;color:var(--red)}.cta.alt:hover{background:var(--ground);color:var(--deep)}
.cta:focus-visible{outline:3px solid var(--ink);outline-offset:3px}
footer{padding-top:20px;padding-bottom:32px;color:var(--mute);font-size:14px;border-top:1px solid var(--line)}
.err{padding:16px;border:1px solid var(--line);border-radius:4px;background:var(--paper)}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}


.brand{background:#fff;padding:8px 16px;border-radius:4px;box-shadow:0 6px 18px rgba(60,5,10,.25)}.brand img{display:block;height:clamp(40px,7vw,58px);width:auto}

.dlg{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:16px;background:rgba(27,18,20,.55)}.dlg-box{width:100%;max-width:420px;background:var(--paper);border-radius:16px;padding:26px;box-shadow:0 24px 60px rgba(20,8,10,.35)}.dlg-box h2{margin:0 0 8px;font-size:21px;line-height:1.25}.dlg-box p{margin:0 0 20px;color:var(--mute)}

/* ô ứng dụng gọn: biểu tượng bên trái, tên và mô tả bên phải */
.apps{gap:12px;grid-template-columns:repeat(auto-fill,minmax(min(100%,238px),1fr))}
.app{display:grid;grid-template-columns:56px 1fr;grid-template-rows:auto auto;column-gap:14px;row-gap:2px;align-items:center;align-content:center;padding:14px 16px;border-radius:14px;box-shadow:0 6px 18px rgba(60,10,14,.1)}
.app .ico{grid-row:1/4;width:56px;height:56px;margin:0;border-radius:14px;box-shadow:0 4px 10px color-mix(in srgb,var(--tone) 40%,transparent)}
.app .ico .mono{font-size:22px}
.app .nm{font-size:17px;align-self:end}
.app .ds{font-size:13px;line-height:1.4;max-width:none;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;align-self:start}
.app .tag{display:none}
.app.soon .tag{display:block;margin:0;padding:0;font-size:12px;grid-column:2}
a.app:hover{transform:translateY(-2px)}
main{margin-top:-40px}
