:root{--ground:#e0d9f0;--paper:#fdfcff;--ink:#1c1330;--mut:#574d70;--vio:#45218f;--vio2:#5b2fc0;--onv:#f5f0ff;--onvm:#d9ccf8;--lilac:#ddd3f6;--lime:#c9f26a;--dark:#171028;--line:rgba(28,19,48,.28);
--disp:"Red Rose","Rethink Sans",system-ui,sans-serif;--body:"Rethink Sans",system-ui,-apple-system,"Segoe UI",sans-serif;--mono:"Xanh Mono",ui-monospace,"SFMono-Regular",Menlo,Consolas,monospace}
*,*::before,*::after{box-sizing:border-box}
[hidden]{display:none!important}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ground) radial-gradient(#cabfe6 1px,transparent 1.3px) 0 0/22px 22px;color:var(--ink);font:400 1.0625rem/1.62 var(--body);overflow-x:hidden}
img,svg{max-width:100%}
a{color:var(--vio2);text-underline-offset:3px}
a:hover{color:var(--ink)}
h1,h2,h3{font-family:var(--disp);line-height:1.08;margin:0;letter-spacing:-.01em;overflow-wrap:break-word}
p{margin:0 0 1em}
:focus-visible{outline:3px solid var(--ink);outline-offset:2px;border-radius:4px}
.violet :focus-visible,.dark :focus-visible{outline-color:var(--lime)}
.skip{position:absolute;left:12px;top:-80px;z-index:99;background:var(--ink);color:#fff;padding:12px 18px;border-radius:999px}
.skip:focus{top:12px;color:#fff}

/* pill header */
.top{position:sticky;top:10px;z-index:50;padding:0 16px;margin-top:10px}
.pill{position:relative;display:flex;align-items:center;gap:6px;max-width:1120px;margin:0 auto;padding:7px 7px 7px 18px;background:var(--paper);border:1.5px solid var(--ink);border-radius:999px;box-shadow:0 14px 30px -16px rgba(50,24,110,.55)}
.logo{display:inline-flex;align-items:center;gap:9px;min-height:44px;font:700 1.12rem/1 var(--disp);color:var(--ink);text-decoration:none;white-space:nowrap}
.pill .logo{padding-right:16px;margin-right:4px;border-right:2px dotted var(--line)}
.mark{flex:none}
.nav{display:flex;align-items:center;gap:2px;margin-left:auto;margin-right:6px}
.nav a{display:inline-flex;align-items:center;min-height:44px;padding:0 14px;border-radius:999px;color:var(--ink);text-decoration:none;font-weight:500;font-size:.98rem}
.nav a:hover{background:var(--ground)}
.nav a[aria-current]{background:var(--lilac);font-weight:700}
.burger{display:none;flex:none;width:44px;height:44px;padding:0;border:1.5px solid var(--ink);border-radius:50%;background:var(--paper);cursor:pointer;flex-direction:column;align-items:center;justify-content:center;gap:4px}
.burger i{display:block;width:18px;height:2px;background:var(--ink);border-radius:2px}

/* buttons */
.btn,form[data-support] button{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:46px;padding:0 22px;border:1.5px solid var(--ink);border-radius:999px;background:var(--lime);color:var(--ink);font:700 1rem/1.1 var(--body);text-decoration:none;cursor:pointer;transition:transform .15s,background .15s;text-align:center}
.btn:hover,form[data-support] button:hover{background:#dcfb8e;color:var(--ink);transform:translateY(-1px)}
.btn.ghost{background:transparent;color:inherit;border-color:currentColor}
.btn.ghost:hover{background:rgba(255,255,255,.14);color:inherit}
.paper .btn.ghost:hover,.form .btn.ghost:hover{background:var(--ground)}
.btn.sm{min-height:44px;padding:0 15px;font-size:.92rem}
.btn.big{min-height:54px;padding:0 30px;font-size:1.06rem}
.acts{display:flex;flex-wrap:wrap;gap:12px}

/* layout */
main{max-width:1152px;margin:0 auto;padding:26px 16px 0}
.blk{margin-top:60px}
.narrow{max-width:780px;margin-left:auto;margin-right:auto}

/* the ticket */
.tk,.form{--r:14px;position:relative;min-width:0;padding:32px;background:var(--paper);color:var(--ink);
-webkit-mask:radial-gradient(var(--r) at var(--r) var(--r),#0000 calc(100% - .6px),#000) calc(var(--r)*-1) calc(var(--r)*-1);
mask:radial-gradient(var(--r) at var(--r) var(--r),#0000 calc(100% - .6px),#000) calc(var(--r)*-1) calc(var(--r)*-1)}
.tk::before,.form::before{content:"";position:absolute;inset:9px;border:1px solid currentColor;opacity:.2;pointer-events:none}
.tk.violet{background:var(--vio);color:var(--onv)}
.tk.violet a:not(.btn){color:var(--lime)}
.tk.lilac{background:var(--lilac)}
.tk.dark{background:var(--dark);color:#ece6fc}
.sn{position:absolute;right:15px;top:50%;transform:translateY(-50%);writing-mode:vertical-rl;font:400 .72rem/1 var(--mono);letter-spacing:.28em;opacity:.6;pointer-events:none}
.st{font:400 .8rem/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase;margin:0 0 12px}
.sub{font-size:.92rem;margin:14px 0 0;color:var(--mut)}
.violet .sub{color:var(--onvm)}
.violet .paper .sub{color:var(--mut)}

/* section heading */
.sec-h{display:flex;align-items:baseline;gap:14px;margin:0 6px 22px}
.sec-h .no{font:400 .95rem/1 var(--mono);color:var(--vio2)}
.sec-h h2{font-size:clamp(1.55rem,3.1vw,2.2rem);font-weight:700}
.sec-h i{flex:1;min-width:20px;border-bottom:3px dotted var(--line);transform:translateY(-5px)}

/* dotted-leader tally */
.tally{margin:0}
.ln{display:flex;align-items:baseline;gap:8px;padding:8px 0}
.ln dt{max-width:58%;font-size:.95rem}
.ln i{flex:1;min-width:14px;border-bottom:2px dotted currentColor;opacity:.4;transform:translateY(-4px)}
.ln dd{margin:0;max-width:56%;text-align:right;font:400 1.08rem/1.25 var(--mono)}
.bigt .ln{padding:13px 0}
.bigt .ln dd{font-size:1.5rem;color:var(--vio2)}
.bigt .ln dt{font-size:1.02rem}

/* hero */
.hero-t{display:grid;grid-template-columns:minmax(0,1.38fr) minmax(0,.9fr);gap:44px;align-items:center;padding:60px 62px 60px 50px}
.eyebrow{display:inline-block;font:400 .82rem/1.3 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--lime);margin:0 0 18px;padding:6px 12px;border:1px dashed rgba(201,242,106,.6);border-radius:999px}
h1{font-size:clamp(2.05rem,4.7vw,3.55rem);font-weight:700;letter-spacing:-.02em}
.lead{font-size:1.14rem;line-height:1.55;margin:20px 0 0;max-width:62ch;color:var(--onvm)}
.bul{list-style:none;margin:22px 0 28px;padding:0}
.bul li{position:relative;padding:7px 0 7px 30px}
.bul li::before{content:"";position:absolute;left:2px;top:14px;width:14px;height:14px;border-radius:50%;background:var(--lime);box-shadow:inset 0 0 0 4px var(--vio)}
.stub{padding:28px 26px;transform:rotate(1.2deg)}
.stub .st{color:var(--vio2);padding-bottom:12px;border-bottom:2px dotted var(--line)}
.stub .sub{padding-top:12px;border-top:2px dotted var(--line)}

/* code */
.codet{padding:22px 24px 24px}
.codetabs{display:flex;gap:6px;margin-bottom:14px;padding-bottom:12px;border-bottom:2px dotted rgba(236,230,252,.3);overflow-x:auto}
.codetabs button{min-height:44px;padding:0 18px;border:1.5px solid rgba(236,230,252,.4);border-radius:999px;background:transparent;color:#ece6fc;font:400 .95rem/1 var(--mono);cursor:pointer}
.codetabs button[aria-selected="true"]{background:var(--lime);border-color:var(--lime);color:var(--ink)}
pre.code{position:relative;margin:0;padding:6px 2px 8px;overflow-x:auto;max-width:100%;font:400 .95rem/1.65 var(--mono);color:#ece6fc;tab-size:2;-webkit-overflow-scrolling:touch}
pre.code code{display:block;font:inherit;background:none;padding:0;color:inherit;border:0}
pre.code .k{color:var(--lime)}pre.code .s{color:#c3aeff}pre.code .c{color:#9a8fb8}
.copy{display:flex;align-items:center;width:fit-content;position:sticky;left:0;min-height:44px;margin:0 0 10px;padding:0 14px;border:1.5px solid rgba(236,230,252,.45);border-radius:999px;background:var(--dark);color:#ece6fc;font:400 .85rem/1 var(--mono);cursor:pointer}
.copy:hover{background:var(--lime);color:var(--ink);border-color:var(--lime)}
.prose pre.code{background:var(--dark);padding:16px 18px;margin:1.3em 0;border-radius:4px}

/* grids of small tickets */
.g3,.g4{display:grid;gap:16px;grid-template-columns:repeat(3,minmax(0,1fr))}
.g4{grid-template-columns:repeat(4,minmax(0,1fr))}
.feat{padding:30px 28px 26px}
.feat .num{display:block;font:400 .9rem/1 var(--mono);color:var(--vio2);letter-spacing:.1em;padding-bottom:14px;margin-bottom:16px;border-bottom:2px dotted var(--line)}
.feat h3{font-size:1.24rem;font-weight:600;margin-bottom:10px}
.feat p{margin:0;color:var(--mut);font-size:1rem}
.coupons{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}
.coupons li{position:relative;min-width:0;padding:40px 34px 36px}
.coupons li+li{background:radial-gradient(circle,var(--ground) 3.4px,transparent 4px) -5px 0/10px 18px repeat-y}
.coupons .num{display:flex;align-items:center;justify-content:center;width:52px;height:52px;border-radius:50%;background:var(--vio);color:var(--lime);font:700 1.5rem/1 var(--disp);margin-bottom:18px}
.coupons h3{font-size:1.3rem;font-weight:600;margin-bottom:10px}
.coupons p{margin:0;color:var(--mut)}
.uses{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 48px;padding:26px 58px 26px 44px}
.use{padding:22px 0;border-bottom:2px dotted var(--line)}
.use:nth-last-child(-n+3){border-bottom:0}
.use h3{font-size:1.22rem;font-weight:600;margin-bottom:8px}
.use p{margin:0}

/* prose */
.prose{padding:46px 60px 46px 52px}
.prose>*{max-width:78ch}
.prose>pre,.prose>table,.prose>form{max-width:100%}
.prose h2{font-size:clamp(1.45rem,2.6vw,1.9rem);font-weight:700;margin:40px 0 16px;padding-top:36px;background:radial-gradient(circle,var(--ground) 3.4px,transparent 4px) 0 0/18px 10px repeat-x;max-width:none;scroll-margin-top:96px}
.prose h2:first-child{margin-top:0;padding-top:0;background:none}
.prose h3{font-size:1.2rem;font-weight:600;margin:28px 0 10px;scroll-margin-top:96px}
.prose ul,.prose ol{padding-left:1.3em;margin:0 0 1em}
.prose li{margin:.35em 0}
.prose li::marker{color:var(--vio2);font-family:var(--mono)}
.prose :not(pre)>code,.keyout code{font:400 .95em var(--mono);background:var(--ground);padding:2px 6px;border-radius:4px;overflow-wrap:anywhere}
.prose table{display:block;overflow-x:auto;border-collapse:collapse;margin:1.3em 0;font-size:.97rem}
.prose th,.prose td{padding:11px 16px;text-align:left;vertical-align:top;border-bottom:2px dotted var(--line)}
.prose th{background:var(--vio);color:var(--onv);font-weight:700;border-bottom:0;white-space:nowrap}
.prose td:not(:first-child){font-family:var(--mono)}
.prose>:last-child{margin-bottom:0}
.blk>.prose{max-width:900px;margin-left:auto;margin-right:auto}

/* faq */
.faq{padding:18px 58px 18px 44px}
.faq details{border-bottom:2px dotted var(--line)}
.faq details:last-of-type{border-bottom:0}
.faq summary{display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:60px;padding:12px 0;cursor:pointer;list-style:none;font:600 1.14rem/1.3 var(--disp)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";flex:none;width:34px;height:34px;border-radius:50%;border:1.5px solid var(--ink);display:flex;align-items:center;justify-content:center;font:400 1.3rem/1 var(--mono);transition:transform .2s}
.faq details[open] summary::after{transform:rotate(45deg);background:var(--lime)}
.faq details p{margin:0;padding:0 50px 20px 0;color:var(--mut);max-width:76ch}

/* closing call */
.endcta{display:flex;align-items:center;justify-content:space-between;gap:28px;padding:44px 64px 44px 50px}
.endcta h2{font-size:clamp(1.6rem,3.2vw,2.3rem);font-weight:700;margin-bottom:8px}
.endcta p{margin:0;color:var(--onvm)}
.endcta .btn{flex:none}

/* page head */
.phead{padding:38px 62px 44px 50px;margin-bottom:20px}
.phead h1{font-size:clamp(1.95rem,4.2vw,3.1rem);max-width:22ch}
.crumbs ol{display:flex;flex-wrap:wrap;gap:4px 0;list-style:none;margin:0 0 20px;padding:0;font:400 .82rem/1.4 var(--mono);letter-spacing:.06em}
.crumbs li{display:inline-flex;align-items:center;min-height:28px}
.crumbs li+li::before{content:"/";margin:0 10px;opacity:.6}
.crumbs li[aria-current]{color:var(--onvm)}
.date{font:400 .85rem/1.4 var(--mono);letter-spacing:.06em;margin:20px 0 0;color:var(--onvm)}

/* two-column pages */
.cols{display:grid;gap:20px;align-items:start}
.cols.left{grid-template-columns:264px minmax(0,1fr)}
.cols.right{grid-template-columns:minmax(0,1fr) 284px}
.col{min-width:0}
.col>*+*{margin-top:20px}
.col>.blk{margin-top:48px}
.rail{position:sticky;top:92px;display:grid;gap:16px;min-width:0;max-height:calc(100vh - 104px);overflow:auto}
.toc{padding:26px 24px}
.toc .st{color:var(--vio2);padding-bottom:12px;border-bottom:2px dotted var(--line)}
.toc ol{list-style:none;margin:0;padding:0;counter-reset:t}
.toc li{counter-increment:t}
.toc a{display:flex;gap:10px;align-items:baseline;min-height:44px;padding:9px 0;color:var(--ink);text-decoration:none;font-size:.95rem;line-height:1.35}
.toc a::before{content:counter(t,decimal-leading-zero);font:400 .78rem/1 var(--mono);color:var(--vio2)}
.toc a:hover{color:var(--vio2);text-decoration:underline}
.sidecta{padding:26px 24px}
.sidecta .st{color:var(--lime)}
.sidecta p{color:var(--onvm);font-size:.97rem}
.sidecta .btn{width:100%}
.takes{padding:30px 34px}
.takes h2{font-size:1.3rem;font-weight:700;margin-bottom:14px}
.takes ul{list-style:none;margin:0;padding:0}
.takes li{position:relative;padding:10px 0 10px 30px;border-top:2px dotted var(--line)}
.takes li::before{content:"";position:absolute;left:2px;top:17px;width:14px;height:14px;border-radius:50%;background:var(--vio);box-shadow:inset 0 0 0 4px var(--lilac)}

/* pricing */
.pricegrid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:20px;align-items:stretch}
.bill{padding:34px 60px 34px 44px}
.bill .sub{padding-top:14px;border-top:2px dotted var(--line)}
.calct{padding:34px 36px}
.calct h2{font-size:1.5rem;font-weight:700;margin-bottom:20px}
.calc{display:grid;gap:16px}
.calc>div{display:grid;gap:6px;min-width:0}
.calc label,.row label{font-weight:700;font-size:.95rem}
.calc>div:last-child{padding-top:16px;border-top:2px dotted var(--line);grid-template-columns:1fr auto;align-items:baseline}
.calc output{font:400 clamp(1.9rem,4vw,2.6rem)/1 var(--mono);color:var(--vio);text-align:right;overflow-wrap:anywhere}

/* forms */
input,select,textarea{width:100%;min-height:50px;padding:0 14px;border:1.5px solid var(--ink);border-radius:8px;background:#fff;color:var(--ink);font:400 1rem/1.3 var(--body)}
.calc input,#pw{font-family:var(--mono);font-size:1.08rem}
textarea{min-height:150px;padding:12px 14px;resize:vertical}
input:focus-visible,select:focus-visible,textarea:focus-visible{outline:3px solid var(--vio2);outline-offset:1px;border-radius:8px}
.row{display:grid;gap:6px;margin-bottom:16px;min-width:0}
.note{font-size:.88rem;line-height:1.45;color:var(--mut);margin:6px 0 0}
.mut{color:var(--mut)}
.keygrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,470px);gap:20px;align-items:stretch}
.keyhead{margin:0;display:flex;flex-direction:column}
.keyhead .tally{margin-top:auto;padding-top:28px}
.keyhead .ln dt{color:var(--onvm)}
.formcol{min-width:0;display:flex}
.form{flex:1;padding:34px 34px 30px}
.form>.btn.ghost{width:100%;min-height:50px}
.form>.note{margin:8px 0 18px;text-align:center}
.tabs2{display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:4px;margin-bottom:18px;border:1.5px solid var(--ink);border-radius:999px}
.tabs2 button{min-height:44px;border:0;border-radius:999px;background:transparent;color:var(--ink);font:700 .98rem/1 var(--body);cursor:pointer}
.tabs2 button[aria-selected="true"]{background:var(--vio);color:var(--onv)}
.msg{margin:0 0 14px;padding:11px 14px;border-radius:8px;background:var(--lilac);font-size:.95rem}
.msg:empty{display:none}
.msg.err{background:#ffe1e4;color:#8a0f22;border:1.5px solid #8a0f22}
.form [data-submit]{width:100%;min-height:54px;font-size:1.06rem;margin-top:4px}
.form form>.note{text-align:center;margin-top:12px}
.keyout{display:none}
.keyout.on{display:block}
.keyout h3{font-size:1.3rem;font-weight:700;margin-bottom:14px}
.keybox{display:flex;align-items:center;gap:10px;padding:10px 10px 10px 14px;border:2px dashed var(--vio2);border-radius:8px;background:var(--ground)}
.keybox span{flex:1;min-width:0;font:400 1rem/1.4 var(--mono);overflow-wrap:anywhere}
.keyout p{margin:12px 0;line-height:1.9}
.keyout .acts{gap:8px;margin-top:16px}
.support{padding:40px 44px}
.support form{display:block}
form[data-support] button{min-height:54px;padding:0 34px;font-size:1.06rem}
form[data-support] output,form[data-support] [data-out]{display:block;margin-top:14px;font-weight:700}

/* 404 */
.nf{padding:70px 62px 70px 50px;text-align:left;overflow:hidden}
.big404{font:400 clamp(5rem,20vw,11rem)/.9 var(--mono);color:var(--lime);margin:0 0 20px;letter-spacing:-.04em}
.nf .acts{margin-top:30px}

/* footer */
.foot{max-width:1152px;margin:64px auto 30px;padding:0 16px}
.foot-t{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:18px 40px;align-items:center;padding:30px 44px}
.fb p{margin:2px 0 0;color:var(--mut);font-size:.95rem}
.foot ul{display:flex;flex-wrap:wrap;gap:0 6px;list-style:none;margin:0;padding:0;justify-content:flex-end}
.foot ul a{display:inline-flex;align-items:center;min-height:44px;padding:0 10px;color:var(--ink);font-weight:500}
.legal{grid-column:1/-1;margin:0;padding-top:16px;border-top:2px dotted var(--line);font:400 .82rem/1.5 var(--mono);color:var(--mut)}

@media (max-width:1000px){
.burger{display:flex}
.pill{padding-left:14px}
.pill .logo{border-right:0;padding-right:0}
.pill .cta{margin-left:auto}
.nav{display:none;position:absolute;left:0;right:0;top:calc(100% + 8px);margin:0;flex-direction:column;align-items:stretch;gap:2px;padding:10px;background:var(--paper);border:1.5px solid var(--ink);border-radius:22px;box-shadow:0 18px 34px -16px rgba(50,24,110,.6)}
.nav.open{display:flex}
.nav a{min-height:48px;padding:0 16px}
.hero-t{grid-template-columns:minmax(0,1fr);gap:30px;padding:44px 40px}
.stub{transform:none}
.g4{grid-template-columns:repeat(2,minmax(0,1fr))}
.cols.left,.cols.right,.keygrid,.pricegrid{grid-template-columns:minmax(0,1fr)}
.rail{position:static;max-height:none;overflow:visible}
.cols.right .rail{order:-1}
.sidecta{display:none}
.keyhead .tally{display:none}
}
@media (max-width:760px){
body{font-size:1rem}
.top{padding:0 10px}
.pill{padding:5px 5px 5px 12px;gap:6px}
.pill .logo{font-size:1rem;gap:7px}
.pill .mark{width:26px;height:26px}
.pill .cta{min-height:44px;padding:0 14px;font-size:.9rem}
main{padding:18px 10px 0}
.foot{padding:0 10px;margin-top:48px}
.blk{margin-top:44px}
.sn{display:none}
.tk,.form{--r:11px;padding:24px 20px}
.tk::before,.form::before{inset:7px}
.hero-t{padding:34px 22px 30px}
.stub{padding:22px 18px}
.g3,.g4,.coupons,.uses{grid-template-columns:minmax(0,1fr)}
.coupons li{padding:28px 24px}
.coupons li+li{background:radial-gradient(circle,var(--ground) 3.4px,transparent 4px) 0 -5px/18px 10px repeat-x}
.uses{padding:14px 24px}
.use:nth-last-child(-n+3){border-bottom:2px dotted var(--line)}
.use:last-of-type{border-bottom:0}
.prose{padding:30px 22px}
.faq{padding:12px 22px}
.faq details p{padding-right:0}
.endcta{flex-direction:column;align-items:flex-start;padding:34px 24px}
.endcta .btn{width:100%}
.phead{padding:26px 22px 30px;margin-bottom:12px}
.crumbs ol{margin-bottom:14px}
.lead{font-size:1.05rem;margin-top:14px}
.bill,.calct,.takes,.support{padding:26px 22px}
.form{padding:26px 20px 24px}
.bigt .ln dd{font-size:1.2rem}
.acts .btn.big{width:100%}
.nf{padding:44px 24px}
.foot-t{grid-template-columns:minmax(0,1fr);padding:26px 22px}
.foot ul{justify-content:flex-start;margin-left:-10px}
.cols,.keygrid,.pricegrid{gap:12px}
.col>*+*{margin-top:12px}
.g3,.g4{gap:12px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}html{scroll-behavior:auto}}
