:root{
    --brand:#0bb8a4;
    --brand-dark:#078c7d;
    --ink:#13244a;
    --muted:#687078;
    --line:#dbe5e3;
    --bg:#f5f8f7;
    --danger:#a92e2e;
    --pink:#ff315f;
    --pink-dark:#df214d;
    --mint:#0b986d;
}

/* Base y administración existente */
*{box-sizing:border-box}
body{margin:0;font-family:Arial,Helvetica,sans-serif;color:var(--ink);background:var(--bg)}
a{color:var(--brand-dark)}
.page{min-height:100vh;padding:28px}
.card{background:#fff;border:1px solid var(--line);border-radius:18px;padding:28px;box-shadow:0 12px 35px rgba(0,0,0,.06)}
.narrow{max-width:620px;margin:40px auto}
.center{text-align:center}
.brand{font-family:Georgia,'Times New Roman',serif;font-size:58px;color:var(--brand);line-height:1;margin-bottom:22px}
.brand.small{font-size:34px;margin:0}
h1{font-size:30px;margin:0 0 20px}
h2{margin-top:28px}
label{display:block;font-weight:700;margin:18px 0 8px}
input[type=text],input[type=password],input[type=url],input:not([type]){
    width:100%;padding:13px 14px;border:1px solid #bbc9c6;border-radius:10px;font-size:16px;margin-top:7px
}
input[type=file]{display:block;margin-top:9px}
.button{display:inline-block;border:0;border-radius:10px;background:var(--brand);color:#fff;padding:13px 20px;font-weight:800;font-size:15px;cursor:pointer;text-decoration:none}
.button:hover{background:var(--brand-dark)}
.button.large{font-size:19px;padding:17px 28px;width:100%;max-width:360px}
.notice{padding:13px 16px;border-radius:10px;margin:16px 0}
.notice.success{background:#e6fbf7;color:#096b5e}
.notice.error{background:#fdeaea;color:var(--danger)}
.muted,.legal{color:var(--muted)}
code,pre{background:#f0f4f3;border-radius:8px;padding:3px 6px}
pre{padding:14px;overflow:auto}

.admin-header{display:flex;justify-content:space-between;align-items:center;background:#fff;padding:15px 26px;border-bottom:1px solid var(--line);gap:20px}
.admin-header nav{display:flex;gap:18px;flex-wrap:wrap}
.admin-header a{text-decoration:none;font-weight:700}
.admin-main{padding:28px;max-width:1500px;margin:auto}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:25px}
.stats div{background:#fff;border:1px solid var(--line);border-radius:15px;padding:22px;text-align:center}
.stats strong{display:block;font-size:38px;color:var(--brand)}
.stats span{color:var(--muted)}
.search{display:flex;gap:10px;margin-bottom:20px}
.search input{max-width:480px;margin:0}
.table-wrap{overflow:auto;background:#fff;border:1px solid var(--line);border-radius:14px}
table{width:100%;border-collapse:collapse;font-size:14px}
th,td{padding:11px 12px;border-bottom:1px solid #edf1f0;white-space:nowrap;text-align:left}
th{background:#f2f8f6}
.badge{background:#e5f8f4;color:#087466;border-radius:999px;padding:5px 9px;font-weight:700}

/* Landing veraniega Arty Belleza */
body.landing{
    min-height:100vh;
    margin:0;
    background:#fff7f5;
    overflow-x:hidden;
}

.summer-landing{
    position:relative;
    min-height:100vh;
    width:100%;
    max-width:760px;
    margin:0 auto;
    padding:34px 28px 42px;
    overflow:hidden;
    text-align:center;
    background:
        radial-gradient(circle at 100% 12%, rgba(247,118,180,.34) 0 11%, transparent 31%),
        radial-gradient(circle at 84% 24%, rgba(114,219,238,.28) 0 8%, transparent 28%),
        radial-gradient(circle at 0 60%, rgba(255,125,171,.22) 0 10%, transparent 27%),
        linear-gradient(180deg,#fffdfa 0%,#fff7f6 48%,#eefcfc 100%);
}

.summer-header{
    position:relative;
    z-index:3;
}

.corporate-logo{
    display:block;
    width:min(62%,420px);
    height:auto;
    margin:0 auto 6px;
}

.heart-divider,
.ticket-divider{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:12px;
}

.heart-divider{
    margin:0 auto 24px;
    color:var(--pink);
}

.heart-divider span,
.ticket-divider span{
    display:block;
    width:90px;
    height:2px;
    background:currentColor;
    opacity:.9;
}

.heart-divider b,
.ticket-divider b{
    font-size:17px;
    line-height:1;
}

.summer-header h1{
    margin:0;
    font-size:clamp(34px,7vw,54px);
    line-height:1.08;
    font-weight:700;
    color:var(--ink);
    letter-spacing:-1px;
}

.summer-header h1 strong{
    color:var(--pink);
}

.summer-header p{
    margin:8px 0 22px;
    font-size:clamp(20px,4vw,30px);
    line-height:1.2;
    color:var(--ink);
}

.ticket-card{
    position:relative;
    z-index:3;
    margin:28px auto 24px;
    padding:46px 36px 31px;
    border-radius:34px;
    background:#fffdfa;
    border:2px solid rgba(255,49,95,.18);
    box-shadow:0 18px 35px rgba(24,48,66,.18);
    overflow:visible;
}

.ticket-card::before,
.ticket-card::after{
    content:"";
    position:absolute;
    top:43%;
    width:44px;
    height:84px;
    background:linear-gradient(180deg,#fce7ec,#eafafa);
    border-radius:0 48px 48px 0;
}

.ticket-card::before{
    left:-2px;
    transform:translateX(-50%);
}

.ticket-card::after{
    right:-2px;
    transform:translateX(50%) rotate(180deg);
}

.ticket-card{
    outline:2px dashed var(--pink);
    outline-offset:-16px;
}

.ticket-decoration{
    position:absolute;
    z-index:1;
    color:#ff6c8f;
    font-size:44px;
    opacity:.9;
}

.ticket-decoration.star{left:52px;top:36px}
.ticket-decoration.palm{right:58px;top:34px}

.discount-value{
    position:relative;
    z-index:2;
    font-size:clamp(105px,23vw,180px);
    line-height:.85;
    font-weight:900;
    letter-spacing:-8px;
    color:var(--pink);
    text-shadow:0 3px 0 rgba(255,255,255,.8);
}

.discount-label{
    position:relative;
    z-index:2;
    margin-top:24px;
    font-size:clamp(42px,9vw,72px);
    line-height:.95;
    font-weight:900;
    letter-spacing:-2px;
    color:#071b4b;
}

.ticket-divider{
    margin:24px auto 16px;
    color:var(--pink);
}

.ticket-divider span{
    width:36%;
}

.purchase-condition{
    position:relative;
    z-index:2;
    margin:0;
    font-size:clamp(21px,4vw,31px);
    line-height:1.25;
    color:var(--ink);
}

.purchase-condition strong{
    color:var(--pink);
}

.activation-form,
.validated-panel{
    position:relative;
    z-index:3;
}

.activate-button{
    width:100%;
    min-height:92px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:18px;
    border:3px solid rgba(255,255,255,.92);
    border-radius:46px;
    background:linear-gradient(180deg,#ff506d,#f62959);
    color:#fff;
    box-shadow:0 11px 0 #c91d45,0 18px 26px rgba(196,30,72,.24);
    font-size:clamp(24px,5vw,38px);
    font-weight:900;
    cursor:pointer;
    padding:18px 24px;
    text-shadow:0 2px 1px rgba(0,0,0,.08);
}

.activate-button:hover{
    filter:brightness(1.04);
}

.activate-button:active{
    transform:translateY(4px);
    box-shadow:0 7px 0 #c91d45,0 12px 20px rgba(196,30,72,.22);
}

.bag-icon{
    width:56px;
    height:56px;
    display:grid;
    place-items:center;
    border:3px solid #fff;
    border-radius:14px;
    font-size:31px;
    line-height:1;
}

.validated-panel{
    margin-top:4px;
}

.unique-code-label{
    display:flex;
    align-items:center;
    justify-content:center;
    gap:12px;
    margin:6px 0 12px;
    color:var(--pink);
    font-size:clamp(22px,4vw,30px);
    font-weight:800;
}

.unique-code-label::before,
.unique-code-label::after{
    content:"";
    width:110px;
    height:2px;
    background:var(--pink);
}

.unique-code{
    width:100%;
    padding:16px 18px;
    border:3px solid var(--pink);
    border-radius:22px;
    background:rgba(255,255,255,.96);
    color:var(--pink);
    font-size:clamp(54px,12vw,84px);
    line-height:1;
    font-weight:900;
    letter-spacing:2px;
    box-shadow:0 9px 24px rgba(255,49,95,.12);
}

.show-at-checkout{
    margin:16px 0 18px;
    font-size:clamp(20px,4vw,28px);
    color:var(--ink);
}

.status-bar{
    min-height:82px;
    display:flex;
    align-items:center;
    justify-content:center;
    gap:16px;
    padding:12px 22px;
    border-radius:26px;
    font-size:clamp(22px,4.6vw,34px);
    box-shadow:0 10px 24px rgba(17,68,60,.14);
}

.status-valid{
    color:#068c62;
    background:linear-gradient(180deg,#f4fffb,#dff8ef);
    border:2px solid #71d9b4;
}

.status-used{
    color:#8c6812;
    background:linear-gradient(180deg,#fffced,#fff2bd);
    border:2px solid #e0be56;
}

.status-expired{
    color:#a92e2e;
    background:linear-gradient(180deg,#fff3f3,#fbdada);
    border:2px solid #e99b9b;
}

.status-icon{
    flex:0 0 auto;
    width:52px;
    height:52px;
    display:grid;
    place-items:center;
    border-radius:50%;
    background:#fff;
    font-size:34px;
    font-weight:900;
    box-shadow:0 4px 10px rgba(0,0,0,.09);
}

.coupon-conditions{
    position:relative;
    z-index:3;
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:18px;
    margin-top:34px;
    font-size:18px;
    line-height:1.25;
    color:var(--ink);
}

.coupon-conditions span{
    position:relative;
    display:flex;
    align-items:center;
    justify-content:center;
    min-height:58px;
    padding:6px 8px;
}

.coupon-conditions span:not(:last-child)::after{
    content:"•";
    position:absolute;
    right:-14px;
    color:var(--pink);
    font-size:26px;
}

.summer-orb,
.summer-wave,
.summer-leaf{
    position:absolute;
    pointer-events:none;
    z-index:1;
}

.orb-one{
    width:240px;
    height:240px;
    border-radius:50%;
    right:-90px;
    top:-55px;
    background:radial-gradient(circle at 35% 35%,#fff4cc 0 10%,#ffd0aa 42%,#ff7bac 100%);
    opacity:.65;
    filter:blur(.2px);
}

.orb-two{
    width:170px;
    height:170px;
    border-radius:50%;
    right:-60px;
    top:160px;
    background:linear-gradient(145deg,#86e5ef,#b9a6ff 55%,#ff78a8);
    opacity:.45;
}

.leaf-one{
    width:220px;
    height:220px;
    left:-85px;
    top:20px;
    opacity:.24;
    transform:rotate(-22deg);
    background:
      repeating-linear-gradient(65deg,transparent 0 14px,rgba(255,49,95,.7) 15px 18px,transparent 19px 30px);
    clip-path:polygon(0 0,100% 45%,0 100%,28% 50%);
}

.wave-one{
    width:520px;
    height:180px;
    left:-210px;
    bottom:-65px;
    border-radius:50%;
    background:linear-gradient(120deg,#49d9ed,#7a9cff,#d589ff);
    opacity:.68;
    transform:rotate(9deg);
}

.wave-two{
    width:520px;
    height:180px;
    right:-230px;
    bottom:-85px;
    border-radius:50%;
    background:linear-gradient(120deg,#ffd5ad,#ffb2b0,#ffe7c8);
    opacity:.76;
    transform:rotate(-8deg);
}

@media(max-width:800px){
    .page{padding:14px}
    .brand{font-size:42px}
    .stats{grid-template-columns:repeat(2,1fr)}
    .admin-header{align-items:flex-start;flex-direction:column}
}

@media(max-width:640px){
    .summer-landing{
        padding:16px 14px 22px;
    }

    .corporate-logo{
        width:68%;
        margin-bottom:0;
    }

    .heart-divider{
        margin-bottom:12px;
    }

    .summer-header p{
        margin:6px 0 14px;
        font-size:16px;
    }

    .ticket-card{
        margin:14px auto 14px;
        padding:24px 16px 18px;
        border-radius:24px;
        outline-offset:-10px;
    }

    .ticket-card::before,
    .ticket-card::after{
        width:30px;
        height:56px;
    }

    .ticket-decoration.star{left:28px;top:20px}
    .ticket-decoration.palm{right:28px;top:20px}

    .discount-value{
        font-size:92px;
        letter-spacing:-5px;
    }

    .discount-label{
        margin-top:10px;
        font-size:34px;
    }

    .ticket-divider{
        margin:14px auto 10px;
    }

    .purchase-condition{
        font-size:17px;
    }

    .unique-code-label{
        margin:2px 0 8px;
        font-size:16px;
    }

    .unique-code{
        padding:12px 14px;
        font-size:42px;
        border-radius:16px;
    }

    .show-at-checkout{
        margin:10px 0 12px;
        font-size:16px;
    }

    .activate-button{
        min-height:68px;
        border-radius:34px;
        font-size:22px;
        gap:12px;
        padding:14px 16px;
    }

    .bag-icon{
        width:40px;
        height:40px;
        border-radius:10px;
        font-size:22px;
    }

    .coupon-conditions{
        gap:6px;
        margin-top:14px;
        font-size:12px;
    }

    .coupon-conditions span{
        min-height:42px;
        padding:2px 4px;
    }

    .coupon-conditions span:not(:last-child)::after{
        right:-6px;
        font-size:18px;
    }

    .unique-code{
        border-radius:16px;
    }

    .status-bar{
        min-height:62px;
        border-radius:18px;
        font-size:18px;
        padding:10px 14px;
        gap:10px;
    }

    .status-icon{
        width:38px;
        height:38px;
        font-size:24px;
    }
}

@media(max-width:420px){
    .summer-landing{
        padding-left:10px;
        padding-right:10px;
    }

    .heart-divider span{
        width:46px;
    }

    .summer-header h1{
        font-size:28px;
    }

    .summer-header p{
        font-size:15px;
    }

    .ticket-card{
        padding-left:12px;
        padding-right:12px;
    }

    .discount-value{
        font-size:84px;
    }

    .discount-label{
        font-size:30px;
    }

    .purchase-condition{
        font-size:16px;
    }

    .activate-button{
        gap:8px;
        padding:12px 10px;
        font-size:20px;
    }

    .coupon-conditions{
        font-size:11px;
    }

    .unique-code-label::before,
    .unique-code-label::after{
        width:40px;
    }

    .unique-code{
        font-size:38px;
    }

    .status-bar{
        gap:8px;
        padding:9px 10px;
        font-size:16px;
    }
}
