/* Turnik: estilos comunes. Rojo #C62F26, azul #21407A, tinta #14171C, claro #F2F3F5 */
:root{
  --bg:#EEF0F3;--surface:#FFFFFF;--ink:#14171C;--muted:#5E6571;--line:#D6DAE0;--soft:#E3E8F1;
  --red:#C62F26;--navy:#21407A;--ok:#1E7A4C;--warn:#A35B00;--onacc:#FFFFFF;
  --f-display:"Big Shoulders Display",Impact,"Arial Narrow",sans-serif;
  --f-brand:"Bricolage Grotesque",system-ui,sans-serif;
  --f-body:"Familjen Grotesk",system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"JetBrains Mono",ui-monospace,Menlo,monospace;--r:18px;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#0F1216;--surface:#191D24;--ink:#EAEDF2;--muted:#9BA3AF;--line:#2C323C;--soft:#232A36;
  --red:#EC5A50;--navy:#8FAEEA;--ok:#5CC48C;--warn:#E5A44B;--onacc:#0F1216;color-scheme:dark}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--f-body);font-size:16px;line-height:1.5}
a{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer}
img{max-width:100%}
:focus-visible{outline:2.5px solid var(--navy);outline-offset:2px}
.pole{height:8px;background:repeating-linear-gradient(-45deg,var(--red) 0 12px,var(--surface) 12px 18px,var(--navy) 18px 30px,var(--surface) 30px 36px);background-size:51px 8px;animation:spin 2.4s linear infinite}
@keyframes spin{to{background-position:51px 0}}
.col{max-width:520px;margin:0 auto;padding:0 max(16px,env(safe-area-inset-left,0px)) 24px}
.wide{max-width:1100px}
.loading{padding:60px 16px;text-align:center;color:var(--muted)}
.muted{color:var(--muted)}.note{font-size:13px;color:var(--muted)}.mono{font-family:var(--f-mono);font-variant-numeric:tabular-nums}
.eyebrow{font-family:var(--f-mono);font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--red)}
h2{font-family:var(--f-display);font-weight:900;text-transform:uppercase;font-size:40px;line-height:.95;margin:10px 0 16px}
h3{margin:0 0 4px;font-size:18px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;padding:13px 20px;font-weight:700;font-size:16px;text-decoration:none;background:var(--ink);color:var(--bg)}
.btn:active{transform:scale(.97)}
.btn.red{background:var(--red);color:var(--onacc)}.btn.navy{background:var(--navy);color:#fff}
.btn.ghost{background:transparent;color:var(--ink);box-shadow:inset 0 0 0 1.5px var(--line)}
.btn.sm{padding:8px 14px;font-size:14px}.btn.block{width:100%}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.4;pointer-events:none}
.xbtn{border:0;background:transparent;color:var(--red);font-weight:600;font-size:14px;padding:6px 0}
.card{background:var(--surface);border-radius:var(--r);padding:18px;min-width:0}
.card .sub{margin:0 0 12px;color:var(--muted);font-size:14px}
.grid{display:grid;gap:14px}.g2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.g3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.stack{display:flex;flex-direction:column;gap:12px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.list{display:flex;flex-direction:column;gap:8px}
.item{background:var(--surface);border-radius:14px;padding:13px 15px;display:flex;align-items:center;gap:12px}
.item.in{background:var(--bg)}
.item .grow{flex:1;min-width:0}.item b{display:block}
.field{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:600}
.field input,.field select,.field textarea{border:2px solid var(--line);background:var(--surface);border-radius:14px;padding:12px 13px;font-size:16px;font-weight:400;width:100%;min-width:0}
.field textarea{min-height:96px;resize:vertical}
.field input:focus,.field textarea:focus{border-color:var(--navy);outline:0}
.banner{border-radius:14px;padding:12px 14px;display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap;background:color-mix(in srgb,var(--warn) 14%,var(--surface));font-size:14px}
.banner.ok{background:color-mix(in srgb,var(--ok) 14%,var(--surface))}
.banner.err{background:color-mix(in srgb,var(--red) 14%,var(--surface))}
.banner.gold{background:color-mix(in srgb,#F1C76A 32%,var(--surface))}
.pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;padding:4px 10px;border-radius:999px;background:var(--soft)}
.pill.ok{background:color-mix(in srgb,var(--ok) 18%,var(--surface));color:var(--ok)}
.pill.warn{background:color-mix(in srgb,var(--warn) 16%,var(--surface));color:var(--warn)}
.dot{width:8px;height:8px;border-radius:50%;background:var(--muted);display:inline-block}.dot.on{background:var(--ok)}
.av{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;font-family:var(--f-display);font-weight:900;font-size:20px;color:#fff;background:var(--navy);flex:none;overflow:hidden}
.av img{width:100%;height:100%;object-fit:cover}
.tabs{display:flex;gap:6px;overflow-x:auto;padding-bottom:6px;margin-bottom:14px}
.tabs button{flex:none;border:0;background:var(--surface);border-radius:999px;padding:9px 15px;font-weight:600;font-size:14px}
.tabs button[aria-selected="true"]{background:var(--ink);color:var(--bg)}
.badge{background:var(--red);color:var(--onacc);border-radius:999px;font-size:11px;padding:1px 7px;margin-left:6px}
.seg{display:inline-flex;flex-wrap:wrap;background:var(--surface);border-radius:999px;padding:4px;gap:2px}
.seg button{border:0;background:transparent;border-radius:999px;padding:7px 12px;font-size:13px;font-weight:600;color:var(--muted)}
.seg button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chips button{border:0;border-radius:999px;padding:7px 12px;font-size:13px;font-weight:600;background:var(--soft)}
.chips button[aria-pressed="true"]{background:var(--ink);color:var(--bg)}
.switch{appearance:none;-webkit-appearance:none;width:44px;height:26px;border-radius:999px;background:var(--line);position:relative;transition:background .2s;margin:0;flex:none;cursor:pointer}
.switch::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:var(--surface);transition:left .2s}
.switch:checked{background:var(--ok)}.switch:checked::after{left:21px}
.toggle{display:flex;align-items:center;gap:10px;font-weight:600}
.kpis{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:8px}
.kpis div{background:var(--surface);border-radius:14px;padding:10px 12px}
.kpis small{display:block;font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.08em}
.kpis b{font-family:var(--f-mono);font-size:20px}
.xs{overflow-x:auto;background:var(--surface);border-radius:var(--r)}
table.sheet{border-collapse:collapse;width:100%;min-width:560px;font-size:14px}
.sheet th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted);padding:10px;border-bottom:1.5px solid var(--line);background:var(--soft)}
.sheet td{padding:7px 10px;border-bottom:1px solid var(--line);white-space:nowrap}
.sheet .n{text-align:right;font-family:var(--f-mono)}
.made{display:flex;justify-content:center;align-items:center;gap:8px;padding:18px 0 26px;font-size:13px;color:var(--muted);text-decoration:none}
.tk{width:24px;height:24px;border-radius:7px;background:#C62F26;display:inline-grid;place-items:center;flex:none}
.tk::after{content:"";width:7px;height:15px;border-radius:4px;background:repeating-linear-gradient(-35deg,#21407A 0 3px,#fff 3px 5px)}
.tkname{font-family:var(--f-brand);font-weight:800;color:var(--ink);font-size:17px;letter-spacing:-.03em}
.empty{color:var(--muted);text-align:center;padding:24px 12px;background:var(--surface);border-radius:var(--r)}

/* Portal */
.ptop{display:flex;align-items:center;justify-content:space-between;padding:16px 0}
.plogo{display:flex;align-items:center;gap:8px;text-decoration:none}
.plogo .tk{width:32px;height:32px;border-radius:9px}.plogo .tk::after{width:9px;height:20px}
.plogo b{font-family:var(--f-brand);font-weight:800;font-size:26px;letter-spacing:-.03em}
.phero h1{font-family:var(--f-brand);font-weight:800;font-size:40px;line-height:.98;letter-spacing:-.035em;margin:18px 0 10px}
.search{display:flex;align-items:center;gap:10px;background:var(--surface);border-radius:14px;padding:0 14px;box-shadow:0 0 0 2px var(--ink);margin:14px 0 10px}
.search input{border:0;outline:0;flex:1;padding:15px 0;font-size:16px;background:transparent;min-width:0}
.shopcard{background:var(--surface);border-radius:20px;overflow:hidden;box-shadow:0 12px 30px -22px rgba(20,23,28,.6)}
.shopcard .hd{padding:16px;display:flex;gap:14px;align-items:center}
.shopcard .lg{width:60px;height:60px;border-radius:14px;background:var(--ink);color:var(--bg);display:grid;place-items:center;font-family:var(--f-display);font-weight:900;font-size:28px;flex:none;overflow:hidden}
.shopcard .lg img{width:100%;height:100%;object-fit:contain;background:#fff}
.sumate{background:#21407A;color:#fff;border-radius:22px;padding:22px 20px;margin-top:24px;display:flex;flex-direction:column;gap:10px}
.sumate h2{color:#fff;font-family:var(--f-brand);text-transform:none;font-size:28px;letter-spacing:-.03em;margin:0}

.ptags{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.ptags span{font-size:13px;font-weight:700;padding:6px 11px;border-radius:999px;background:var(--surface)}
.phead{display:flex;align-items:center;justify-content:space-between;margin-top:18px}
.pmapwrap{position:relative;margin-top:8px}
.pmap{height:300px;border-radius:20px;overflow:hidden;background:var(--soft);box-shadow:0 12px 30px -20px rgba(20,23,28,.5);z-index:0}
.pgeo{position:absolute;right:10px;top:10px;z-index:500;border:0;border-radius:999px;background:#fff;color:#14171C;font:inherit;font-size:13px;font-weight:700;padding:9px 13px;display:flex;gap:6px;align-items:center;box-shadow:0 4px 12px rgba(0,0,0,.18)}
.tkpin{width:32px;height:32px;border-radius:50% 50% 50% 0;transform:rotate(-45deg);background:#21407A;box-shadow:0 4px 10px rgba(0,0,0,.3);display:flex;align-items:center;justify-content:center;border:2px solid #fff}
.tkpin.first{background:#C62F26}
.tkpin span{transform:rotate(45deg);color:#fff;font-weight:800;font-size:14px;font-family:var(--f-body)}
.tkme{width:16px;height:16px;border-radius:50%;background:#2F7BEA;border:3px solid #fff;box-shadow:0 0 0 6px rgba(47,123,234,.25)}
.gmap{border-radius:18px;overflow:hidden;background:var(--soft);height:260px}.gmap iframe{border:0;width:100%;height:100%;display:block}
.maplibregl-popup-content{border-radius:14px!important;padding:12px 14px!important}
.tkpop{display:flex;flex-direction:column;gap:3px;font-family:var(--f-body);font-size:14px}
.tkpop a{font-weight:700;color:#C62F26;text-decoration:none}
.shopcard .lg{position:relative;overflow:visible}
.shopcard .pn{position:absolute;top:-6px;left:-6px;width:22px;height:22px;border-radius:50%;background:var(--navy);color:#fff;font-family:var(--f-body);font-size:12px;font-weight:800;display:grid;place-items:center;box-shadow:0 0 0 2px var(--surface)}
.psec{margin-top:34px;display:flex;flex-direction:column;gap:12px}
.ph2{font-family:var(--f-brand);font-weight:800;font-size:30px;line-height:1;letter-spacing:-.03em;text-transform:none;margin:0}
.ph3{font-family:var(--f-brand);font-weight:800;font-size:24px;letter-spacing:-.03em;margin:0}
.pstep{background:var(--surface);border-radius:18px;padding:16px;display:flex;gap:14px;align-items:flex-start}
.pstep div{display:flex;flex-direction:column;gap:2px}.pstep b{font-size:17px}
.pnum{width:38px;height:38px;border-radius:50%;background:var(--red);color:#fff;font-weight:800;font-size:18px;display:grid;place-items:center;flex:none}
.pcard{margin-top:22px;background:var(--surface);border-radius:22px;padding:20px;display:flex;flex-direction:column;gap:14px}
.pmini{border-radius:16px;overflow:hidden;box-shadow:0 10px 24px -16px rgba(20,23,28,.6)}
.pmini .hd{background:#C62F26;color:#fff;padding:12px 14px;display:flex;justify-content:space-between}
.pmini .gr{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;padding:12px;background:#fff}
.pst{aspect-ratio:1;border-radius:50%;box-shadow:inset 0 0 0 2px #D6DAE0;display:grid;place-items:center;font-size:9px;font-weight:800;color:#fff}
.pst.on{background:#C62F26;box-shadow:none}.pst.prize{background:#21407A;box-shadow:none}
.pmini .ft{background:#21407A;color:#fff;padding:10px 14px;display:flex;justify-content:space-between;font-size:14px}
.pprod{background:#fff;color:#14171C;border-radius:18px;padding:16px;display:flex;flex-direction:column;gap:8px}
.pprod .muted{color:#4A5260}
.pfaq{background:var(--surface);border-radius:16px;overflow:hidden}
.pfaq button{width:100%;border:0;background:transparent;font:inherit;font-size:16px;font-weight:700;color:var(--ink);text-align:left;padding:15px 16px;display:flex;justify-content:space-between;gap:10px}
.pfaq p{margin:0;padding:0 16px 15px;color:var(--muted);font-size:15px}
.pcontact{margin-top:30px;background:var(--surface);border-radius:22px;padding:20px;display:flex;flex-direction:column;gap:10px}

/* Página de barbería */
.top{display:flex;align-items:center;justify-content:space-between;padding:14px 0}
.brand{display:flex;align-items:center;gap:10px;font-family:var(--f-display);font-weight:900;font-size:22px;text-transform:uppercase;letter-spacing:.03em;text-decoration:none;min-width:0}
.brand img{height:40px;width:auto;max-width:150px;object-fit:contain}
.hname{font-family:var(--f-display);font-weight:900;text-transform:uppercase;font-size:calc(clamp(64px,19vw,104px)*var(--k,1));line-height:.85;margin:8px 0 12px;overflow-wrap:anywhere;color:var(--nc,var(--ink))}
.hname.ns-moderna{font-family:var(--f-brand);font-weight:800;text-transform:none;letter-spacing:-.04em;line-height:.9}
.hname.ns-elegante{font-family:"Playfair Display",Georgia,serif;font-weight:800;text-transform:none;line-height:.95}
.hname.ns-urbana{font-family:Anton,Impact,sans-serif;font-weight:400;line-height:.92}
.hname.ns-firma{font-family:Yellowtail,cursive;font-weight:400;text-transform:none;line-height:1.05}
.hname.ul::after{content:"";display:block;height:8px;width:min(160px,60%);margin-top:12px;border-radius:4px;background:repeating-linear-gradient(-45deg,var(--red) 0 8px,var(--surface) 8px 11px,var(--navy) 11px 19px,var(--surface) 19px 22px)}
.cover{margin:4px 0 16px;border-radius:var(--r);overflow:hidden;aspect-ratio:16/10;background:var(--surface)}
.cover img{width:100%;height:100%;object-fit:cover}
.cta{display:flex;flex-direction:column;gap:10px;margin-top:14px}
.cta .btn.red{font-size:19px;padding:18px 22px;justify-content:space-between}
.htabs{display:flex;gap:6px;margin:26px 0 12px;background:var(--surface);padding:5px;border-radius:999px}
.htabs button{flex:1;border:0;background:transparent;border-radius:999px;padding:9px 6px;font-weight:600;font-size:14px;color:var(--muted)}
.htabs button[aria-selected="true"]{background:var(--ink);color:var(--bg)}
.foot{padding:30px 0 0;font-size:13px;color:var(--muted);display:flex;justify-content:space-between;gap:12px}
.foot a{color:var(--navy);font-weight:600;text-decoration:none}

/* Reserva */
.wtop{display:flex;align-items:center;gap:12px;padding:14px 0}
.back{width:42px;height:42px;border-radius:50%;border:0;background:var(--surface);font-size:20px;flex:none}
.progress{flex:1;height:8px;background:var(--surface);border-radius:999px;overflow:hidden}
.progress span{display:block;height:100%;background:repeating-linear-gradient(-45deg,var(--red) 0 8px,var(--navy) 8px 16px)}
.opt{width:100%;border:2px solid transparent;background:var(--surface);border-radius:var(--r);padding:15px;display:flex;align-items:center;gap:14px;text-align:left}
.opt[aria-pressed="true"]{border-color:var(--navy)}
.opt .grow{flex:1;min-width:0}.opt b{display:block;font-size:17px}
.days{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 10px}
.day{flex:none;width:62px;border:0;background:var(--surface);border-radius:16px;padding:9px 0;text-align:center}
.day span{display:block;font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}
.day b{display:block;font-family:var(--f-display);font-size:28px;line-height:1.05}
.day[aria-pressed="true"]{background:var(--ink);color:var(--bg)}.day[aria-pressed="true"] span{color:inherit;opacity:.7}
.day:disabled{opacity:.3}
.times{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
.time{border:0;background:var(--surface);border-radius:12px;padding:12px 0;font-family:var(--f-mono);font-weight:700}
.time.busy{background:transparent;color:var(--muted);box-shadow:inset 0 0 0 1.5px var(--line);font-weight:500;display:flex;flex-direction:column;align-items:center;padding:6px 0}
.time.busy small{font-family:var(--f-body);font-size:10.5px;text-transform:uppercase}
.ticket{background:var(--surface);border-radius:var(--r);overflow:hidden}
.ticket .th{background:var(--ink);color:var(--bg);padding:12px 16px;display:flex;justify-content:space-between;font-family:var(--f-display);font-size:20px;text-transform:uppercase}
.ticket .tr{display:flex;justify-content:space-between;gap:12px;padding:10px 16px;border-top:1px dashed var(--line);font-size:15px}
.done{text-align:center;padding:36px 0}
.seal{width:84px;height:84px;border-radius:50%;margin:0 auto 16px;background:var(--ok);color:#fff;display:grid;place-items:center;font-size:42px}

/* Tarjeta de sellos */
.tcard{border-radius:22px;background:#F2F3F5;color:#14171C;box-shadow:0 18px 40px -20px rgba(20,23,28,.55);overflow:hidden}
.tcard .hd{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#C62F26;color:#fff;padding:14px 16px}
.tcard .shop{display:flex;align-items:center;gap:10px;font-family:var(--f-brand);font-weight:800;font-size:20px;letter-spacing:-.02em;min-width:0}
.tcard .m{height:40px;min-width:40px;max-width:120px;border-radius:9px;background:#fff;display:flex;align-items:center;justify-content:center;padding:4px;flex:none}
.tcard .m img{height:100%;width:auto;max-width:112px;object-fit:contain}
.tcard .m.icon::after{content:"";width:10px;height:22px;border-radius:5px;background:repeating-linear-gradient(-35deg,#21407A 0 4px,#C62F26 4px 7px)}
.tcard .cnt{text-align:right;font-family:var(--f-mono)}.tcard .cnt small{display:block;font-size:10px;letter-spacing:.12em;opacity:.85}.tcard .cnt b{font-size:22px}
.tcard .stripe{height:9px;background:repeating-linear-gradient(-45deg,#21407A 0 9px,#F2F3F5 9px 13px)}
.stamps{display:grid;gap:10px;padding:16px}
.st{aspect-ratio:1;border-radius:50%;display:grid;place-items:center;background:#fff;box-shadow:inset 0 0 0 2px #D7DBE2;color:#C3C9D2;font-size:11px;font-weight:700}
.st svg{width:54%;height:54%}
.st.on{background:#C62F26;color:#fff;box-shadow:none}
.st.prize{background:#21407A;color:#fff;box-shadow:none;font-family:var(--f-mono)}.st.prize.on{background:#C62F26}
.tcard .ft{display:flex;justify-content:space-between;align-items:end;gap:10px;background:#21407A;color:#fff;padding:12px 16px}
.tcard .ft small{display:block;font-size:10px;letter-spacing:.12em;opacity:.8;text-transform:uppercase}.tcard .ft b{font-size:17px}
.qrbox{background:var(--surface);border-radius:20px;padding:16px;display:flex;gap:16px;align-items:center}
.qr{width:120px;height:120px;flex:none;background:#fff;border-radius:12px;padding:8px}
.qr img,.qr canvas{width:100%!important;height:auto!important}
.code{font-family:var(--f-mono);font-size:14px;letter-spacing:.08em;background:var(--soft);border-radius:8px;padding:3px 8px;display:inline-block;margin-top:6px}
.scan{border-radius:20px;background:#0D1424;color:#fff;padding:18px;display:grid;gap:12px;place-items:center;text-align:center}
.upl{position:relative;display:inline-flex;overflow:hidden}
.upl input{position:absolute;inset:0;opacity:0;cursor:pointer;width:100%;font-size:0}
.bars{display:grid;grid-template-columns:repeat(7,1fr);gap:8px;height:140px}
.bars div{display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:4px;font-size:12px;color:var(--muted)}
.bars i{display:block;width:100%;max-width:36px;background:var(--red);border-radius:6px 6px 2px 2px;min-height:3px}
.hrow{display:grid;grid-template-columns:90px 50px 1fr 1fr;gap:8px;align-items:center;padding:6px 0;border-top:1px solid var(--line)}
.hrow input[type=time]{border:1.5px solid var(--line);background:var(--bg);border-radius:10px;padding:8px;width:100%;min-width:0}
.savebar{position:sticky;bottom:0;padding:12px 0 calc(12px + env(safe-area-inset-bottom,0px));background:var(--bg);display:flex;gap:10px;flex-wrap:wrap;z-index:3}
@media (max-width:420px){.times{grid-template-columns:repeat(3,1fr)}.g3{grid-template-columns:1fr 1fr}.hrow{grid-template-columns:78px 48px 1fr 1fr}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
