:root{
    color-scheme:light;
    --ink:#18232f;
    --muted:#6f7a85;
    --line:#e7e9ec;
    --purple:#48204d;
    --blue:#20a9dd;
    --yellow:#f7c948;
    --paper:#fff;
}
*{box-sizing:border-box}
body{
    min-height:100vh;
    margin:0;
    color:var(--ink);
    font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
    background:
        radial-gradient(circle at 12% 15%,rgba(247,201,72,.28),transparent 25rem),
        radial-gradient(circle at 90% 82%,rgba(32,169,221,.12),transparent 28rem),
        #f5f6f8;
}
.page{
    display:grid;
    min-height:100vh;
    padding:30px 18px;
    place-items:center;
}
.page-content{
    display:grid;
    width:min(100%,760px);
    gap:22px;
}
.ticket{
    position:relative;
    width:min(100%,440px);
    border:1px solid rgba(24,35,47,.08);
    border-radius:24px;
    background:var(--paper);
    box-shadow:0 25px 70px rgba(24,35,47,.14);
    margin:0 auto;
}
.ticket::before,
.ticket::after{
    position:absolute;
    top:184px;
    width:24px;
    height:24px;
    border-radius:50%;
    background:#f5f6f8;
    content:"";
}
.ticket::before{left:-13px}
.ticket::after{right:-13px}
.accent{
    height:7px;
    border-radius:24px 24px 0 0;
    background:linear-gradient(90deg,var(--yellow),#ffe48d);
}
.merchant{
    padding:27px 30px 23px;
    border-bottom:1px dashed #d7dbe0;
    text-align:center;
}
.merchant-mark{
    display:grid;
    width:54px;
    height:54px;
    margin:0 auto 13px;
    place-items:center;
    border-radius:16px;
    color:var(--purple);
    background:#fff4c9;
    font-size:24px;
    font-weight:900;
}
.merchant-logo{
    display:block;
    width:120px;
    height:120px;
    margin:0 auto 16px;
    border-radius:18px;
    object-fit:contain;
}
.merchant h1{
    margin:0;
    font-size:24px;
    letter-spacing:-.03em;
}
.branch{
    margin:5px 0 0;
    color:var(--purple);
    font-size:14px;
    font-weight:750;
}
.address{
    margin:4px 0 0;
    color:var(--muted);
    font-size:12px;
}
.body{padding:24px 30px 26px}
.status{
    display:flex;
    margin-bottom:21px;
    align-items:center;
    justify-content:space-between;
}
.status-label{
    display:inline-flex;
    padding:6px 10px;
    border-radius:999px;
    color:#17663a;
    background:#eaf8ef;
    font-size:11px;
    font-weight:800;
    text-transform:uppercase;
}
.folio{text-align:right}
.folio small,
.meta small,
.summary span{
    display:block;
    color:var(--muted);
    font-size:10px;
    letter-spacing:.04em;
    text-transform:uppercase;
}
.folio strong{font-size:13px}
.meta{
    display:grid;
    margin-bottom:22px;
    padding:14px 0;
    grid-template-columns:1fr 1fr;
    border-top:1px solid var(--line);
    border-bottom:1px solid var(--line);
    gap:14px;
}
.meta div:last-child{text-align:right}
.meta strong{
    display:block;
    margin-top:4px;
    font-size:12px;
}
.items{width:100%;border-collapse:collapse}
.items th{
    padding:0 0 10px;
    color:var(--muted);
    font-size:10px;
    font-weight:700;
    text-align:left;
    text-transform:uppercase;
}
.items th:nth-child(2),
.items td:nth-child(2){text-align:center}
.items th:last-child,
.items td:last-child{text-align:right}
.items td{
    padding:11px 0;
    border-top:1px solid #f0f1f3;
    font-size:13px;
}
.items td:first-child{font-weight:650}
.summary{
    display:grid;
    margin-top:18px;
    padding-top:17px;
    grid-template-columns:1fr auto;
    border-top:1px dashed #d7dbe0;
    gap:9px 18px;
    text-align:right;
}
.summary span{text-align:left}
.summary strong{font-size:13px}
.summary .total-label,
.summary .total{
    margin-top:5px;
    color:var(--purple);
    font-size:17px;
    font-weight:850;
}
.uuid{
    margin:22px 0 0;
    padding:11px 12px;
    border-radius:10px;
    color:#7d8791;
    background:#f7f8fa;
    font-family:Consolas,"Courier New",monospace;
    font-size:9px;
    line-height:1.4;
    text-align:center;
    word-break:break-all;
}
.points-earned{
    display:flex;
    margin-top:10px;
    padding:9px 11px;
    align-items:center;
    gap:9px;
    border:1px solid #f0d46f;
    border-radius:10px;
    background:linear-gradient(135deg,#fff9df,#fff4bd);
    box-shadow:0 5px 13px rgba(220,169,0,.09);
}
.points-icon{
    display:grid;
    width:32px;
    height:32px;
    flex:0 0 32px;
    place-items:center;
    border:1px solid rgba(72,32,77,.12);
    border-radius:10px;
    color:var(--purple);
    background:linear-gradient(145deg,#ffe88e,var(--yellow));
    box-shadow:0 3px 8px rgba(220,169,0,.14);
}
.points-icon svg{width:18px;height:18px}
.points-label{
    min-width:0;
    flex:1;
    color:#79620d;
    font-size:10px;
    font-weight:750;
    line-height:1.25;
    text-transform:uppercase;
}
.points-amount{
    flex:0 0 auto;
    color:var(--purple);
    font-size:16px;
    font-weight:850;
    line-height:1.1;
    text-align:right;
    white-space:nowrap;
}
.invalid{
    padding:48px 32px;
    text-align:center;
}
.invalid-icon{
    display:grid;
    width:64px;
    height:64px;
    margin:0 auto 18px;
    place-items:center;
    border-radius:50%;
    color:#9b7100;
    background:#fff4c9;
    font-size:27px;
    font-weight:850;
}
.invalid h1{margin:0 0 10px;font-size:25px}
.invalid p{margin:0;color:var(--muted);font-size:14px;line-height:1.55}
.wally-footer{
    padding:12px 24px 14px;
    border-top:1px solid #f0f1f3;
    border-radius:0 0 24px 24px;
    color:#929aa3;
    background:#fafbfc;
    font-size:10px;
    font-weight:500;
    letter-spacing:.01em;
    text-align:center;
}
.wally-footer a{
    color:#747e88;
    font-weight:650;
    text-decoration:none;
}
.wally-footer a:hover,
.wally-footer a:focus-visible{
    color:var(--purple);
    text-decoration:underline;
}
.benefits-info{
    padding:25px 28px;
    border:1px solid rgba(72,32,77,.1);
    border-radius:20px;
    background:rgba(255,255,255,.92);
    box-shadow:0 16px 42px rgba(24,35,47,.08);
}
.benefits-kicker{
    color:var(--purple);
    font-size:11px;
    font-weight:850;
    letter-spacing:.08em;
    text-transform:uppercase;
}
.benefits-info h2{
    margin:6px 0 10px;
    color:var(--ink);
    font-size:22px;
    letter-spacing:-.025em;
}
.benefits-info p{
    margin:0;
    color:var(--muted);
    font-size:14px;
    line-height:1.65;
}
.company-info{
    display:grid;
    margin:18px 0;
    padding:16px;
    grid-template-columns:repeat(3,1fr);
    gap:14px;
    border-radius:14px;
    background:#fff8de;
}
.company-info small,
.company-info strong{display:block}
.company-info small{
    margin-bottom:5px;
    color:var(--muted);
    font-size:10px;
    text-transform:uppercase;
}
.company-info strong{
    color:var(--purple);
    font-size:13px;
}
.benefits-info .benefits-note{
    margin-top:14px;
    font-size:11px;
}
@media(max-width:480px){
    .page{padding:14px 11px}
    .ticket{border-radius:20px}
    .accent{border-radius:20px 20px 0 0}
    .merchant{padding:23px 22px 20px}
    .body{padding:21px 22px 23px}
    .wally-footer{border-radius:0 0 20px 20px}
    .merchant-logo{width:105px;height:88px}
    .benefits-info{padding:22px 20px}
    .company-info{grid-template-columns:1fr}
}
@media print{
    body{background:#fff}
    .page{display:block;min-height:0;padding:0}
    .ticket{margin:0 auto;border:1px solid #ddd;box-shadow:none}
    .ticket::before,.ticket::after{display:none}
    .benefits-info{display:none}
}
