/* =====================================================================
   Fresh Alteraciones · sistema visual basado en la marca FRESH.
   (drycleaningbyfresh.com): azul marino #001a2d, azul FRESH #529ab7 / #2f7691,
   naranja #e4903c, fondo #f5f7f8, tipografía Outfit. Móvil primero.
   ===================================================================== */
@font-face{font-family:"Outfit";font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/outfit.woff2) format("woff2")}
:root{
  --ink:#001a2d;--tx:#14232f;--mut:#5d666d;--mut2:#87929a;
  --p:#001a2d;--p2:#032e50;--p3:#2f7691;--brand:#529ab7;--ps:#eaf3f7;--ps2:#deebf0;
  --gold:#e4903c;--gold2:#a65e16;--golds:#fdf2e6;
  --bg:#f5f7f8;--card:#fff;--line:#e6ebee;--line2:#d5dde2;
  --ok:#316750;--oks:#e6f1ec;--warn:#9a5a08;--warns:#fdf1dc;--bad:#b3261e;--bads:#fbe7e5;--info:#2f5e9e;--infos:#e7eef9;
  --r:14px;--r2:12px;--sh:0 1px 2px rgba(0,26,45,.05),0 4px 14px rgba(0,26,45,.06);--sh2:0 10px 30px rgba(0,26,45,.18);
  --serif:"Outfit",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --sans:"Outfit",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --navh:68px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;background:var(--bg);color:var(--tx);font:16px/1.45 var(--sans);-webkit-font-smoothing:antialiased}
button,input,select,textarea{font-family:inherit}
b,strong{font-weight:700}
a{color:var(--p2)}
svg.i{width:22px;height:22px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:middle}
svg.i.sm{width:18px;height:18px}svg.i.lg{width:28px;height:28px}svg.i.xl{width:40px;height:40px;stroke-width:1.5}
#app{max-width:720px;margin:0 auto;min-height:100vh;padding-bottom:calc(var(--navh) + 24px + env(safe-area-inset-bottom))}
#app.nonav{padding-bottom:24px}#app.hasbar{padding-bottom:calc(var(--navh) + 110px + env(safe-area-inset-bottom))}#app.nonav.hasbar{padding-bottom:120px}
:focus-visible{outline:3px solid var(--gold);outline-offset:2px}

