:root{--bg:#111;--card:#1c1c1c;--pink:#e5308f;--tx:#f2f2f2}
*{box-sizing:border-box}body{margin:0;font-family:system-ui,sans-serif;background:var(--bg);color:var(--tx)}
[hidden]{display:none!important}
header{position:sticky;top:0;background:#000;padding:.6rem 1rem;z-index:5;border-bottom:1px solid var(--pink)}
h1{margin:0 0 .5rem;color:var(--pink);font-size:1.3rem}nav{display:flex;gap:.4rem;overflow-x:auto}
button,input,select,textarea{font:inherit;padding:.6rem;border-radius:8px;border:1px solid #444;background:#222;color:var(--tx)}
button{background:var(--pink);color:#fff;border:0;font-weight:600;cursor:pointer}
nav button{background:#222;color:var(--tx);white-space:nowrap}nav button.on{background:var(--pink);color:#fff}
main{padding:1rem;max-width:900px;margin:auto}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1rem}
.card{background:var(--card);border-radius:12px;overflow:hidden}.card img{width:100%;height:160px;object-fit:cover}
.card div{padding:.8rem}.card h3{margin:0 0 .3rem}.card p{margin:.2rem 0;color:#bbb}.card b{color:var(--pink)}
.stack{display:flex;flex-direction:column;gap:.6rem;max-width:420px;margin-bottom:1rem}
.list{list-style:none;padding:0}.list li{display:flex;gap:.6rem;align-items:center;justify-content:space-between;background:var(--card);padding:.7rem;border-radius:10px;margin-bottom:.5rem;flex-wrap:wrap}
#msg{color:var(--pink)}
.slots{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0}
.slot{padding:8px 14px;border-radius:8px;background:#222;color:#fff;border:1px solid #444;cursor:pointer}
.slot.on{background:var(--pink);color:#fff;border-color:var(--pink)}
#bookbtn:disabled{opacity:.5}
.logo{height:56px;width:auto;vertical-align:middle;margin-right:8px}
.brand{position:relative;display:inline-block;isolation:isolate;padding-top:.45em;vertical-align:middle;margin-left:4px}
.brand b{display:inline-block;font-weight:400;font-family:'Sedgwick Ave Display','Permanent Marker',cursive;font-size:2.3rem;letter-spacing:.05em;line-height:1;white-space:nowrap;background:linear-gradient(180deg,#ffb3dc 0%,#ff4fa6 48%,#b82a98 100%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(1.5px 0 0 #000) drop-shadow(-1.5px 0 0 #000) drop-shadow(0 1.5px 0 #000) drop-shadow(0 -1.5px 0 #000)}
.brand::before,.brand::after{content:attr(data-t);position:absolute;left:0;bottom:0;z-index:-1;pointer-events:none;white-space:nowrap;font-family:'Sedgwick Ave Display','Permanent Marker',cursive;font-size:2.3rem;letter-spacing:.05em;line-height:1;transform-origin:50% 100%;opacity:0;will-change:transform,opacity;-webkit-mask-image:linear-gradient(to top,#000 35%,transparent 100%);mask-image:linear-gradient(to top,#000 35%,transparent 100%)}
.brand::before{color:#ff2f9a;filter:url(#fire) blur(1.5px);animation:ignite 2.4s ease-out forwards,flick 1.3s ease-in-out 2.4s infinite alternate}
.brand::after{color:#ff8ccb;filter:url(#fire2) blur(3px);animation:ignite 2.8s ease-out .15s forwards,flick2 1.7s ease-in-out 2.9s infinite alternate}
@keyframes ignite{0%{opacity:0;transform:translateY(10px) scaleY(.3)}35%{opacity:1;transform:translateY(-3px) scaleY(1.7)}100%{opacity:.8;transform:translateY(-1px) scaleY(1.2)}}
@keyframes flick{0%{opacity:.7;transform:translateY(-1px) scaleY(1.1)}100%{opacity:1;transform:translateY(-3px) scaleY(1.32)}}
@keyframes flick2{0%{opacity:.55;transform:translateY(-2px) scaleY(1.2)}100%{opacity:.9;transform:translateY(-4px) scaleY(1.42)}}
@media (prefers-reduced-motion:reduce){.brand::before,.brand::after{animation:none;opacity:.7}}
.tl{position:relative;margin:1rem 0 1rem 48px;border-left:1px solid #444}
.hl{position:absolute;left:0;right:0;border-top:1px solid #2a2a2a}.hl span{position:absolute;left:-46px;top:-8px;font-size:.75rem;color:#999}
.work{position:absolute;left:0;right:0;background:rgba(229,48,143,.07)}
.ev{position:absolute;left:6px;right:6px;border-radius:8px;padding:3px 8px;font-size:.85rem;overflow:hidden;background:#7a1f55;border-left:4px solid var(--pink)}
.ev.confirmada{background:#1f5c3a;border-color:#3ddc84}.ev.completada{background:#333;border-color:#888}.ev.no_vino{background:#5c1f1f;border-color:#ff6b6b}
.daynav{display:flex;gap:.4rem;align-items:center;flex-wrap:wrap}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:.6rem;margin:1rem 0}.kpis div{background:var(--card);border-radius:10px;padding:.7rem;display:flex;flex-direction:column}.kpis b{font-size:1.2rem;color:var(--pink)}.kpis small{color:#bbb}
.barrow{margin:.4rem 0}.bar{background:#222;border-radius:6px;height:10px}.bar i{display:block;height:100%;background:var(--pink);border-radius:6px}
.card button{margin-top:.4rem}
details{margin:.6rem 0;color:#bbb}
#services .card{cursor:pointer}
fieldset{border:1px solid #444;border-radius:8px;margin:0}legend{color:var(--pink);padding:0 .4rem}
.ev.pendiente{background:#7a1f55}
summary{cursor:pointer;padding:.7rem;background:var(--card);border-radius:10px;color:var(--tx);margin-bottom:.4rem}
.mpbox{padding:.4rem 0 1rem}
/* ===== cliente ===== */
input:focus,select:focus,textarea:focus{outline:2px solid var(--pink);border-color:var(--pink)}
button{transition:transform .15s,box-shadow .15s,opacity .15s}button:not(:disabled):active{transform:scale(.97)}
.client header{padding:.5rem 1rem;border-bottom:1px solid #2a2a2a;background:rgba(0,0,0,.92);backdrop-filter:blur(8px)}
.client h1{margin:0;display:flex;align-items:center}
.client main{padding-bottom:120px}
.ic{width:20px;height:20px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:-4px}
.tabbar{position:fixed;left:50%;transform:translateX(-50%);bottom:max(10px,env(safe-area-inset-bottom));width:min(94%,520px);display:flex;justify-content:space-around;gap:.2rem;background:rgba(20,20,20,.94);backdrop-filter:blur(10px);border:1px solid #333;border-radius:20px;padding:.35rem;z-index:20;box-shadow:0 8px 30px rgba(0,0,0,.6);overflow:visible}
.tabbar button{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;background:transparent;color:#aaa;font-size:.72rem;font-weight:600;padding:.45rem .2rem;border-radius:14px;white-space:nowrap}
.tabbar button .ic{width:22px;height:22px}
.tabbar button.on{background:var(--pink);color:#fff;box-shadow:0 0 14px rgba(229,48,143,.5)}
.client #msg{position:fixed;left:50%;transform:translateX(-50%);bottom:96px;z-index:30;max-width:92%;background:#1c1c1c;border:1px solid var(--pink);color:#fff;border-radius:14px;padding:.7rem 1rem;box-shadow:0 8px 30px rgba(0,0,0,.6);margin:0}
.client #msg:empty{display:none}
.hero{text-align:center;padding:1.6rem 1rem 1.4rem;margin-bottom:1.2rem;border-radius:22px;background:radial-gradient(120% 90% at 50% 0%,rgba(229,48,143,.28),transparent 60%),var(--card);border:1px solid #2c2c2c}
.hero-logo{width:120px;height:120px;border-radius:50%;object-fit:cover;box-shadow:0 0 30px rgba(229,48,143,.45)}
.hero h2{font-family:'Sedgwick Ave Display','Permanent Marker',cursive;font-weight:400;font-size:1.9rem;margin:.6rem 0 .2rem;color:#fff;letter-spacing:.03em}
.hero p{color:#bbb;margin:.2rem 0 1rem}
.cta{padding:.75rem 1.4rem;border-radius:14px;font-size:1rem;box-shadow:0 6px 20px rgba(229,48,143,.3)}
.hero .cta{padding:.85rem 1.8rem}
.sec{font-family:'Sedgwick Ave Display','Permanent Marker',cursive;font-weight:400;font-size:1.5rem;letter-spacing:.04em;margin:1.4rem 0 .8rem}
.sec::after{content:'';display:block;width:46px;height:3px;background:var(--pink);border-radius:2px;margin-top:4px}
.hours{background:var(--card);border-radius:16px;padding:.9rem 1rem;border:1px solid #2c2c2c}
.hours:empty{display:none}
.hours h3{margin:0 0 .5rem;font-size:1rem;display:flex;gap:.4rem;align-items:center;color:var(--pink)}
.hours .row{display:flex;justify-content:space-between;gap:1rem;padding:.3rem 0;border-bottom:1px dashed #2f2f2f;font-size:.92rem}
.hours .row:last-child{border:0}.hours .row span:first-child{color:#bbb}
.sc{background:var(--card);border-radius:18px;overflow:hidden;border:1px solid #2a2a2a;transition:transform .2s,box-shadow .2s,border-color .2s;display:flex;flex-direction:column}
.sc:hover{transform:translateY(-4px);border-color:var(--pink);box-shadow:0 10px 28px rgba(229,48,143,.25)}
#services .sc{cursor:pointer}
.sc-img{position:relative;height:170px;background:linear-gradient(135deg,#2a1020,#111)}
.sc-img img{width:100%;height:100%;object-fit:cover;display:block}
.sc-img .ph{height:100%;display:grid;place-items:center;color:var(--pink)}.sc-img .ph .ic{width:48px;height:48px}
.price{position:absolute;right:10px;top:10px;background:var(--pink);color:#fff;font-weight:700;padding:.3rem .7rem;border-radius:999px;box-shadow:0 4px 12px rgba(0,0,0,.4)}
.sc-body{padding:.9rem 1rem 1rem;display:flex;flex-direction:column;gap:.4rem;flex:1}
.sc-body h3{margin:0}.sc-body p{margin:0;color:#bbb;font-size:.92rem}
.meta{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center;color:#bbb;font-size:.85rem;margin-top:auto}
.badge{background:rgba(229,48,143,.15);color:#ff7cc0;border:1px solid rgba(229,48,143,.4);border-radius:999px;padding:.1rem .55rem;font-size:.75rem}
.sc-body .cta{margin-top:.5rem}
.sc.g .sc-img{height:230px}
.sk{height:300px;border-radius:18px;background:linear-gradient(90deg,#1c1c1c 25%,#262626 37%,#1c1c1c 63%);background-size:400% 100%;animation:shim 1.4s infinite}
@keyframes shim{0%{background-position:100% 50%}100%{background-position:0 50%}}
.empty{text-align:center;color:#999;padding:1.2rem}
.steps{display:flex;list-style:none;padding:0;margin:0 0 1rem;gap:.3rem}
.steps li{flex:1;text-align:center;font-size:.72rem;color:#888;position:relative;padding-top:30px}
.steps li::before{content:attr(data-n);position:absolute;top:0;left:50%;transform:translateX(-50%);width:24px;height:24px;border-radius:50%;background:#2a2a2a;color:#aaa;display:grid;place-items:center;font-weight:700;font-size:.8rem}
.steps li.done::before{content:'✓';background:var(--pink);color:#fff}
.steps li.cur::before{background:#fff;color:#000}.steps li.cur,.steps li.done{color:#fff}
.cal{background:var(--card);border-radius:16px;padding:.8rem;border:1px solid #2c2c2c;max-width:420px}
.cal-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:.5rem;font-weight:700;text-transform:capitalize}
.cal-h button{padding:.3rem .8rem;background:#2a2a2a}
.cal-g{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;text-align:center}
.cal-g .wd{font-size:.72rem;color:#888;padding:.2rem 0}
.cal-g button{padding:.55rem 0;background:#242424;color:#fff;border-radius:10px;border:1px solid transparent;font-weight:600}
.cal-g button.dis{background:transparent;color:#555;text-decoration:line-through;cursor:not-allowed}
.cal-g button.on{background:var(--pink);box-shadow:0 0 12px rgba(229,48,143,.5)}
.cal-g button.today{border-color:var(--pink)}
.slotgrp{margin:.8rem 0 .2rem;color:#999;font-size:.8rem;text-transform:uppercase;letter-spacing:.08em}
.slot{border-radius:12px}
.sum{background:rgba(229,48,143,.1);border:1px solid rgba(229,48,143,.4);border-radius:14px;padding:.8rem 1rem;margin:.6rem 0}
#bookbtn{padding:.85rem;border-radius:14px;font-size:1rem}
#guest form,#member{background:var(--card);padding:1rem;border-radius:16px;border:1px solid #2c2c2c}
#member h2{margin-top:1.2rem}
.avatar{display:inline-grid;place-items:center;width:42px;height:42px;border-radius:50%;background:var(--pink);font-weight:700;margin-right:.5rem;vertical-align:middle}
.wm{font-family:'Sedgwick Ave Display','Permanent Marker',cursive;font-weight:400;font-size:1.6rem;letter-spacing:.08em;color:#fff;line-height:1}
.wm b{font-weight:400;color:var(--pink)}
.client h1{justify-content:center}
.client h1 small{font-family:system-ui,sans-serif;letter-spacing:0;margin-left:.6rem;border:1px solid var(--pink);border-radius:999px;padding:.1rem .6rem;font-size:.7rem!important;color:var(--pink)!important}
.ghost{background:transparent!important;border:1px solid var(--pink);color:var(--pink)!important;padding:.6rem 1.2rem;border-radius:14px;margin-top:.7rem}
#installhelp{max-width:420px;margin:.6rem auto 0;font-size:.85rem}
.admin #install{display:block;margin:.5rem auto}
.client .tabbar button{font-size:.66rem}
.admin .tabbar{width:min(98%,560px)}
.tabbar button[id=out]{color:#ff7c7c}
.admin .list li{flex-wrap:wrap;gap:.6rem .8rem}
.admin .list li>span:last-child{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.admin .list li button{margin:0}
@media (max-width:600px){.admin .list li{flex-direction:column;align-items:stretch}.admin .list li>span:last-child{justify-content:flex-start}}
.tabbar button{position:relative}
.tabbar .dot{position:absolute;top:2px;left:calc(50% + 6px);width:11px;height:11px;border-radius:50%;background:#2ecc71;box-shadow:0 0 0 2px #151515,0 0 8px #2ecc71;animation:dotp 1.6s ease-in-out infinite}
@keyframes dotp{50%{transform:scale(1.25)}}
