/* Loyup — editorial visual identity. */
:root{--blue:#29476B;--blue-d:#192B45;--blue-soft:#EAF0F7;--green:#42705A;--green-d:#305740;--green-soft:#EEF3EB;--ink:#192B45;--muted:#657184;--bg:#FAF7F2;--line:#D8DFE6;--line2:#EAF0F5;--shadow:0 12px 30px #192B4508}
body{background:var(--bg)}.topbar{height:84px;background:#faf7f2f2;border-bottom:1px solid var(--line);padding-inline:max(24px,calc((100vw - 1280px)/2))}.brand-name{font-size:27px;letter-spacing:-1.5px}.brand-mark{background:transparent;width:38px;height:38px}.nav-pill{background:#eaf0f7;color:#29476B}
.btn{border-radius:7px;box-shadow:none!important;transition:transform .2s ease,background .2s ease}.btn-primary,.btn-green{background:var(--blue-d);color:white}.btn-primary:hover,.btn-green:hover{background:#29476b;transform:translateY(-2px)}.btn-ghost{color:var(--ink);border-color:#a8b7c9}.btn-soft{color:var(--blue)}:is(button,a,input,select,textarea,summary):focus-visible{outline:3px solid #527aa7;outline-offset:4px}
.hero{background:var(--bg);border:0}.hero-inner{max-width:1280px;padding:82px 24px 72px;gap:80px;grid-template-columns:1.1fr 1fr}.eyebrow{color:var(--blue);font-size:10px;letter-spacing:.14em;margin-bottom:26px;font-weight:600}.hero h1{font-family:Georgia,'Times New Roman',serif;font-size:clamp(64px,7.7vw,108px);font-weight:400;line-height:.99;letter-spacing:-.075em;max-width:none}.hero .accent{font-style:italic;color:var(--blue);-webkit-text-fill-color:var(--blue)}.lead{max-width:390px;font-size:17px;line-height:1.7;margin:30px 0}.hero-actions{gap:12px}.hero-actions .btn{padding:15px 22px;min-height:52px}.hero-actions .btn-ghost{border:0;padding-inline:6px}.hero-note{gap:20px;font-size:11px}.hero-note span::before{content:'•';color:#9b5425;margin-right:8px}
.hero-art{background:#E4ECF5;border-radius:50% 50% 8px 8px;min-height:525px;padding:65px 40px 32px}.art-caption{position:static;text-align:center;letter-spacing:.12em;font-size:9px;color:#4B607A;margin-bottom:12px}.showcase-card{background:#192B45;border-radius:8px;color:#fff9f4;transform:rotate(-7deg);padding:28px;margin:15px 0 30px;box-shadow:14px 18px 0 #b1c2d7;animation:ticket-enter .8s cubic-bezier(.16,1,.3,1) both}.coffee-icon{background:#ffffff12;border-radius:50%}.card-star{color:#FFAA70}.showcase-reward{font-family:Georgia,serif;font-size:36px;letter-spacing:-.04em;line-height:1.1;margin:28px 0}.showcase-reward b{color:#FFAA70;font-weight:400;font-style:italic}.showcase-card .stamp-row{gap:10px}.showcase-card .stamp{border:1px dashed #9aafc9;color:#dce7f5;background:transparent;border-radius:50%;font-size:17px}.showcase-card .stamp.done{background:#FFAA70;color:#192B45;box-shadow:none}.showcase-bottom{border-top:1px dashed #829bb9;padding-top:18px}.floating-note{top:auto;bottom:93px;right:-16px;transform:rotate(5deg);border:1px solid #d8dfe6;box-shadow:0 8px 20px #192B4510;border-radius:5px;padding:15px 18px;animation:note-enter .75s .25s both}.note-check{background:#FFAA70;color:#192B45;border-radius:50%;font-weight:700;padding:10px}.art-footer{color:#4B607A}.art-footer b{color:#4B607A}.avatar-stack{background:#cbd8e9;color:#192B45}
.shell{max-width:1280px}.section{padding:75px 0}.section-head h2{font-family:Georgia,serif;font-size:44px;line-height:1.15;font-weight:400;letter-spacing:-.04em}.section-head{margin-bottom:32px}.feature-grid{gap:20px}.feature{background:#eaf0f7;border:0;border-radius:8px;padding:28px;transition:transform .2s ease}.feature:nth-child(2){background:#fff0e3}.feature:nth-child(3){background:#eef0f3}.feature:hover{transform:translateY(-4px)}.feature-icon{color:#4b607a;font-size:12px;margin-bottom:38px}.feature h3{font-size:19px;letter-spacing:-.025em}.feature p{color:#566578;line-height:1.6;margin-bottom:0}.plan{border-radius:8px;border-color:var(--line);background:#fffdfa}.plan.hot{border:2px solid var(--blue);background:#edf2f8}.save-badge{background:#ffdcc4;color:#75421e;border-radius:4px}.billing-switch{background:#e4ebf3}.tag{background:#eaf0f7;color:var(--blue)}
.sidebar{background:#192B45;border:0}.sidebar-title{color:#b9c9dc}.side-item{color:#e0e9f5}.side-item:hover{background:#ffffff14;color:#fff}.side-item.active{background:#ffdcc4;color:#192B45}.dash-main{background:var(--bg)}.dash-title{font-weight:600;letter-spacing:-.04em}.panel,.stat,.journey-step,.table-wrap,.role-card{border-radius:8px;border-color:var(--line);box-shadow:none}.journey-step{background:#eef2f7}.bar{background:#dce5f0}.bar.on{background:#527aa7}.stat strong{color:var(--blue-d)}.input,.select,.textarea{background:#fffdfa;border-color:#b5c2d2;border-radius:6px}.wallet-small-card:hover,.wallet-small-card.active{background:var(--blue-soft)}.wallet-card,.wallet-mini{box-shadow:0 12px 25px #192B4512;border-radius:12px}.scanner-box{background:#192B45}.scanner-stage{background:#101e31}.scanner-idle span,.scanner-idle{color:#ffdcc4}.scan-overlay{border-color:#FFAA70}.scan-overlay::after{background:#FFAA70;box-shadow:0 0 18px #FFAA70;animation:none}.scanner-stage.is-live .scan-overlay::after{animation:loyalo-scan 1.8s ease-in-out infinite}.scanner-status,.manual-scan label{color:#dce7f5}.client-hero h2,#wallet-greeting{font-family:Georgia,serif;font-weight:400;font-size:44px;letter-spacing:-.05em}.join-perk>span{color:#9b5425}.notice{background:#eaf0f7;color:#29476B}
.page.active{animation:page-in .3s ease both}.preview{animation:none;transform:none}.hero-inner>div:first-child{animation:page-in .65s ease both}@keyframes page-in{from{opacity:0;translate:0 9px}to{opacity:1;translate:0 0}}@keyframes ticket-enter{from{opacity:0;transform:translateY(22px) rotate(-11deg)}to{opacity:1;transform:translateY(0) rotate(-7deg)}}@keyframes note-enter{from{opacity:0;translate:0 12px}to{opacity:1;translate:0 0}}
@media(max-width:980px){.hero-inner{gap:40px;padding:60px 24px}.hero-art{padding:55px 25px 25px;min-height:470px}.hero h1{font-size:78px}.floating-note{right:-8px}.hero-actions{flex-direction:column}.hero-actions .btn-ghost{min-height:35px}.showcase-reward{font-size:30px}}
@media(max-width:700px){.topbar{height:70px;padding-inline:16px}.brand-name{font-size:23px}.hero-inner{grid-template-columns:1fr;padding:46px 22px 38px;gap:36px}.hero h1{font-size:76px}.eyebrow{font-size:8px;letter-spacing:.12em}.lead{font-size:16px;margin:24px 0}.hero-actions{flex-direction:row;align-items:center}.hero-actions .btn{font-size:12px;padding:12px 15px}.hero-art{min-height:475px;max-width:390px;padding:50px 30px 25px}.showcase-card{max-width:310px}.floating-note{right:0;bottom:76px}.section{padding:48px 0}.section-head h2{font-size:34px}.feature-grid{gap:12px}.feature{padding:24px}.feature-icon{margin-bottom:24px}.client-hero h2,#wallet-greeting{font-size:36px}.brand-mark{width:30px;height:30px}.nav-actions{gap:5px}.nav-actions .btn{font-size:10px;padding:8px}}
.floating-note{bottom:30px;right:-8px}.art-footer{visibility:hidden}
@media(min-width:701px) and (max-width:980px){.sidebar{display:flex;flex-wrap:wrap;gap:5px;padding:14px}.sidebar-title{display:none}.side-item{padding:9px 12px;font-size:12px}}
@media(max-width:700px){.floating-note{bottom:22px;right:8px}.hero h1{font-size:clamp(58px,18vw,76px)}}
/* Modern typography and a short, finite card demonstration. */
.hero h1{font-family:'Inter',system-ui,sans-serif;font-weight:600;font-size:clamp(58px,6.8vw,92px);line-height:1.04;letter-spacing:-.075em}
.hero .accent{font-style:normal;color:#365A83;-webkit-text-fill-color:#365A83}
.section-head h2,.client-hero h2,#wallet-greeting{font-family:'Inter',system-ui,sans-serif;font-weight:600;letter-spacing:-.055em}
.section-head h2{font-size:38px}.btn{border-radius:12px}.hero-art{border-radius:32px;background:radial-gradient(ellipse at 80% 10%,#ffe6d3,transparent 65%),#e5edf7;perspective:1100px}
.showcase-card{border-radius:23px;background:linear-gradient(135deg,#29476B,#14243B);box-shadow:0 28px 48px #192b4526,0 1px 0 #ffffff33 inset;transform:rotate(-4deg);animation:modern-card-enter .85s cubic-bezier(.16,1,.3,1) both;transition:rotate .45s ease,scale .45s ease;position:relative;overflow:hidden}
.showcase-reward{font-family:'Inter',system-ui,sans-serif;font-size:31px;font-weight:500;letter-spacing:-.055em;line-height:1.2}.showcase-reward b{font-style:normal;font-weight:500}.showcase-top{letter-spacing:.025em}.showcase-top small{opacity:.8}.showcase-bottom span{opacity:.85}
.showcase-card::after{content:'';position:absolute;inset:-60%;background:linear-gradient(105deg,transparent 43%,#ffffff16 49%,transparent 55%);transform:translateX(70%);animation:card-shine 1.25s .45s both;pointer-events:none}
.showcase-card .stamp.done{animation:stamp-in .42s cubic-bezier(.2,.8,.3,1.3) both;animation-delay:calc(.65s + var(--stamp-order,0)*.16s)}
.showcase-card .stamp:nth-child(1){--stamp-order:0}.showcase-card .stamp:nth-child(2){--stamp-order:1}.showcase-card .stamp:nth-child(3){--stamp-order:2}.showcase-card .stamp:nth-child(4){--stamp-order:3}.showcase-card .stamp:nth-child(5){--stamp-order:4}.showcase-card .stamp:nth-child(6){--stamp-order:5}.showcase-card .stamp:nth-child(7){--stamp-order:6}
.floating-note{border-radius:16px;transform:rotate(0);box-shadow:0 14px 32px #192b4514;animation:confirmation-in .65s 1.95s cubic-bezier(.16,1,.3,1) both}.note-check{animation:stamp-in .4s 2.1s both}
@media(hover:hover) and (prefers-reduced-motion:no-preference){.showcase-card:hover{rotate:3deg;scale:1.025}}
@keyframes modern-card-enter{from{opacity:0;transform:translateY(32px) rotate(-9deg) rotateX(12deg) scale(.94)}to{opacity:1;transform:translateY(0) rotate(-4deg) rotateX(0) scale(1)}}
@keyframes stamp-in{from{opacity:0;scale:.55;rotate:-25deg}to{opacity:1;scale:1;rotate:0deg}}
@keyframes card-shine{from{transform:translateX(-70%)}to{transform:translateX(70%)}}
@keyframes confirmation-in{from{opacity:0;translate:0 20px;scale:.92}to{opacity:1;translate:0 0;scale:1}}
@media(max-width:700px){.hero h1{font-size:clamp(52px,15vw,68px)}.hero-art{border-radius:26px;min-height:450px}.showcase-reward{font-size:28px}.section-head h2{font-size:30px}.client-hero h2,#wallet-greeting{font-size:32px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.btn:hover,.feature:hover{transform:none}.showcase-card::after{display:none}}
