:root{
  --ink:#2f3240;--muted:#68645d;--cream:#fff6e8;--paper:#fffdf8;
  --gold:#f7c74a;--orange:#ed7d2d;--rust:#b75b2d;--turq:#1fc4c8;
  --green:#53b66f;--deepgreen:#0f442b;--dark:#202330;
  --shadow:0 22px 60px rgba(47,35,20,.18);--radius:28px;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;color:var(--ink);background:radial-gradient(circle at top left,#fff7d1 0,#fffdf8 38%,#fff1db 100%);line-height:1.55;min-height:100vh}a{color:inherit;text-decoration:none}button,input{font:inherit}.wrap{width:min(1080px,92vw);margin:auto}.noise{position:fixed;inset:0;pointer-events:none;opacity:.055;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='4'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.45'/%3E%3C/svg%3E");z-index:0}.top{position:sticky;top:0;z-index:30;background:rgba(255,253,248,.9);backdrop-filter:blur(16px);border-bottom:1px solid rgba(183,91,45,.13)}.bar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 0}.brand{display:flex;align-items:center;gap:12px;font-weight:900}.logo-img{width:58px;height:58px;border-radius:18px;object-fit:cover;box-shadow:0 12px 28px rgba(237,125,45,.28)}.brand-signature{display:inline-flex;align-items:baseline;gap:.28em;white-space:nowrap}.brand-main{font-family:Georgia,serif;font-weight:900;font-size:25px}.brand-by{font-family:Georgia,serif;font-style:italic;color:var(--rust);font-size:15px}.brand small{display:block;font-size:10px;font-weight:800;color:var(--rust);text-transform:uppercase;letter-spacing:.1em}.nav{display:flex;gap:7px;align-items:center}.nav a{font-size:13px;font-weight:850;padding:10px 13px;border-radius:999px}.nav a.active,.nav a:hover{background:#fff0d5;color:var(--rust)}.nav .dark{background:var(--dark);color:#fff}.hero{padding:66px 0 42px;position:relative;z-index:1}.heroCard{background:linear-gradient(135deg,var(--deepgreen),#1d6a47 58%,#244a38);color:#fff;border-radius:38px;padding:clamp(28px,6vw,64px);box-shadow:var(--shadow);position:relative;overflow:hidden}.heroCard:after{content:"";position:absolute;width:330px;height:330px;border-radius:50%;right:-90px;top:-120px;background:linear-gradient(135deg,var(--turq),var(--gold),var(--orange));opacity:.25}.kicker{font-weight:950;color:var(--orange);letter-spacing:.14em;text-transform:uppercase;font-size:12px}.heroCard .kicker{color:#ffe7b5}.h1{font-family:Georgia,serif;font-size:clamp(44px,8vw,86px);line-height:.92;margin:13px 0 18px;letter-spacing:-.03em}.lead{font-size:clamp(17px,2vw,21px);max-width:700px;color:#fff3dd}.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;border:0;border-radius:999px;padding:14px 20px;font-weight:950;cursor:pointer;box-shadow:0 12px 30px rgba(0,0,0,.12)}.btn.primary{background:linear-gradient(135deg,var(--orange),var(--gold));color:#321c05}.btn.dark{background:var(--dark);color:#fff}.btn.light{background:#fff;color:var(--deepgreen)}.btn.ghost{background:transparent;color:var(--deepgreen);border:1px solid rgba(15,68,43,.25);box-shadow:none}.actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:25px}.grid{display:grid;gap:22px}.grid3{grid-template-columns:repeat(3,1fr)}.grid2{grid-template-columns:repeat(2,1fr)}.panel{background:rgba(255,253,248,.94);border:1px solid rgba(183,91,45,.14);box-shadow:var(--shadow);border-radius:var(--radius);padding:26px}.panel h2,.panel h3{font-family:Georgia,serif;margin:0 0 10px}.panel h2{font-size:34px}.panel h3{font-size:25px}.section{padding:34px 0 64px;position:relative;z-index:1}.stat{padding:24px;border-radius:26px;background:#fff;border:1px solid rgba(183,91,45,.14);box-shadow:var(--shadow)}.stat strong{display:block;font-size:34px;color:var(--deepgreen)}.stat span{font-size:13px;font-weight:800;color:var(--muted)}.memberCard{background:linear-gradient(135deg,#202330,#304139);color:#fff;border-radius:34px;padding:28px;position:relative;overflow:hidden;box-shadow:var(--shadow)}.memberCard:after{content:"";position:absolute;width:180px;height:180px;border-radius:50%;right:-70px;bottom:-85px;background:linear-gradient(135deg,var(--turq),var(--gold),var(--orange));opacity:.35}.memberCard small{color:#ffe7b5;font-weight:800;text-transform:uppercase;letter-spacing:.08em}.memberCard h2{font-family:Georgia,serif;font-size:34px;margin:10px 0 4px}.memberId{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:#ded8ce}.stampRow{display:grid;grid-template-columns:repeat(10,1fr);gap:7px;margin:22px 0 8px}.stamp{aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:rgba(255,255,255,.13);border:1px solid rgba(255,255,255,.23);font-weight:950;font-size:12px}.stamp.on{background:linear-gradient(135deg,var(--green),var(--gold));color:#172018;border-color:transparent}.progressText{display:flex;justify-content:space-between;gap:12px;font-size:13px;color:#fff1dc}.gift{display:flex;gap:15px;align-items:center;padding:17px;border-radius:22px;background:#fff;border:1px solid rgba(183,91,45,.13)}.gift+.gift{margin-top:10px}.giftIcon{width:48px;height:48px;border-radius:16px;display:grid;place-items:center;background:#fff1db;font-size:24px;flex:0 0 auto}.gift b{display:block}.gift small{color:var(--muted)}.gift .expiry{margin-left:auto;color:var(--rust);font-size:12px;font-weight:900;text-align:right}.form{display:grid;gap:14px}.field label{display:block;font-size:12px;font-weight:900;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:6px}.field input{width:100%;padding:14px 15px;border-radius:16px;border:1px solid rgba(183,91,45,.25);background:#fff}.check{display:flex;gap:10px;align-items:flex-start;font-size:13px;color:var(--muted)}.check input{margin-top:3px}.note{font-size:13px;color:var(--muted)}.flash{padding:13px 15px;border-radius:16px;background:#e9f8ed;color:#20582f;font-weight:850;margin-bottom:14px}.wheelShell{display:grid;grid-template-columns:minmax(280px,520px) 1fr;gap:34px;align-items:center}.wheelWrap{position:relative;width:min(92vw,520px);aspect-ratio:1;margin:auto}.wheel{width:100%;height:100%;border-radius:50%;border:12px solid #fff;box-shadow:0 20px 60px rgba(47,35,20,.24),inset 0 0 0 4px rgba(183,91,45,.16);transition:transform 5.5s cubic-bezier(.12,.7,.12,1);background:url("assets/roue-fanmi.png") center/cover no-repeat;position:relative;overflow:hidden}.wheelLabels{display:none}.wheelLabel{display:none}.wheelLabel span{display:none}.pointer{position:absolute;left:50%;top:-8px;transform:translateX(-50%);width:0;height:0;border-left:20px solid transparent;border-right:20px solid transparent;border-top:42px solid var(--dark);z-index:6;filter:drop-shadow(0 4px 4px rgba(0,0,0,.2))}.wheelCenter{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:110px;height:110px;border-radius:50%;background:#fff;display:grid;place-items:center;text-align:center;z-index:5;box-shadow:0 10px 25px rgba(0,0,0,.18);border:5px solid #fff1db}.wheelCenter img{width:76px;height:76px;border-radius:20px;object-fit:cover}.winBox{display:none;padding:20px;border-radius:24px;background:linear-gradient(135deg,#fff7d8,#e9ffdc);border:1px solid rgba(83,182,111,.32);margin-top:18px}.winBox.show{display:block}.winBox strong{font-family:Georgia,serif;font-size:25px;color:var(--deepgreen)}.pill{display:inline-flex;padding:7px 10px;border-radius:999px;background:#fff0d5;color:var(--rust);font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.05em}.adminTable{width:100%;border-collapse:collapse;font-size:14px}.adminTable th,.adminTable td{text-align:left;padding:12px 10px;border-bottom:1px solid rgba(183,91,45,.15);vertical-align:middle}.adminTable th{font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted)}.inlineActions{display:flex;gap:8px;flex-wrap:wrap}.tiny{padding:8px 11px;border-radius:12px;border:0;font-weight:900;cursor:pointer}.tiny.plus{background:#e6f7ea;color:#20582f}.tiny.giftbtn{background:#fff0d5;color:#7d3e1c}.footer{padding:32px 0 46px;color:var(--muted);text-align:center;font-size:12px}.demoTag{display:inline-flex;align-items:center;gap:6px;padding:7px 10px;border-radius:999px;background:#ffe9b9;color:#6a4c0c;font-size:11px;font-weight:950;text-transform:uppercase;letter-spacing:.05em}.divider{height:1px;background:rgba(183,91,45,.14);margin:22px 0}.qrMock{width:165px;height:165px;border-radius:20px;background:#fff url("assets/qr-fanmi.png") center/contain no-repeat;border:12px solid white;box-shadow:var(--shadow);margin:auto}.navMobile{display:none}.rewardLine{display:grid;grid-template-columns:auto 1fr auto;gap:12px;align-items:center;padding:12px 0;border-bottom:1px dashed rgba(183,91,45,.2)}.rewardLine:last-child{border:0}.rewardLine strong{color:var(--deepgreen)}
@media(max-width:900px){.nav{display:none}.navMobile{display:flex;gap:7px;overflow-x:auto;padding:8px 4vw;background:#fff;border-bottom:1px solid rgba(183,91,45,.12);position:sticky;top:83px;z-index:25}.navMobile a{white-space:nowrap;padding:9px 12px;border-radius:999px;background:#fff7e8;font-size:12px;font-weight:900}.grid3,.grid2,.wheelShell{grid-template-columns:1fr}.hero{padding-top:36px}.stampRow{gap:4px}.stamp{font-size:10px}.wheelWrap{width:min(88vw,460px)}.panel{padding:21px}.h1{font-size:48px}.brand-main{font-size:22px}.logo-img{width:54px;height:54px}.adminTable{min-width:720px}.tableScroll{overflow-x:auto}}
@media(max-width:520px){.heroCard{border-radius:28px}.stampRow{grid-template-columns:repeat(5,1fr);gap:8px}.wheelCenter{width:92px;height:92px}.wheelCenter img{width:64px;height:64px}.actions .btn{width:100%}}

.giftPending{margin-left:auto;padding:8px 11px;border-radius:12px;background:#f3efe7;color:var(--muted);font-size:12px;font-weight:900;white-space:nowrap}

.giftTag{display:inline-flex;align-items:center;width:max-content;margin:0 0 6px;padding:5px 9px;border-radius:999px;font-size:10px;font-weight:950;text-transform:uppercase;letter-spacing:.05em}.giftTag.birthday{background:#fff0d5;color:var(--rust)}


@media(max-width:640px){
  .gift{display:grid;grid-template-columns:64px minmax(0,1fr);align-items:start;gap:14px}
  .gift > div:nth-child(2){min-width:0}
  .gift .giftIcon{width:56px;height:56px;border-radius:18px;font-size:28px}
  .gift .giftTag{max-width:100%;white-space:normal;line-height:1.2}
  .gift b{display:block;line-height:1.2;margin-bottom:4px}
  .gift small{display:block;line-height:1.35}
  .gift .expiry{grid-column:2;grid-row:auto;margin-left:0;padding-top:2px;text-align:left;max-width:100%;white-space:normal}
}