/* ---------- Encabezado ---------- */
header.top{position:sticky;top:0;z-index:10;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);color:var(--ink);border-bottom:1px solid var(--line);padding:10px 12px;padding-top:calc(10px + env(safe-area-inset-top));display:flex;align-items:center;gap:8px;min-height:60px}
header.top h1{font:600 19px/1.2 var(--sans);margin:0 4px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;letter-spacing:.1px}
header.top .logo{height:20px;width:auto;display:block;flex:none}
header.top .ib{width:44px;height:44px;border-radius:50%;border:0;background:var(--bg);color:var(--ink);display:inline-flex;align-items:center;justify-content:center;cursor:pointer}
header.top .ib:active{background:var(--ps2)}
header.top .brand{width:36px;height:36px;border-radius:10px;background:var(--brand);display:inline-flex;align-items:center;justify-content:center;color:#fff;flex:none}
.who{display:flex;align-items:center;gap:8px;font-size:13px;line-height:1.15;text-align:right;max-width:42%}
.who small{display:block;color:var(--mut);font-size:11px}
.avatar{width:36px;height:36px;border-radius:50%;background:var(--ps2);color:var(--p3);font-weight:700;font-size:14px;display:inline-flex;align-items:center;justify-content:center;flex:none;border:0}
main{padding:14px 14px 0;animation:fadeIn .22s ease}
@keyframes fadeIn{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

/* ---------- Navegación inferior ---------- */
nav.bottom{position:fixed;bottom:0;left:0;right:0;background:rgba(255,255,255,.97);backdrop-filter:blur(8px);border-top:1px solid var(--line);display:flex;justify-content:center;z-index:9;padding-bottom:env(safe-area-inset-bottom);box-shadow:0 -4px 18px rgba(0,26,45,.05)}
nav.bottom a{flex:1;max-width:140px;min-height:var(--navh);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;color:var(--mut);text-decoration:none;font-size:11.5px;font-weight:600;position:relative}
nav.bottom a .ni{width:48px;height:30px;border-radius:15px;display:flex;align-items:center;justify-content:center;transition:background .2s}
nav.bottom a.on{color:var(--p)}nav.bottom a.on .ni{background:var(--ps)}
nav.bottom a.on svg.i{stroke-width:2.2}

/* ---------- Tipografía ---------- */
h2{font:600 19px/1.25 var(--serif);color:var(--ink);margin:22px 2px 10px;display:flex;align-items:center;gap:8px}
h2 .count{font:700 12px var(--sans);background:var(--ps);color:var(--p);border-radius:999px;padding:2px 9px}
h3{font-size:16px;font-weight:700;margin:4px 0 8px;color:var(--ink)}
.mut{color:var(--mut);font-size:14px}.tiny{font-size:12px;color:var(--mut)}
.eyebrow{font-size:11.5px;font-weight:700;letter-spacing:.9px;text-transform:uppercase;color:var(--gold2)}
.serif{font-family:var(--serif)}

/* ---------- Tarjetas ---------- */
.card{background:var(--card);border-radius:var(--r);padding:16px;margin:0 0 12px;box-shadow:var(--sh);border:1px solid rgba(236,229,233,.7)}
.card.flat{box-shadow:none}
.card.tight{padding:12px}
.sec-title{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}

/* ---------- Botones ---------- */
.btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:52px;border:0;border-radius:100px;background:var(--p);color:#fff;font-size:16.5px;font-weight:600;padding:12px 18px;margin:8px 0;cursor:pointer;text-decoration:none;transition:transform .08s,filter .15s,background .15s;letter-spacing:.1px}
.btn:active{transform:scale(.985);filter:brightness(.95)}
.btn.sec{background:var(--ps);color:var(--p)}.btn.ok{background:var(--ok)}.btn.warn{background:var(--warn)}.btn.bad{background:var(--bad)}
.btn.gold{background:var(--gold);color:#1f1205}
.btn.brand{background:var(--brand);color:#fff}
.btn.ghost{background:#fff;color:var(--p);border:1.5px solid var(--line2)}
.btn.link{background:none;color:var(--p2);min-height:44px;font-weight:600}
.btn.danger-ghost{background:#fff;color:var(--bad);border:1.5px solid #f0cfcb}
.btn:disabled{opacity:.42;pointer-events:none}
.btn.sm{min-height:44px;font-size:14.5px;width:auto;display:inline-flex;margin:4px 6px 4px 0;padding:8px 16px;border-radius:100px}
.btn.xl{min-height:76px;font-size:21px;border-radius:100px}
.btn.icon{width:44px;min-width:44px;padding:0;margin:0}
.row{display:flex;gap:10px}.row>*{flex:1;min-width:0}
.row.c{align-items:center}

/* ---------- Formularios ---------- */
label{display:block;font-weight:600;font-size:14px;margin:14px 0 6px;color:#36434c}
input,select,textarea{width:100%;font-size:16.5px;padding:13px 14px;border:1.5px solid var(--line2);border-radius:12px;background:#fff;color:var(--tx);min-height:50px;transition:border-color .15s,box-shadow .15s}
textarea{min-height:90px;resize:vertical;line-height:1.4}
input:focus,select:focus,textarea:focus{outline:none;border-color:var(--p3);box-shadow:0 0 0 4px rgba(82,154,183,.22)}
input::placeholder,textarea::placeholder{color:#9aa4ab}
.field-ic{position:relative}.field-ic svg.i{position:absolute;left:14px;top:50%;transform:translateY(-50%);color:var(--mut2)}.field-ic input{padding-left:46px}
.check{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1.5px solid var(--line);border-radius:12px;margin:8px 0;font-weight:600;min-height:52px;background:#fff;cursor:pointer}
.check input{width:24px;height:24px;min-height:0;flex:none;accent-color:var(--p)}
.check:has(input:checked){border-color:var(--ok);background:#f6fbf8}

/* ---------- Chips / niveles ---------- */
.chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12.5px;font-weight:700;background:#eef1f3;color:#3e4a52;white-space:nowrap;line-height:1.2}
.chip.st:before{content:"";width:7px;height:7px;border-radius:50%;background:currentColor}
.chip.recibido{background:var(--infos);color:var(--info)}.chip.en_proceso{background:var(--warns);color:var(--warn)}.chip.listo{background:var(--oks);color:var(--ok)}.chip.entregado{background:#eceff1;color:#56616a}.chip.cancelado{background:#eceff1;color:#56616a;text-decoration:line-through}
.chip.retrabajo{background:var(--bads);color:var(--bad)}
.chip.rush{background:#fde8d6;color:#a3480b}.chip.same_day{background:var(--bads);color:var(--bad)}
.chip.paid{background:var(--oks);color:var(--ok)}.chip.unpaid{background:var(--bads);color:var(--bad)}
.chip.gold{background:var(--golds);color:var(--gold2)}
.lvl{display:inline-flex;align-items:center;justify-content:center;min-width:38px;height:26px;padding:0 8px;border-radius:8px;color:#fff;font-weight:800;font-size:12.5px;letter-spacing:.3px;flex:none}
.l1{background:#5e8b6e}.l2{background:#3f7f86}.l3{background:#4a6fa5}.l4{background:#6a55a3}.l5{background:#a2477a}.l6{background:#c0563a}.l7{background:#001a2d;color:#f2b46f}
.lvl-legend{display:flex;gap:6px;flex-wrap:wrap}

/* ---------- Listas de órdenes ---------- */
.filters{display:flex;gap:8px;overflow-x:auto;padding:2px 2px 6px;margin:0 -2px;scrollbar-width:none}
.filters::-webkit-scrollbar{display:none}
.filters button{flex:none;min-height:40px;padding:0 14px;border-radius:999px;border:1.5px solid var(--line2);background:#fff;font-weight:700;font-size:13.5px;color:var(--mut);display:inline-flex;align-items:center;gap:6px}
.filters button.on{background:var(--p);border-color:var(--p);color:#fff}
.filters button b{font-size:12px;background:rgba(0,0,0,.08);border-radius:999px;padding:1px 7px}
.filters button.on b{background:rgba(255,255,255,.22)}
.grp h2{justify-content:space-between}
.grp.atrasadas h2{color:var(--bad)}.grp.hoy h2{color:var(--warn)}.grp.listas h2{color:var(--ok)}
.ocard{display:block;color:inherit;text-decoration:none;position:relative;padding-left:20px;overflow:hidden}
.ocard:before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;background:var(--line2)}
.ocard.atrasadas:before{background:var(--bad)}.ocard.hoy:before{background:var(--warn)}.ocard.listas:before{background:var(--ok)}.ocard.manana:before{background:var(--info)}.ocard.proximas:before{background:var(--p3)}
.ocard:active{transform:scale(.995)}
.ocard .t{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.ocard .num{font-size:12.5px;font-weight:700;color:var(--mut);letter-spacing:.3px}
.ocard .name{font-size:17px;font-weight:700;color:var(--ink);margin-top:1px}
.ocard .amt{font-weight:800;font-size:17px;color:var(--ink)}
.ocard .s{display:flex;gap:6px;flex-wrap:wrap;margin-top:10px;align-items:center}
.ocard .meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;color:var(--mut);font-size:13.5px}
.ocard .meta span{display:inline-flex;align-items:center;gap:5px}
.ocard .meta svg.i{width:16px;height:16px}
.ocard .chev{position:absolute;right:12px;bottom:14px;color:var(--mut2)}
.empty{color:var(--mut);text-align:center;padding:26px 16px;font-size:14.5px;background:rgba(255,255,255,.6);border:1.5px dashed var(--line2);border-radius:var(--r);margin-bottom:12px}
.empty svg.i{display:block;margin:0 auto 8px;color:var(--gold);width:34px;height:34px;stroke-width:1.5}
.empty b{display:block;color:var(--ink);font-size:15.5px;margin-bottom:2px}
.hero{background:linear-gradient(135deg,#032e50,#00111e);color:#fff;border-radius:20px;padding:18px;margin-bottom:14px;position:relative;overflow:hidden;box-shadow:var(--sh)}
.hero:after{content:"";position:absolute;right:-40px;top:-40px;width:160px;height:160px;border-radius:50%;border:24px solid rgba(82,154,183,.22)}
.hero .hi{font:600 22px/1.2 var(--serif);margin:2px 0 4px}
.hero .stats{display:flex;gap:10px;margin-top:14px;position:relative;z-index:1}
.hero .stats div{flex:1;background:rgba(255,255,255,.1);border-radius:12px;padding:10px}
.hero .stats b{display:block;font-size:22px}.hero .stats span{font-size:12px;opacity:.85}
.hero .stats .bad b{color:#ffb4ab}

/* ---------- Asistente nueva orden ---------- */
.stepper{display:flex;gap:6px;margin:2px 0 6px}
.stepper .st{flex:1;display:flex;flex-direction:column;gap:6px;font-size:11.5px;font-weight:700;color:var(--mut2);text-align:center}
.stepper .st i{display:block;height:5px;border-radius:3px;background:var(--line2)}
.stepper .st.done i,.stepper .st.on i{background:var(--p)}.stepper .st.on{color:var(--p)}.stepper .st.done{color:var(--p3)}
.stephead{display:flex;align-items:baseline;justify-content:space-between;margin:14px 2px 10px}
.stephead h2{margin:0}.stephead .mut{font-size:13px}
.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.tile{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:96px;padding:10px 6px;border-radius:16px;border:1.5px solid var(--line2);background:#fff;font-size:14px;font-weight:700;color:var(--ink);cursor:pointer;transition:all .15s;text-align:center}
.tile svg.i{width:34px;height:34px;stroke-width:1.5;color:var(--p2)}
.tile.on{border-color:var(--p);background:var(--ps);box-shadow:0 0 0 3px rgba(47,118,145,.16)}
.tile:active{transform:scale(.97)}
.gcard{padding:0;overflow:hidden}
.gcard .gh{display:flex;align-items:center;gap:12px;padding:14px 14px 10px}
.gcard .gico{width:46px;height:46px;border-radius:14px;background:var(--ps);color:var(--p2);display:flex;align-items:center;justify-content:center;flex:none}
.gcard .gt{flex:1;min-width:0}.gcard .gt b{display:block;font-size:16.5px;color:var(--ink)}
.gcard .gbody{padding:0 14px 12px}
.gcard .gfoot{display:flex;gap:8px;padding:10px 14px 14px;border-top:1px solid var(--line);flex-wrap:wrap}
.gcard .gfoot .btn{margin:0}
.line{display:flex;gap:10px;align-items:flex-start;padding:10px 0;border-bottom:1px solid var(--line)}
.line:last-child{border-bottom:0}
.line .lvl{margin-top:1px}.line .n{flex:1;min-width:0;font-weight:600}.line .n .mut{font-weight:500}
.line .pr{font-weight:800;white-space:nowrap}
.line .x{width:36px;height:36px;border-radius:10px;border:0;background:transparent;color:var(--mut2);display:flex;align-items:center;justify-content:center;margin:-6px -6px 0 0;cursor:pointer}
.meas{display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:700;color:var(--p2);background:var(--ps);padding:2px 8px;border-radius:8px;margin-top:4px}
.meas svg.i{width:14px;height:14px}
.thumbs{display:flex;gap:8px;flex-wrap:wrap;margin-top:6px}
.thumbs .th{width:62px;height:62px;border-radius:12px;overflow:hidden;position:relative;background:var(--ps)}
.thumbs .th img{width:100%;height:100%;object-fit:cover;display:block}
.thumbs .th button{position:absolute;top:2px;right:2px;width:24px;height:24px;border-radius:50%;border:0;background:rgba(0,0,0,.6);color:#fff;display:flex;align-items:center;justify-content:center;padding:0}
.thumbs .th button svg.i{width:14px;height:14px}
.addtile{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;min-height:64px;border-radius:16px;border:2px dashed var(--line2);background:rgba(255,255,255,.6);color:var(--p);font-weight:700;font-size:16px;cursor:pointer;margin:0 0 12px}
.svc{display:flex;align-items:center;gap:12px;padding:14px 12px;border-radius:12px;cursor:pointer;min-height:56px}
.svc+.svc{border-top:1px solid var(--line)}
.svc:active{background:var(--ps)}.svc .n{flex:1;font-weight:600}.svc b{font-weight:800}
.svc .chev{color:var(--mut2)}
.suggest{background:var(--ps);border-radius:14px;padding:14px;margin:12px 0;display:flex;align-items:center;gap:14px}
.suggest .big{font:700 30px/1 var(--serif);color:var(--p)}
.seg{display:grid;grid-template-columns:repeat(2,1fr);gap:8px}
.seg button,.grid button{min-height:52px;border-radius:12px;border:1.5px solid var(--line2);background:#fff;font-size:14.5px;font-weight:700;color:var(--tx);padding:6px;cursor:pointer}
.seg button.on,.grid button.on{background:var(--p);color:#fff;border-color:var(--p)}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.cap{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:5px}
.cap button{border:1.5px solid var(--line2);background:#fff;border-radius:12px;padding:8px 0;min-height:78px;font-size:11px;font-weight:600;color:var(--tx);min-width:0;overflow:hidden;cursor:pointer;line-height:1.2}
.cap button small{display:block;font-size:9.5px;color:var(--mut);font-weight:500}
.cap button b{display:block;font-size:20px;margin-top:3px}
.cap button.on{border-color:var(--p);background:var(--ps);box-shadow:0 0 0 2px var(--p) inset}
.cap button:disabled{opacity:.35}
.cap button.lo b{color:var(--ok)}.cap button.mid b{color:var(--warn)}.cap button.hi b{color:var(--bad)}
.legend{display:flex;gap:12px;font-size:12px;color:var(--mut);margin-top:8px}
.legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:4px}

/* Barra fija inferior (total + acción) */
.actionbar{position:fixed;left:0;right:0;bottom:calc(var(--navh) + env(safe-area-inset-bottom));z-index:8;padding:10px 14px;background:rgba(255,255,255,.98);backdrop-filter:blur(8px);border-top:1px solid var(--line);box-shadow:0 -6px 20px rgba(0,26,45,.07)}
#app.nonav .actionbar{bottom:0;padding-bottom:calc(10px + env(safe-area-inset-bottom))}
.actionbar .in{max-width:692px;margin:0 auto;display:flex;align-items:center;gap:10px}
.actionbar .btn{margin:0;flex:1}
.actionbar .btn.back{flex:none;width:52px;border-radius:50%;padding:0;background:var(--ps);color:var(--p)}
.actionbar .sum{flex:none;min-width:84px;line-height:1.1}
.actionbar .sum small{display:block;font-size:11.5px;color:var(--mut);font-weight:600}
.actionbar .sum b{font:700 22px var(--serif);color:var(--ink)}
.tot{display:flex;justify-content:space-between;padding:5px 0;font-size:15px}
.tot.big{font:700 22px var(--serif);border-top:1px solid var(--line);margin-top:8px;padding-top:12px;color:var(--ink)}
.kv{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;font-size:15px;align-items:baseline}
.kv>b{color:var(--mut);font-weight:600;font-size:13.5px}
.review-h{display:flex;align-items:center;gap:12px}
.review-h .avatar{width:46px;height:46px;font-size:17px;border:0;background:var(--ps)}

/* Éxito */
.success{text-align:center;padding:26px 8px 6px}
.success .badge{width:92px;height:92px;border-radius:50%;background:var(--oks);color:var(--ok);display:flex;align-items:center;justify-content:center;margin:0 auto 14px;animation:pop .45s cubic-bezier(.2,1.6,.4,1)}
.success .badge svg.i{width:48px;height:48px;stroke-width:2.4}
.success h2{justify-content:center;font-size:26px;margin:4px 0}
.success .big{font:700 46px/1 var(--serif);color:var(--p);margin:10px 0 4px}
@keyframes pop{from{transform:scale(.3);opacity:0}to{transform:none;opacity:1}}

/* ---------- Detalle de orden ---------- */
.ohead{padding:18px}
.ohead .top{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}
.ohead .num{font:700 30px/1 var(--serif);color:var(--ink)}
.ohead .chips{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}
.ohead .client{display:flex;align-items:center;gap:12px;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.ohead .client .avatar{width:44px;height:44px;border:0;background:var(--ps);font-size:16px}
.ohead .client b{display:block;font-size:17px;color:var(--ink)}
.ohead .call{margin-left:auto;width:46px;height:46px;border-radius:50%;background:var(--oks);color:var(--ok);display:flex;align-items:center;justify-content:center;flex:none}
.due{display:flex;align-items:center;gap:12px;margin-top:12px;background:var(--golds);border-radius:12px;padding:10px 12px}
.due svg.i{color:var(--gold2)}.due b{display:block;font-size:16px;color:var(--ink)}.due.late{background:var(--bads)}.due.late svg.i,.due.late b{color:var(--bad)}
.progress{display:flex;align-items:flex-start;margin:4px 0 2px}
.progress .ps{flex:1;text-align:center;font-size:11.5px;font-weight:700;color:var(--mut2);position:relative}
.progress .ps .dot{width:28px;height:28px;border-radius:50%;background:#fff;border:2px solid var(--line2);margin:0 auto 6px;display:flex;align-items:center;justify-content:center;position:relative;z-index:1;color:#fff}
.progress .ps .dot svg.i{width:15px;height:15px;stroke-width:3}
.progress .ps:not(:first-child):before{content:"";position:absolute;top:13px;right:50%;width:100%;height:2px;background:var(--line2)}
.progress .ps.done .dot{background:var(--p);border-color:var(--p)}.progress .ps.done{color:var(--p)}
.progress .ps.done:not(:first-child):before{background:var(--p)}
.progress .ps.cur .dot{background:#fff;border-color:var(--p);box-shadow:0 0 0 4px rgba(47,118,145,.18)}.progress .ps.cur .dot:after{content:"";width:10px;height:10px;border-radius:50%;background:var(--p)}
.progress .ps.cur{color:var(--p)}.progress .ps.cur:not(:first-child):before{background:var(--p)}
.notes{background:var(--golds);border:1.5px solid #f3d6b5;border-left:5px solid var(--gold);border-radius:14px;padding:14px 16px;margin:0 0 12px;font-size:16px;white-space:pre-wrap;color:#4a3418}
.notes .eyebrow{display:flex;align-items:center;gap:6px;margin-bottom:6px;white-space:normal}
.notes .eyebrow svg.i{width:16px;height:16px}
.ba{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:12px}
.bacol{border-radius:14px;padding:10px;background:#f7f9fa;border:1.5px solid var(--line)}
.bah{display:flex;justify-content:space-between;align-items:center;font-weight:800;font-size:12px;letter-spacing:.8px;margin-bottom:8px;color:var(--mut)}
.bacol.antes .bah{color:var(--info)}.bacol.despues .bah{color:var(--ok)}
.photos{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.photos.one{grid-template-columns:1fr}
.photos button{padding:0;border:0;border-radius:10px;overflow:hidden;aspect-ratio:1;background:var(--ps);cursor:zoom-in}
.photos.one button{aspect-ratio:4/3}
.photos img{width:100%;height:100%;object-fit:cover;display:block}
.nophoto{color:var(--mut2);font-size:12.5px;aspect-ratio:4/3;display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;border:1.5px dashed var(--line2);border-radius:10px;width:100%}
.bacol .btn.sm{width:100%;margin:8px 0 0}
.actions-list{padding:6px}
.al{display:flex;align-items:center;gap:14px;width:100%;min-height:56px;padding:10px 12px;border:0;background:none;border-radius:12px;font-size:15.5px;font-weight:600;color:var(--tx);text-align:left;cursor:pointer;text-decoration:none}
.al+.al{border-top:1px solid var(--line)}
.al:active{background:var(--ps)}
.al .ico{width:40px;height:40px;border-radius:12px;background:var(--ps);color:var(--p2);display:flex;align-items:center;justify-content:center;flex:none}
.al .lt{flex:1}.al .lt small{display:block;font-weight:500;color:var(--mut);font-size:12.5px}
.al.danger{color:var(--bad)}.al.danger .ico{background:var(--bads);color:var(--bad)}
.al .chev{color:var(--mut2)}
.timeline{position:relative;padding-left:6px}
.tl{position:relative;padding:0 0 16px 30px}
.tl:before{content:"";position:absolute;left:9px;top:22px;bottom:0;width:2px;background:var(--line)}
.tl:last-child{padding-bottom:2px}.tl:last-child:before{display:none}
.tl .d{position:absolute;left:0;top:2px;width:20px;height:20px;border-radius:50%;background:var(--ps);border:2px solid var(--p3);display:flex;align-items:center;justify-content:center}
.tl.ok .d{border-color:var(--ok);background:var(--oks)}.tl.bad .d{border-color:var(--bad);background:var(--bads)}.tl.warn .d{border-color:var(--warn);background:var(--warns)}.tl.info .d{border-color:var(--info);background:var(--infos)}
.tl b{font-size:14.5px;color:var(--ink)}.tl .dt{font-size:13.5px;color:var(--tx)}.tl .tm{font-size:12.5px;color:var(--mut)}
.hist{font-size:14px;border-left:3px solid var(--line2);padding:4px 0 8px 12px;margin:0 0 8px 2px}
.alert{display:flex;gap:10px;align-items:flex-start;border-radius:14px;padding:12px 14px;margin:8px 0 12px;font-size:14.5px;font-weight:600;line-height:1.4}
.alert>svg.i{margin-top:1px}
.alert .btn.sm{margin:6px 0 0}
.alert.warn{background:var(--warns);color:var(--warn)}.alert.bad{background:var(--bads);color:var(--bad)}.alert.ok{background:var(--oks);color:var(--ok)}.alert.info{background:var(--infos);color:var(--info)}
.alert .ac{flex:1}

/* ---------- Visor de fotos ---------- */
.viewer{position:fixed;inset:0;background:#000a12;z-index:40;display:flex;flex-direction:column;animation:fadeIn .18s}
.viewer .vt{display:flex;align-items:center;justify-content:space-between;color:#fff;padding:12px 14px;padding-top:calc(12px + env(safe-area-inset-top));font-weight:700}
.viewer .vt button,.viewer .nav{width:46px;height:46px;border-radius:50%;border:0;background:rgba(255,255,255,.14);color:#fff;display:flex;align-items:center;justify-content:center}
.viewer .vi{flex:1;display:flex;align-items:center;justify-content:center;position:relative;touch-action:pan-y;overflow:hidden}
.viewer img{width:100%;height:100%;object-fit:contain}
.viewer .nav{position:absolute;top:50%;transform:translateY(-50%)}.viewer .nav.p{left:10px}.viewer .nav.n{right:10px}
.viewer .vk{position:absolute;left:14px;bottom:18px;color:#fff}
.viewer .cnt{color:rgba(255,255,255,.75);text-align:center;padding:12px;padding-bottom:calc(14px + env(safe-area-inset-bottom));font-size:14px}

/* ---------- Reportes ---------- */
.kpis{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.kpi{background:#fff;border-radius:16px;padding:14px;box-shadow:var(--sh);border:1px solid rgba(236,229,233,.7)}
.kpi b{display:block;font:700 24px/1.15 var(--serif);color:var(--ink)}
.kpi span{font-size:12.5px;color:var(--mut);font-weight:600}
.kpi.accent{background:linear-gradient(135deg,#032e50,#00111e);border:0}.kpi.accent b{color:#fff}.kpi.accent span{color:rgba(255,255,255,.8)}
.kpi .tr{font-size:12px;font-weight:700}
.bars{display:flex;flex-direction:column;gap:12px}
.hbar .hl{display:flex;justify-content:space-between;font-size:14px;font-weight:600;margin-bottom:5px}
.hbar .hl span:last-child{font-weight:800}
.hbar .tr{height:10px;background:#e9eef1;border-radius:6px;overflow:hidden}
.hbar .tr i{display:block;height:100%;border-radius:6px;background:linear-gradient(90deg,var(--p2),var(--p3))}
.hbar.gold .tr i{background:linear-gradient(90deg,var(--gold2),var(--gold))}
.vbars{display:flex;align-items:flex-end;gap:8px;height:130px;padding-top:10px}
.vbars .vb{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;height:100%;font-size:11px;color:var(--mut);font-weight:600;gap:4px}
.vbars .vb i{display:block;width:100%;max-width:36px;border-radius:8px 8px 3px 3px;background:linear-gradient(180deg,var(--p3),var(--p));min-height:3px}
.vbars .vb b{color:var(--ink);font-size:11.5px}
.ab{display:flex;flex-direction:column;gap:6px;margin:10px 0}
.ab .r{display:grid;grid-template-columns:110px 1fr 64px;gap:8px;align-items:center;font-size:13px}
.ab .r .tr{height:12px;background:#e9eef1;border-radius:6px;overflow:hidden}.ab .r .tr i{display:block;height:100%;border-radius:6px}
.ab .r .v{text-align:right;font-weight:800}
.ab .r.win{font-weight:800}.ab .r.win .lab:after{content:" ✓";color:var(--ok)}
.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}
.stat-grid div{background:#f7f9fa;border-radius:12px;padding:10px 8px;text-align:center}
.stat-grid b{display:block;font-size:19px;color:var(--ink)}.stat-grid span{font-size:11.5px;color:var(--mut);font-weight:600}
.stat-grid .bad b{color:var(--bad)}
table{width:100%;border-collapse:collapse;font-size:14px}th,td{padding:10px 6px;text-align:right;border-bottom:1px solid var(--line)}th{font-size:12px;color:var(--mut);text-transform:uppercase;letter-spacing:.5px;font-weight:700}th:first-child,td:first-child{text-align:left}
.rlist .rr{display:flex;justify-content:space-between;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}.rlist .rr:last-child{border-bottom:0}
.rlist .rr b{color:var(--ink)}.rlist .rr .v{text-align:right;font-weight:800;white-space:nowrap}
.pager{display:flex;align-items:center;gap:10px;margin:4px 0 12px}
.pager button{width:48px;height:48px;border-radius:14px;border:1.5px solid var(--line2);background:#fff;color:var(--p);display:flex;align-items:center;justify-content:center;flex:none;cursor:pointer}
.pager .lbl{flex:1;text-align:center;font-weight:700;color:var(--ink)}.pager .lbl small{display:block;font-weight:500;color:var(--mut);font-size:12px}

/* ---------- Login ---------- */
.login{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px 24px;background:radial-gradient(120% 70% at 50% 0%,#0b4166 0%,#001a2d 50%,#00111e 100%);color:#fff;position:relative;overflow:hidden}
.login:before{content:"";position:absolute;width:420px;height:420px;border-radius:50%;border:1px solid rgba(82,154,183,.18);top:-160px;right:-160px}
.login:after{content:"";position:absolute;width:300px;height:300px;border-radius:50%;border:1px solid rgba(82,154,183,.12);bottom:-120px;left:-120px}
.login .logo{width:190px;height:auto;display:block;position:relative;z-index:1}
.login h1{font:500 15px/1.1 var(--sans);margin:14px 0 2px;letter-spacing:5px;text-transform:uppercase;color:#cfe3ec}
.login .tag{font-size:11.5px;letter-spacing:2.6px;text-transform:uppercase;color:#529ab7;font-weight:600}
.login p{opacity:.85;margin:22px 0 0;font-size:15px}
.dots{display:flex;gap:18px;margin:14px 0 26px;height:16px}.dots i{width:14px;height:14px;border-radius:50%;border:2px solid rgba(255,255,255,.7);transition:all .15s}.dots i.f{background:#529ab7;border-color:#529ab7;transform:scale(1.15)}
.dots.shake{animation:shake .4s}
@keyframes shake{20%,60%{transform:translateX(-10px)}40%,80%{transform:translateX(10px)}}
.pad{display:grid;grid-template-columns:repeat(3,78px);gap:16px 22px;position:relative;z-index:1}
.pad button{height:78px;border-radius:50%;border:1px solid rgba(255,255,255,.14);background:rgba(255,255,255,.08);color:#fff;font:500 28px var(--sans);display:flex;align-items:center;justify-content:center;cursor:pointer;transition:background .1s}
.pad button:active{background:rgba(255,255,255,.26)}
.pad button.fn{background:transparent;border-color:transparent}
.pad button.ok{background:#529ab7;color:#fff;border:0}
.login .foot{margin-top:28px;font-size:12px;opacity:.6;position:relative;z-index:1}

/* ---------- Modales / diálogos / toasts ---------- */
.modal-bg{position:fixed;inset:0;background:rgba(0,17,30,.55);z-index:30;display:flex;align-items:flex-end;justify-content:center;animation:fade .2s}
@keyframes fade{from{opacity:0}}
.modal{background:#fff;width:100%;max-width:640px;max-height:92vh;max-height:92dvh;overflow:auto;border-radius:24px 24px 0 0;padding:8px 18px calc(22px + env(safe-area-inset-bottom));animation:up .26s cubic-bezier(.2,.9,.3,1);overscroll-behavior:contain}
.modal:before{content:"";display:block;width:42px;height:5px;border-radius:3px;background:var(--line2);margin:4px auto 12px}
@keyframes up{from{transform:translateY(40px);opacity:.4}}
.modal h2{margin-top:2px;font-size:21px}
.modal .lead{color:var(--mut);font-size:14.5px;margin:-4px 0 8px}
@media (min-width:700px){.modal-bg{align-items:center}.modal{border-radius:24px;max-height:86vh}.modal:before{display:none}.modal{padding-top:18px}}
.dialog{max-width:420px;border-radius:22px;margin:auto 16px;padding:22px 20px 16px}
.dialog:before{display:none}
.modal-bg.center{align-items:center}
.dialog .di{width:52px;height:52px;border-radius:50%;background:var(--ps);color:var(--p);display:flex;align-items:center;justify-content:center;margin-bottom:10px}
.dialog.danger .di{background:var(--bads);color:var(--bad)}
.dialog p{color:var(--mut);margin:4px 0 14px}
#toast{position:fixed;left:50%;bottom:calc(var(--navh) + 22px + env(safe-area-inset-bottom));transform:translate(-50%,20px);background:#241c22;color:#fff;padding:12px 18px;border-radius:14px;font-weight:600;font-size:15px;opacity:0;pointer-events:none;z-index:50;max-width:min(92%,520px);display:flex;align-items:center;gap:10px;box-shadow:var(--sh2);transition:opacity .2s,transform .25s}
#toast.show{opacity:1;transform:translate(-50%,0)}
#toast.err{background:var(--bad)}#toast.ok svg.i{color:#8fe0ad}
body.hasbar #toast{bottom:calc(var(--navh) + 100px)}
.loader{display:flex;flex-direction:column;gap:12px;padding:14px}
.sk{background:linear-gradient(90deg,#e9eef1 25%,#f4f7f9 50%,#e9eef1 75%);background-size:200% 100%;animation:sk 1.2s infinite;border-radius:16px;height:96px}
.sk.s{height:22px;width:40%;border-radius:8px}
@keyframes sk{to{background-position:-200% 0}}
.spin{width:22px;height:22px;border:3px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;animation:rot .7s linear infinite}
@keyframes rot{to{transform:rotate(360deg)}}

/* ---------- Etiqueta 80mm ---------- */
.tagwrap{background:#e3e9ec;border-radius:18px;padding:16px 0;margin-bottom:12px}
.tag{width:72mm;margin:0 auto;background:#fff;color:#000;padding:4mm;font-family:Arial,Helvetica,sans-serif;box-shadow:0 6px 18px rgba(0,0,0,.12)}
.tag .shop{text-align:center;font-size:11px;letter-spacing:2px;text-transform:uppercase;font-weight:700}
.tag .big{font-size:32px;font-weight:900;text-align:center;letter-spacing:1px}
.tag .r{display:flex;justify-content:space-between;font-size:14px;padding:1.5mm 0;border-bottom:1px solid #000}
.tag .r b{font-weight:900}
.tag img{display:block;width:34mm;height:34mm;margin:3mm auto 1mm}
.tag .foot{text-align:center;font-size:11px}
.tag .tnotes{font-size:12px;border:1.5px solid #000;padding:1.5mm;margin:2mm 0;font-weight:700}
.tag .tlines{font-size:11px;margin:1mm 0}
@media print{@page{size:80mm auto;margin:0}body{background:#fff}header.top,nav.bottom,.noprint,.actionbar,#toast{display:none!important}#app{padding:0;max-width:none}main{padding:0;animation:none}.tagwrap{background:none;padding:0}.tag{box-shadow:none;margin:0;width:80mm;padding:3mm 4mm}}

/* ---------- Sistema B ---------- */
.chip.cw2{background:var(--infos);color:var(--info)}.chip.c1099{background:var(--golds);color:var(--gold2)}
.legal{font-weight:500;font-size:12.5px}
.perm{display:grid;grid-template-columns:1fr 1fr;gap:0 8px}.perm .check{margin:4px 0;padding:10px}
.hist.terms{padding:10px 12px;margin:8px 0;border-radius:0 12px 12px 0;background:#f7f9fa}
.hist.terms.now{border-left-color:var(--ok);background:#f4faf6}.hist.terms.future{border-left-color:var(--info);background:#f5f8fd}
.clockcard{text-align:center;padding:22px 16px}
.bigtime{font:700 58px/1.05 var(--serif);color:var(--ink);margin:6px 0 10px}
.bar{height:12px;background:#e9eef1;border-radius:6px;overflow:hidden;margin:10px 0}.bar span{display:block;height:100%;border-radius:6px}
.offercalc{display:flex;align-items:center;justify-content:space-between;gap:4px;background:var(--ps);border-radius:14px;padding:12px;margin:12px 0;text-align:center}
.offercalc div{display:flex;flex-direction:column}.offercalc b{font-size:18px}.offercalc .x{font-size:20px;color:var(--mut)}.offercalc .res b{font:700 24px var(--serif);color:var(--ok)}
.offercalc .mut{font-size:11px}.compcard{border:1.5px dashed #b9cdd8;background:#fafcfd}.okt{color:var(--ok);font-weight:700}
.gbox{border:1.5px solid var(--line);border-radius:14px;padding:12px 14px;margin:12px 0}
.switch{display:flex;align-items:center;gap:12px;margin:0 0 6px;font-size:16px;cursor:pointer;min-height:44px}
.switch input{position:absolute;opacity:0;width:1px;height:1px}.switch .sl{width:54px;height:32px;border-radius:16px;background:#c5ced4;position:relative;flex:none;transition:.2s}
.switch .sl:after{content:'';position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 1px 3px rgba(0,0,0,.3)}
.switch input:checked+.sl{background:var(--ok)}.switch input:checked+.sl:after{left:25px}
.switch input:focus-visible+.sl{outline:3px solid var(--gold);outline-offset:2px}
.gchips{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}
.wcard{display:flex;align-items:center;gap:12px;color:inherit;text-decoration:none}
.wcard .avatar{width:48px;height:48px;font-size:17px;border:0;background:var(--ps)}
.wcard .wt{flex:1;min-width:0}.wcard .wt b{font-size:16.5px;color:var(--ink)}
.quick{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px}
.quick a,.quick button{display:flex;flex-direction:column;gap:8px;padding:14px;border-radius:16px;background:#fff;border:1px solid var(--line);box-shadow:var(--sh);text-decoration:none;color:var(--ink);font-weight:700;font-size:14.5px;text-align:left;cursor:pointer;min-height:86px}
.quick .qi{width:38px;height:38px;border-radius:11px;background:var(--ps);color:var(--p2);display:flex;align-items:center;justify-content:center}
.quick .qi.g{background:var(--golds);color:var(--gold2)}
.quick small{font-weight:500;color:var(--mut);font-size:12px}
@media (min-width:700px){main{padding:20px 20px 0}.tiles{grid-template-columns:repeat(4,1fr)}.kpis{grid-template-columns:repeat(3,1fr)}.quick{grid-template-columns:repeat(4,1fr)}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* Cliente existente / fotos obligatorias / carga informativa / días hábiles */
.custbox{display:flex;align-items:center;gap:12px;margin-top:12px;padding:12px;border:1.5px solid var(--line2);border-radius:var(--r2);background:var(--bg)}
.alert.exist{border:1.5px solid var(--ok)}
.linkbtn{background:none;border:0;padding:0 2px;color:inherit;font:inherit;font-weight:700;text-decoration:underline;cursor:pointer;min-height:0}
.photoreq{display:flex;align-items:center;gap:6px;margin-top:10px;padding:8px 10px;border-radius:10px;background:var(--bads);color:var(--bad);font-size:13px;font-weight:600}
.capscroll{overflow-x:auto;margin:0 -4px;padding:2px 4px 6px;-webkit-overflow-scrolling:touch}
.capscroll .cap{grid-template-columns:none;grid-auto-flow:column;grid-auto-columns:56px}
.cap button b{color:var(--ink)}
.cap button.nb{background:var(--bg);border-style:dashed}.cap button.nb b{color:var(--mut2)}
.daypick{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}
.daypick button{min-height:44px;border-radius:12px;border:1.5px solid var(--line2);background:#fff;font:inherit;font-weight:600;font-size:13px;color:var(--tx);cursor:pointer}
.daypick button.on{background:var(--ink);border-color:var(--ink);color:#fff}

/* ===== Motivos de drycleaningbyfresh.com: burst (degradados radiales + haz 114°), grano, rejilla de puntos ===== */
:root{
  --fresh-burst:radial-gradient(ellipse 46% 62% at 16% 48%,rgba(82,154,183,.11) 0%,rgba(20,100,135,.055) 38%,transparent 70%),radial-gradient(ellipse 24% 22% at 34% 18%,rgba(82,154,183,.16) 0%,rgba(20,100,135,.075) 40%,transparent 72%),radial-gradient(ellipse 22% 26% at 58% 70%,rgba(228,144,60,.095) 0%,rgba(144,77,31,.045) 42%,transparent 74%),radial-gradient(ellipse 28% 32% at 74% 56%,rgba(82,154,183,.13) 0%,rgba(20,100,135,.06) 40%,transparent 72%),radial-gradient(ellipse 64% 78% at 84% 26%,rgba(82,154,183,.26) 0%,rgba(20,100,135,.18) 34%,transparent 67%),radial-gradient(ellipse 40% 34% at 96% 84%,rgba(228,144,60,.13) 0%,rgba(144,77,31,.065) 42%,transparent 75%),linear-gradient(114deg,transparent 0 31%,rgba(82,154,183,.12) 31% 48%,transparent 48%);
  --fresh-grain:url(/patterns/fresh-grain.svg);
}
.login,.bpick{background:var(--fresh-burst),linear-gradient(160deg,#032e50 0%,#001a2d 45%,#00111e 100%)}
.login:before,.bpick:before{content:"";position:absolute;inset:0;width:auto;height:auto;border:0;border-radius:0;background:var(--fresh-grain);background-size:220px;mix-blend-mode:overlay;opacity:.10;pointer-events:none}
.login:after,.bpick:after{content:"";position:absolute;left:18px;bottom:18px;top:auto;right:auto;width:150px;height:110px;border:0;border-radius:0;background:url(/patterns/fresh-dots.svg);opacity:.35;-webkit-mask:linear-gradient(45deg,#000,transparent 75%);mask:linear-gradient(45deg,#000,transparent 75%);pointer-events:none}
.login>*,.bpick>*{position:relative;z-index:1}
.hero{background:var(--fresh-burst),linear-gradient(135deg,#032e50,#00111e)}
.hero:before{content:"";position:absolute;inset:0;background:var(--fresh-grain);background-size:220px;mix-blend-mode:overlay;opacity:.12;pointer-events:none}
.hero:after{right:14px;top:14px;width:24px;height:24px;border:0;border-radius:0;background:currentColor;opacity:.35;-webkit-mask:url(/patterns/fresh-dot-grid.svg) center/contain no-repeat;mask:url(/patterns/fresh-dot-grid.svg) center/contain no-repeat}
.hero>*{position:relative;z-index:1}
header.top{background-image:linear-gradient(rgba(255,255,255,.95),rgba(255,255,255,.95)),url(/patterns/fresh-dots.svg);background-size:auto,22px 22px;border-bottom:0;box-shadow:inset 0 -2px 0 0 transparent}
header.top:after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:linear-gradient(90deg,#a8d0e0,#529ab7 30%,#2a6f92 62%,#00243c);opacity:.9}
.empty{background:linear-gradient(rgba(255,255,255,.86),rgba(255,255,255,.86)),url(/patterns/fresh-dots.svg);background-size:auto,22px 22px}
.dotgrid{display:inline-block;width:18px;height:18px;background:currentColor;-webkit-mask:url(/patterns/fresh-dot-grid.svg) center/contain no-repeat;mask:url(/patterns/fresh-dot-grid.svg) center/contain no-repeat;vertical-align:middle}

/* ===== Sucursales ===== */
.bpill{display:inline-flex;align-items:center;gap:4px;margin-top:2px;padding:2px 9px 2px 7px;border-radius:100px;background:var(--ps);color:var(--p3);font:600 12px/1.6 var(--sans);border:0;cursor:pointer;max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-height:24px}
.bpill svg.i{width:13px;height:13px}
header.top .tt{flex:1;min-width:0;margin:0 4px;display:flex;flex-direction:column;align-items:flex-start}
header.top .tt h1{margin:0;width:100%}
.bpick{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding:28px 20px;color:#fff;position:relative;overflow:hidden}
.bpick .logo{width:130px;margin:0 auto 18px;display:block}
.bpick h1{font:600 26px/1.2 var(--sans);margin:0;text-align:center}
.bpick p{text-align:center;opacity:.8;margin:6px 0 22px}
.bopt{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:rgba(255,255,255,.08);border:1.5px solid rgba(255,255,255,.16);color:#fff;border-radius:18px;padding:16px;margin-bottom:12px;cursor:pointer;backdrop-filter:blur(6px);min-height:76px;font:inherit}
.bopt:active,.bopt.on{background:rgba(82,154,183,.25);border-color:#529ab7}
.bopt .pin{flex:none;width:46px;height:46px;border-radius:50%;background:#529ab7;display:flex;align-items:center;justify-content:center}
.bopt b{display:block;font-size:18px}.bopt small{display:block;opacity:.75;font-size:13px;margin-top:2px}
.bopt .chev{margin-left:auto;opacity:.7}
.bpick .out{background:none;border:0;color:#cfe3ec;margin:14px auto 0;display:block;font:inherit;text-decoration:underline;min-height:44px;cursor:pointer}
.modal .bopt{background:var(--bg);color:var(--ink);border-color:var(--line2)}.modal .bopt small{color:var(--mut);opacity:1}.modal .bopt.on{background:var(--ps);border-color:var(--p3)}
.bchip{display:inline-flex;align-items:center;gap:3px;font-size:11.5px;font-weight:600;color:var(--p3);background:var(--ps);border-radius:100px;padding:1px 8px}
.bchip svg.i{width:12px;height:12px}
.scope{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--line);padding:4px;border-radius:100px;margin:0 0 12px}
.scope button{border:0;background:none;border-radius:100px;min-height:40px;font:600 13.5px var(--sans);color:var(--mut);cursor:pointer}
.scope button.on{background:#fff;color:var(--ink);box-shadow:var(--sh)}
.bfilter{display:flex;gap:6px;overflow-x:auto;margin:0 0 12px;padding-bottom:2px}
.bfilter button{flex:none;border:1.5px solid var(--line2);background:#fff;border-radius:100px;padding:0 14px;min-height:40px;font:600 13.5px var(--sans);color:var(--tx);cursor:pointer}
.bfilter button.on{background:var(--ink);border-color:var(--ink);color:#fff}
.brcard .bh{display:flex;align-items:flex-start;gap:12px}
.brcard .bico{flex:none;width:46px;height:46px;border-radius:14px;background:var(--fresh-burst),linear-gradient(135deg,#032e50,#00111e);color:#fff;display:flex;align-items:center;justify-content:center}
.brcard .bt{flex:1;min-width:0}.brcard .bt b{font-size:17px}
.brcard .kv{margin-top:10px}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px}
.chkgrid{display:flex;flex-direction:column;gap:8px}
.chkgrid label.check{margin:0;border:1.5px solid var(--line2);border-radius:12px;padding:10px 12px;min-height:52px;background:#fff}
.chkgrid label.check small{display:block;color:var(--mut);font-weight:500;font-size:12px}
.bbars .hbar .hl span:first-child{display:flex;align-items:center;gap:6px}
.tag .addr{text-align:center;font-size:10.5px;margin:1mm 0 2mm;line-height:1.3}
.tag .branch{text-align:center;font-size:15px;font-weight:900;letter-spacing:.5px;text-transform:uppercase;border:2px solid #000;border-radius:2mm;padding:1mm;margin:1.5mm 0 1mm}
.tbl{width:100%;border-collapse:collapse;font-size:13.5px}.tbl th{text-align:left;color:var(--mut);font-weight:600;font-size:12px;padding:6px 4px;border-bottom:1px solid var(--line)}.tbl td{padding:7px 4px;border-bottom:1px solid var(--line)}.tbl tr:last-child td{border-bottom:0}
.chip.warnc{background:var(--warns);color:var(--warn)}.chip.bad{background:var(--bads);color:var(--bad)}
a.chip{text-decoration:none}
.vchip{margin-top:4px}
.flag .fh{display:flex;align-items:center;gap:10px}.flag .fh .wt{flex:1;min-width:0}
.flag .acts{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:10px}.flag .acts .btn{margin:0}
.geo{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.seg2{display:grid;grid-template-columns:1fr 1fr;gap:8px}.seg2 label{margin:0;border:1.5px solid var(--line2);border-radius:12px;padding:10px;display:flex;gap:8px;align-items:flex-start;font-weight:600;background:#fff;cursor:pointer}
.seg2 label small{display:block;font-weight:500;color:var(--mut);font-size:12px}.seg2 label:has(input:checked){border-color:var(--p3);background:var(--ps)}
.hrs{display:flex;flex-direction:column;gap:6px;margin-top:8px}.hr{display:grid;grid-template-columns:86px 1fr 1fr;gap:6px;align-items:center}.hr label.check{margin:0;min-height:44px}.hr input[type=time]{margin:0;min-height:44px;padding:6px 8px}
.hr:has(input[type=checkbox]:not(:checked)) input[type=time]{opacity:.35}
.modal .sticky-act{position:sticky;bottom:-1px;background:#fff;padding:10px 0 4px;margin-top:8px;box-shadow:0 -10px 14px -10px rgba(0,26,45,.18);z-index:2}
.modal .sticky-act .btn{margin:0}
#repeat{height:auto;min-height:60px;padding:10px 16px;justify-content:flex-start;gap:12px}

/* ===== v9: custodia, capacidad por puntos, firma, recibo, tablero, finanzas ===== */
.homeacts{gap:8px}.homeacts .btn{margin:0 0 12px}
header.top a.ib{display:flex;align-items:center;justify-content:center;color:inherit}
/* capacidad por puntos */
.cap button b em{font-style:normal;font-size:11px;font-weight:600;color:var(--mut)}
.cap button .ldbar{display:block;height:5px;border-radius:3px;background:#eef1f3;margin:5px 7px 3px;overflow:hidden}
.cap button .ldbar i{display:block;height:100%;border-radius:3px;background:var(--ok)}
.cap button.ld-mid .ldbar i{background:#c79a2b}.cap button.ld-high .ldbar i{background:var(--warn)}.cap button.ld-over .ldbar i{background:var(--bad)}
.cap button.ld-high b{color:var(--warn)}.cap button.ld-over b{color:var(--bad)}
.cap button.nb{background:#f6f7f8}
/* firma */
.sigcard .tterms{font-size:13.5px;line-height:1.45;color:var(--tx);background:#f7f9fa;border-radius:12px;padding:10px 12px;margin:8px 0}
.tterms.extra{background:var(--warns);color:#5d3a06}.tterms.extra b{display:inline-flex;align-items:center;gap:4px}
.sigwrap{position:relative;margin-top:8px;border:1.5px dashed var(--line2);border-radius:14px;background:#fff;height:170px;touch-action:none}
.sigwrap canvas{width:100%;height:100%;display:block;border-radius:14px;touch-action:none;cursor:crosshair}
.sigwrap .sigline{position:absolute;left:16px;right:16px;bottom:34px;border-top:1px solid #c9d2d8;font-size:10.5px;color:var(--mut);padding-top:2px;pointer-events:none}
.sigwrap #sgclr{position:absolute;top:6px;right:6px;width:auto;margin:0;min-height:34px;padding:0 10px}
/* custodia */
.locchip{display:flex;align-items:center;gap:8px;margin:2px 0 10px;padding:9px 12px;border-radius:12px;background:var(--ps);color:var(--p);text-decoration:none;font-weight:700;font-size:14px}
.locchip span{flex:1}.locchip small{font-weight:500;color:var(--mut);font-size:11.5px}
.where .loc{display:flex;align-items:center;gap:14px;margin-top:8px}
.where .loc b{display:block;font-size:24px;color:var(--ink);line-height:1.15}.where .loc .mut{font-size:13px}
.where .li{width:60px;height:60px;border-radius:18px;background:var(--ps);color:var(--p2);display:flex;align-items:center;justify-content:center;flex:none}
.where .li.ready{background:var(--oks);color:var(--ok)}.where .li.machine{background:var(--warns);color:var(--warn)}.where .li.delivered{background:#eceff1;color:#56616a}
.glink{display:block;text-decoration:none;color:inherit}.glink .meta{display:flex;gap:12px;flex-wrap:wrap;font-size:13px;color:var(--mut);margin-top:8px;align-items:center}
.glink .meta span{display:inline-flex;align-items:center;gap:4px}
.locgrid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-bottom:12px}
.locbtn{display:flex;align-items:center;gap:10px;min-height:60px;padding:10px 12px;border-radius:14px;border:1.5px solid var(--line2);background:#fff;font-size:15px;font-weight:700;color:var(--ink);text-align:left;cursor:pointer}
.locbtn .i{color:var(--p2);flex:none}.locbtn.on{border-color:var(--ok);background:var(--oks);color:var(--ok)}.locbtn.on .i{color:var(--ok)}
.locbtn:active{transform:scale(.98)}
.scanview{position:relative;margin:10px 0;border-radius:16px;overflow:hidden;background:#0b1f2e;aspect-ratio:4/3;display:flex;align-items:center;justify-content:center}
.scanview video{width:100%;height:100%;object-fit:cover;display:none}.scanview.on video{display:block}
.scanview .reticle{position:absolute;inset:18%;border:3px solid rgba(255,255,255,.85);border-radius:18px;box-shadow:0 0 0 999px rgba(0,0,0,.25)}
.scanview .noscan{color:#cfe3ee;text-align:center;padding:20px;display:flex;flex-direction:column;align-items:center;gap:10px;font-size:14px}
.tag .gcode{text-align:center;font-size:15px;font-weight:900;letter-spacing:1px}
.tag+.tag{margin-top:14px}
/* recibo del cliente */
.receipt{background:#fff;border-radius:18px;padding:18px;box-shadow:var(--sh);color:#111;margin-bottom:12px}
.receipt .rh{display:flex;gap:12px;align-items:center;border-bottom:2px solid #111;padding-bottom:10px}.receipt .rlogo{height:26px}
.receipt .rmeta{display:grid;grid-template-columns:1fr 1fr;gap:6px 12px;margin:12px 0;font-size:13px}.receipt .rmeta span{display:block;color:#666;font-size:11px;text-transform:uppercase;letter-spacing:.5px}
.receipt .rg{border-top:1px solid #ddd;padding:8px 0}.receipt .rgt{font-weight:800;font-size:14px;margin-bottom:4px}
.receipt .rl{display:flex;justify-content:space-between;gap:10px;font-size:14px;padding:3px 0}.receipt .rl small{display:block;color:#666;font-size:12px}
.receipt .rcond{font-size:12px;color:#5d3a06;background:var(--warns);border-radius:8px;padding:6px 8px;margin-top:4px}
.receipt .rtot{border-top:2px solid #111;padding-top:8px;font-size:14px}.receipt .rtot>div{display:flex;justify-content:space-between;padding:2px 0}.receipt .rtot .big{font-size:18px;font-weight:900}
.receipt .rnotes{margin-top:10px;font-size:13px}.receipt .rsig{margin-top:12px;border-top:1px dashed #999;padding-top:10px}
.receipt .rsig .tterms{font-size:11.5px;line-height:1.4;color:#333;margin:0 0 8px}.receipt .rsig img{display:block;max-width:100%;height:90px;object-fit:contain;margin:6px 0;border-bottom:1px solid #111}
.receipt .rsig .sl{font-size:11.5px;color:#444}
@media print{.receipt{box-shadow:none;border-radius:0;padding:3mm 4mm;width:80mm}.receipt .rcond,.tterms.extra{background:none;border:1px solid #000}}
/* tablero / finanzas */
.wrow{display:flex;align-items:center;gap:12px;padding:10px 4px;border-top:1px solid var(--line);text-decoration:none;color:var(--tx)}
.wrow .days{width:46px;height:46px;border-radius:12px;background:var(--oks);color:var(--ok);display:flex;align-items:baseline;justify-content:center;padding-top:9px;font-size:12px;flex:none}
.wrow .days b{font-size:19px}.wrow .days.warn{background:var(--warns);color:var(--warn)}.wrow .days.bad{background:var(--bads);color:var(--bad)}
.wrow .wt{flex:1;min-width:0}.wrow .wt small{display:block;color:var(--mut);font-size:12.5px}
.al.flag.bad .ico{background:var(--bads);color:var(--bad)}.al.flag.warn .ico{background:var(--warns);color:var(--warn)}
.causes{display:flex;flex-wrap:wrap;gap:6px}.causes button{min-height:42px;padding:6px 12px;border-radius:21px;border:1.5px solid var(--line2);background:#fff;font-weight:700;font-size:13.5px;color:var(--tx);cursor:pointer}
.causes button.on{background:var(--p);border-color:var(--p);color:#fff}
.ptsgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.ptsgrid label{display:flex;flex-direction:column;gap:4px;margin:0;align-items:flex-start}

/* ===== v10: sin zoom por doble toque / al enfocar ===== */
html,body,button,a,input,select,textarea,[role=button]{touch-action:manipulation}
input,select,textarea{font-size:16.5px!important} /* ≥16px: iOS no hace zoom al enfocar */
.viewer,.viewer .vi,.viewer img{touch-action:none} /* el visor maneja su propio pellizco/arrastre */
.viewer img{transform-origin:center center;will-change:transform;transition:transform .12s ease-out}
.viewer img.zooming{transition:none}
.brcard{display:flex;gap:12px;align-items:center;border:2px solid var(--ink,#111)}.brcard .brico{flex:none;width:40px;height:40px;border-radius:12px;background:var(--ink,#111);color:#fff;display:grid;place-items:center}
.brcard .brt{flex:1;min-width:0;font-size:14px;line-height:1.35}.brcard .brt b{display:block;font-size:17px}
.receipt .rbranch{text-align:center;padding:10px 0;border-bottom:1px solid #ddd}.receipt .rbranch .rbn{display:block;font-size:18px;font-weight:900}
.receipt .rbranch .rba{font-size:14px;margin-top:2px}.receipt .rbranch .rbp{font-size:15px;font-weight:700;margin-top:2px}.receipt .rbranch a{color:inherit;text-decoration:none}
@media print{.receipt .rbranch .rbn{font-size:16pt}.receipt .rbranch .rba,.receipt .rbranch .rbp{font-size:11pt}}
.splitbox{margin-top:14px;border:1.5px solid var(--line,#e3e3e3);border-radius:14px;padding:12px}.splitbox .sbh{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px}
.splitbox .presets{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-bottom:10px}.splitbox .presets button{border:1.5px solid var(--line,#ddd);background:#fff;border-radius:10px;padding:9px 0;font-weight:700;font-size:14px;color:inherit}
.splitbox .presets button.on{background:var(--ink,#111);color:#fff;border-color:var(--ink,#111)}
.splitbox .srow{display:flex;align-items:center;gap:8px;padding:8px 0;border-top:1px solid var(--line,#eee)}.splitbox .sn{flex:1;min-width:0}.splitbox .sn b{display:block;font-size:15px}
.splitbox .sv{display:flex;align-items:center;gap:6px}.splitbox .smon{text-align:right;font-weight:700;font-size:14px}.splitbox .smon small{display:block;font-weight:500;font-size:11.5px;color:var(--mut,#666)}
.splitbox .spct{width:64px;text-align:right;padding:8px;margin:0}.splitbox .pc{font-weight:700}
.splitsum{margin-top:8px;font-weight:700;font-size:13.5px;display:flex;gap:6px;align-items:center}.splitsum.ok{color:var(--ok,#1a7f37)}.splitsum.bad{color:var(--bad,#b42318)}
.splittbl td,.splittbl th{font-size:13px}.splittbl .tt td{font-weight:800;border-top:2px solid #111}.splith{margin-top:4px}
/* Escáner v13: el video nunca está display:none (iOS no entrega cuadros a un video oculto) */
.scanview video{display:block!important;position:absolute;inset:0;opacity:0}.scanview.on video{opacity:1}
.scanview .reticle{display:none}.scanview.on .reticle{display:block}.scanview.on .noscan{display:none}
.scanerr{display:flex;gap:10px;align-items:flex-start;background:var(--bads,#fdecea);color:#7a1d14;border-radius:12px;padding:10px 12px;margin:6px 0 10px;font-size:14px;line-height:1.35}.scanerr[hidden]{display:none}
label.btn{display:flex;align-items:center;justify-content:center;gap:8px;cursor:pointer}
/* ===== Bilingüe EN/ES ===== */
button.who{background:none;border:0;padding:4px 2px;margin:0;color:inherit;font:inherit;cursor:pointer;border-radius:12px}
button.who:active{background:rgba(0,0,0,.05)}
.langsw{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--bg2,#eef2f5);border-radius:14px;padding:4px;margin-top:6px}
.langsw button{border:0;background:transparent;border-radius:10px;min-height:44px;font:600 14px/1 var(--sans);color:var(--ink,#001a2d);cursor:pointer}
.langsw button b{font-weight:800;letter-spacing:.5px;margin-right:2px}
.langsw button.on{background:#fff;box-shadow:0 1px 4px rgba(0,26,45,.15)}
.login .langsw{position:relative;z-index:1;margin-top:22px;width:min(300px,100%);background:rgba(255,255,255,.1)}
.login .langsw button{color:#cfe3ec}
.login .langsw button.on{background:#fff;color:#001a2d}
.esref{margin:4px 0 8px;font-size:12.5px;color:var(--mut)}
.esref summary{cursor:pointer;font-weight:600}
.esref div{white-space:pre-wrap;margin-top:4px;padding:8px 10px;border-left:3px solid var(--line,#d5dde3);background:rgba(0,0,0,.02);border-radius:6px}
@media print{.esref{display:none!important}}
