/* Olympus Electric crew app – visual language of the olympuselectrician.com EV / panel price calculators */
:root{
  --r:#D32F2F; --r2:#B71C1C; --rbg:#FDECEC; --bg:#FFFFFF; --card:#F4F4F5; --fg:#2B2F36; --ink:#111317;
  --mut:#5B616B; --mut2:#6b7078; --ln:#D4D4D8; --ln2:#A1A1AA; --lab:#4A4F57; --grn:#16A34A; --grn2:#15803D; --amb:#C27803;
  --sat:env(safe-area-inset-top,0px); --sab:env(safe-area-inset-bottom,0px); --sal:env(safe-area-inset-left,0px); --sar:env(safe-area-inset-right,0px);
  --tabh:62px; --ban:22px;
  --fh:"Nunito Sans",Figtree,system-ui,-apple-system,sans-serif;
  --fb:Figtree,Manrope,Inter,system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif;
  --pop:cubic-bezier(.3,1.5,.5,1);
}
*,*:before,*:after{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%;background:var(--bg);color:var(--fg);font-family:var(--fb);font-size:17px;line-height:1.5;
  -webkit-font-smoothing:antialiased;-webkit-text-size-adjust:100%;overscroll-behavior-y:none}
button,input,select,textarea,label,a{font:inherit;color:inherit;touch-action:manipulation}
button{cursor:pointer;border:0;background:none;padding:0;appearance:none;-webkit-appearance:none}
a{text-decoration:none}
[hidden]{display:none!important}

.demo-banner{position:fixed;top:0;left:0;right:0;z-index:80;background:#FFD400;color:#111;font-size:11px;font-weight:800;letter-spacing:.14em;
  text-align:center;text-transform:uppercase;padding:calc(var(--sat) + 4px) 8px 4px;line-height:14px}
.app{min-height:100vh;padding:calc(var(--sat) + var(--ban) + 10px) calc(20px + var(--sar)) calc(var(--tabh) + var(--sab) + 28px) calc(20px + var(--sal));max-width:620px;margin:0 auto}
.app.no-tabs{padding-bottom:calc(var(--sab) + 32px)}

/* type */
.k{display:block;font-size:.75rem;letter-spacing:.16em;text-transform:uppercase;color:var(--lab);font-weight:700}
.h{font-family:var(--fh);font-size:clamp(28px,7.6vw,40px);line-height:1.08;letter-spacing:-.025em;font-weight:800;margin:6px 0 8px;color:var(--ink)}
.h.md{font-size:clamp(24px,6.4vw,32px)}
.sub{color:var(--mut);margin:0 0 22px;font-size:1rem;text-transform:none}
.lab{display:block;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--lab);font-weight:700;margin:26px 0 10px}
.muted{color:var(--mut);font-size:.9rem}

/* top row: back pill + kicker */
.top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:6px 0 12px;min-height:44px}
.back{background:#fff;border:1.5px solid var(--ln);color:var(--fg);border-radius:999px;padding:9px 16px;font-size:.9rem;font-weight:700;min-height:44px;display:inline-flex;align-items:center;gap:6px;transition:border-color .2s}
.back:active{border-color:var(--fg)}
.prog{height:4px;background:#E4E4E7;border-radius:4px;overflow:hidden;margin-bottom:8px}
.prog i{display:block;height:100%;width:0;background:var(--r);transition:width .45s ease}
.stepn{font-size:.8rem;color:var(--mut);margin:0 0 18px;font-weight:600}

/* step transitions (same as calculator) */
.in{animation:evcIn .35s ease both}
.inR{animation:pcInR .32s ease both}
.inL{animation:pcInL .32s ease both}
@keyframes evcIn{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@keyframes pcInR{from{opacity:0;transform:translateX(28px)}to{opacity:1;transform:none}}
@keyframes pcInL{from{opacity:0;transform:translateX(-28px)}to{opacity:1;transform:none}}
@keyframes pcPop{from{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}
.stag>*{animation:pcPop .35s ease both}
.stag>*:nth-child(2){animation-delay:.04s}.stag>*:nth-child(3){animation-delay:.08s}.stag>*:nth-child(4){animation-delay:.12s}
.stag>*:nth-child(5){animation-delay:.16s}.stag>*:nth-child(6){animation-delay:.2s}.stag>*:nth-child(n+7){animation-delay:.24s}

/* option cards */
.opts{display:grid;gap:12px}
.opt{position:relative;display:flex;align-items:center;gap:14px;background:var(--card);border:1.5px solid transparent;border-radius:18px;padding:16px 18px;min-height:64px;width:100%;text-align:left;transition:border-color .2s,background .2s,transform .12s}
.opt:active{transform:scale(.985)}
.opt b{display:block;font-size:1.08rem;font-weight:800;color:var(--ink);line-height:1.25}
.opt small{display:block;color:var(--mut);font-size:.9rem;margin-top:2px;line-height:1.35}
.opt .tx{flex:1;min-width:0}
.opt.on{border-color:var(--r);background:var(--rbg)}
.ico{flex:0 0 44px;height:44px;border-radius:12px;background:#fff;border:1px solid var(--ln);display:grid;place-items:center;color:var(--ink)}
.ico svg{width:24px;height:24px}
.ico.av{border-radius:50%;background:var(--ink);color:#fff;border:0;font-weight:800;font-size:1.05rem}
.opt.on .ico.av{background:var(--r)}
.dot{margin-left:auto;flex:0 0 22px;width:22px;height:22px;border-radius:50%;border:1.5px solid var(--ln2);background:#fff;transition:all .2s}
.opt.on .dot{border-color:var(--r);background:var(--r);box-shadow:inset 0 0 0 4px #fff}
.chev{margin-left:auto;flex:0 0 18px;color:var(--ln2)}
.chev svg{width:18px;height:18px;display:block}

/* pills (choice chips) */
.pills{display:flex;flex-wrap:wrap;gap:10px}
.pill{position:relative;display:inline-flex;align-items:center;justify-content:center;background:#fff;border:1.5px solid var(--ln);border-radius:999px;padding:12px 18px;font-weight:700;font-size:.98rem;color:var(--fg);min-height:48px;transition:border-color .2s,background .2s,color .2s}
.pill.on{border-color:var(--r);background:var(--r);color:#fff}
.pills.big .pill{flex:1 1 0;padding:14px 8px;min-height:56px}
.pills.two .pill{flex:1 1 calc(50% - 5px)}

/* job card */
.job{display:block;position:relative;background:var(--card);border:1.5px solid transparent;border-radius:18px;padding:16px 18px;margin-bottom:12px;transition:border-color .2s,transform .12s}
.job:active{transform:scale(.985)}
.job.now{border-color:var(--r);background:var(--rbg)}
.job .row{display:flex;align-items:center;justify-content:space-between;gap:10px}
.job .when{font-weight:800;color:var(--ink);font-size:1.02rem;font-variant-numeric:tabular-nums}
.job .who{display:flex;align-items:center;gap:14px;margin-top:10px}
.job b.cl{display:block;font-family:var(--fh);font-weight:800;font-size:1.3rem;color:var(--ink);letter-spacing:-.01em;line-height:1.2}
.job small{display:block;color:var(--mut);font-size:.9rem;line-height:1.35}
.job.done{opacity:.6}
.tag{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--ln);color:var(--lab);border-radius:999px;padding:3px 10px 3px 8px;font-size:.7rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;white-space:nowrap}
.tag i{width:8px;height:8px;border-radius:50%;background:var(--ln2)}
.tag.onsite i{background:var(--amb);box-shadow:0 0 0 0 rgba(194,120,3,.5);animation:ping 1.6s infinite}
.tag.done i{background:var(--grn)}
.tag.onsite{color:#8A5300;border-color:#F3D7A6;background:#FFF8EB}
.tag.done{color:var(--grn2);border-color:#BBF7D0;background:#F0FDF4}
.tag.pending{}
.tag.who{background:var(--ink);color:#fff;border-color:var(--ink)}
@keyframes ping{0%{box-shadow:0 0 0 0 rgba(194,120,3,.55)}100%{box-shadow:0 0 0 8px rgba(194,120,3,0)}}

/* stats */
.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:4px 0 22px}
.stats div{background:var(--card);border-radius:16px;padding:12px 10px}
.stats b{display:block;font-family:var(--fh);font-size:2rem;font-weight:800;color:var(--ink);line-height:1;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.stats span{font-size:.68rem;letter-spacing:.12em;text-transform:uppercase;color:var(--lab);font-weight:700}

/* buttons */
.go{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;margin:26px 0 0;background:var(--r);color:#fff!important;border:0;border-radius:999px;font-weight:800;font-size:1.15rem;padding:20px 26px;line-height:1.2;min-height:62px;transition:background .2s,opacity .2s,transform .12s;box-shadow:0 10px 24px rgba(211,47,47,.22)}
.go.stick{position:relative}
.go.arrow:after{content:" \2192"}
.go:active{background:var(--r2);transform:scale(.985)}
.go[aria-disabled=true]{opacity:.35;box-shadow:none}
.go.green{background:var(--grn);box-shadow:0 10px 24px rgba(22,163,74,.22)}
.go.green:active{background:var(--grn2)}
.go.dark{background:var(--ink);box-shadow:0 10px 24px rgba(17,19,23,.18)}
.go svg{width:22px;height:22px}
.sec{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;background:#fff;border:1.5px solid var(--ln);color:var(--ink);border-radius:999px;padding:14px 18px;min-height:54px;font-weight:800;font-size:1rem;transition:border-color .2s}
.sec:active{border-color:var(--fg)}
.sec svg{width:20px;height:20px}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.skip{display:block;margin:14px auto 0;padding:10px 14px;min-height:44px;color:var(--mut);font-weight:700;font-size:.95rem;text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--ln2)}
.small{color:var(--mut);font-size:.85rem;text-align:center;margin:14px 0 0}

/* info box / lines */
.box{background:var(--card);border-radius:18px;padding:18px;margin:0 0 12px}
.lines{list-style:none;margin:0;padding:0}
.lines li{display:flex;justify-content:space-between;gap:16px;padding:12px 0;border-bottom:1px solid #E4E4E7;font-size:.98rem}
.lines li:last-child{border-bottom:0}
.lines li span:last-child{font-weight:800;color:var(--ink);white-space:nowrap;font-variant-numeric:tabular-nums}
.note{color:var(--fg);font-size:.95rem;margin:12px 0 0;padding-left:14px;border-left:2px solid var(--r)}
.note small{display:block;color:var(--mut);font-size:.8rem}
.addr{color:var(--mut);font-size:1.02rem;margin:0 0 16px;line-height:1.4}

/* fields (underline, like calculator) */
.f{margin:0 0 22px}
.f label{display:block;font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--lab);font-weight:700}
.f input,.f textarea,.f select{display:block;width:100%;background:transparent;border:0;border-bottom:1.5px solid var(--ln);border-radius:0;color:var(--ink);font-size:1.2rem;padding:10px 0;margin:4px 0 0;outline:none;box-shadow:none;-webkit-appearance:none;appearance:none}
.f textarea{min-height:110px;resize:vertical;font-size:1.1rem;line-height:1.4}
.f input:focus,.f textarea:focus,.f select:focus{border-bottom-color:var(--r)}
.f.box-f textarea{background:var(--card);border:1.5px solid transparent;border-radius:18px;padding:14px 16px}
.f.box-f textarea:focus{border-color:var(--r)}
input[type=date],input[type=time]{min-height:50px;font-size:1.2rem!important}
.sel{background:var(--card);border-radius:16px;padding:6px 14px}
.sel select{border:0;font-size:1.1rem;font-weight:700;width:100%;padding:12px 0;background:transparent;-webkit-appearance:none;appearance:none;color:var(--ink)}

/* check rows (materials) */
.chk{display:flex;align-items:center;gap:14px;background:var(--card);border:1.5px solid transparent;border-radius:16px;padding:14px 16px;min-height:60px;margin:0 0 10px;transition:border-color .2s,background .2s}
.chk input{appearance:none;-webkit-appearance:none;flex:0 0 26px;width:26px;height:26px;margin:0;border-radius:8px;border:1.5px solid var(--ln2);background:#fff;display:grid;place-items:center;transition:all .2s}
.chk input:checked{background:var(--r);border-color:var(--r)}
.chk input:checked:after{content:"";width:7px;height:13px;border:solid #fff;border-width:0 3px 3px 0;transform:rotate(45deg) translate(-1px,-1px);animation:pcPop .2s}
.chk.on{border-color:var(--r);background:var(--rbg)}
.chk b{font-weight:700;color:var(--ink);font-size:1.02rem}
.addrow{display:flex;gap:10px;align-items:flex-end;margin-top:6px}
.addrow .f{flex:1;margin:0}
.addrow .sec{width:auto;flex:none;padding:0 20px}

/* photo slot (dashed card) */
.slot{position:relative;display:flex;align-items:center;gap:14px;background:var(--card);border:1.5px dashed var(--ln2);border-radius:18px;padding:16px;min-height:96px;transition:border-color .2s,background .2s}
.slot.has{border-style:solid;border-color:var(--r);background:var(--rbg)}
.slot .ok2{display:none;position:absolute;top:10px;right:12px;width:24px;height:24px;border-radius:50%;background:var(--r);color:#fff;font-size:.8rem;font-weight:900;place-items:center}
.slot.has .ok2{display:grid;animation:pcPop .3s var(--pop)}
.thumb{flex:0 0 76px;height:76px;border-radius:12px;background:#fff;border:1px solid var(--ln);overflow:hidden;display:grid;place-items:center}
.thumb svg{width:100%;height:100%;display:block}
.slot .tx{flex:1;min-width:0}
.slot b{display:block;color:var(--ink);font-size:1.05rem;line-height:1.3}
.slot small{display:block;color:var(--mut);font-size:.85rem;margin-top:2px}
.pbtn{position:relative;overflow:hidden;display:inline-flex;align-items:center;gap:6px;margin-top:10px;background:#fff;border:1.5px solid var(--ln);border-radius:999px;padding:10px 16px;min-height:46px;font-weight:800;font-size:.95rem;color:var(--ink)}
.pbtn svg{width:18px;height:18px}
.pbtn input{position:absolute;inset:0;opacity:0;width:100%;height:100%;font-size:16px}
.gal{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:12px}
.gal img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:12px;display:block;animation:pcPop .3s ease both}
.gal.sm{grid-template-columns:repeat(4,1fr)}

/* signature */
.sigw{position:relative;border:1.5px dashed var(--ln2);border-radius:18px;background:var(--card);touch-action:none;overflow:hidden}
.sigw.has{border-style:solid;border-color:var(--r);background:#fff}
.sigw canvas{display:block;width:100%;height:230px;touch-action:none}
.sigw .line{position:absolute;left:18px;right:18px;bottom:40px;border-top:1.5px solid var(--ln);pointer-events:none}
.sigw .line span{position:absolute;left:0;top:6px;font-size:.75rem;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--ln2)}
.sigw .clr{position:absolute;top:10px;right:10px;background:#fff;border:1.5px solid var(--ln);border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:700;min-height:36px}
.sig-img{width:100%;border-radius:14px;background:#fff;border:1.5px solid var(--ln);display:block}

/* login */
.brand{display:flex;align-items:center;gap:12px;margin:14px 0 26px}
.brand img{width:48px;height:48px;border-radius:12px}
.brand b{display:block;font-family:var(--fh);font-size:1.35rem;font-weight:800;color:var(--ink);letter-spacing:-.01em;line-height:1.1}
.brand span{font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--lab);font-weight:700}
.pin-dots{display:flex;justify-content:center;gap:18px;margin:8px 0 22px}
.pin-dots i{width:18px;height:18px;border-radius:50%;border:1.5px solid var(--ln2);background:#fff;display:block;transition:all .15s var(--pop)}
.pin-dots i.on{background:var(--r);border-color:var(--r);transform:scale(1.1)}
.pin-dots.err{animation:shake .35s}
.pin-dots.ok i{background:var(--grn);border-color:var(--grn)}
@keyframes shake{25%{transform:translateX(-8px)}75%{transform:translateX(8px)}}
.keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;max-width:310px;margin:0 auto}
.keypad button{height:70px;border-radius:999px;background:#fff;border:1.5px solid var(--ln);color:var(--ink);font-size:1.7rem;font-weight:700;font-variant-numeric:tabular-nums;transition:background .1s,border-color .1s,transform .1s}
.keypad button:active{background:var(--rbg);border-color:var(--r);transform:scale(.95)}
.keypad .ghost{border-color:transparent;background:none;font-size:.95rem;color:var(--mut)}
.mode{display:flex;background:#E4E4E7;border-radius:999px;padding:4px;gap:4px;max-width:260px;margin:30px auto 0}
.seg{flex:1;text-align:center;border-radius:999px;padding:10px 6px;min-height:44px;font-weight:800;font-size:.9rem;color:var(--lab)}
.seg.on{background:#fff;color:var(--ink);box-shadow:0 1px 4px rgba(0,0,0,.12)}

/* week */
.weeknav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0 0 14px}
.weeknav b{font-weight:800;color:var(--ink)}
.rnd{width:48px;height:48px;border-radius:50%;border:1.5px solid var(--ln);background:#fff;display:grid;place-items:center;color:var(--ink)}
.rnd svg{width:20px;height:20px}
.day{background:var(--card);border-radius:18px;margin:0 0 12px;overflow:hidden;border:1.5px solid transparent}
.day.today{border-color:var(--r)}
.day-h{display:flex;justify-content:space-between;align-items:center;padding:14px 16px 8px}
.day-h b{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--lab);font-weight:800}
.day.today .day-h b{color:var(--r)}
.day-h span{font-size:.8rem;color:var(--mut);font-weight:700}
.mini{display:flex;align-items:center;gap:12px;margin:0 8px 8px;padding:12px;border-radius:14px;background:#fff;min-height:58px}
.mini .t{font-weight:800;width:62px;flex:none;font-size:.92rem;color:var(--ink);font-variant-numeric:tabular-nums}
.mini .c{flex:1;min-width:0}
.mini .c div{font-weight:800;color:var(--ink)}
.mini .c small{color:var(--mut);font-size:.82rem;display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sdot{width:10px;height:10px;border-radius:50%;flex:none;background:var(--ln2)}
.sdot.onsite{background:var(--amb)}.sdot.done{background:var(--grn)}
.day-empty{padding:4px 16px 14px;color:var(--mut);font-size:.9rem}

/* admin crew */
.crew{display:flex;gap:14px;align-items:flex-start;background:var(--card);border-radius:18px;padding:16px 18px;margin:0 0 12px}
.crew .tx{flex:1;min-width:0}
.crew b{font-size:1.08rem;font-weight:800;color:var(--ink)}
.crew small{display:block;color:var(--mut);font-size:.88rem;line-height:1.35;margin-top:2px}
.bar{height:4px;border-radius:4px;background:#E4E4E7;margin:10px 0 6px;overflow:hidden}
.bar i{display:block;height:100%;background:var(--r);border-radius:4px;transition:width .6s ease}

/* tab bar */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:40;display:flex;background:rgba(255,255,255,.96);-webkit-backdrop-filter:saturate(180%) blur(16px);backdrop-filter:saturate(180%) blur(16px);
  border-top:1px solid #E4E4E7;padding:0 var(--sar) var(--sab) var(--sal)}
.tabbar a{flex:1;height:var(--tabh);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;font-size:.68rem;letter-spacing:.06em;text-transform:uppercase;font-weight:800;color:var(--mut2);position:relative}
.tabbar a svg{width:26px;height:26px}
.tabbar a.on{color:var(--r)}
.tabbar a.on:before{content:"";position:absolute;top:0;left:30%;right:30%;height:3px;border-radius:0 0 3px 3px;background:var(--r);animation:pcPop .25s}

/* celebration overlay (Llegué bolt / Terminé check) */
.cele{position:fixed;inset:0;z-index:90;background:rgba(255,255,255,.97);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;animation:evcFade .18s ease;padding:24px}
.cele.out{animation:evcFade .2s ease reverse both}
.cele .ring{position:relative;width:132px;height:132px;border-radius:50%;background:var(--r);display:grid;place-items:center;animation:celePop .5s var(--pop) both;box-shadow:0 14px 34px rgba(211,47,47,.35)}
.cele.ok .ring{background:var(--grn);box-shadow:0 14px 34px rgba(22,163,74,.35)}
.cele .ring:after{content:"";position:absolute;inset:-6px;border-radius:50%;border:3px solid var(--r);animation:pcPing 1s .25s ease-out both}
.cele.ok .ring:after{border-color:var(--grn)}
.cele svg{width:70px;height:70px;overflow:visible}
.cele .bolt{fill:#fff;stroke:#fff;stroke-width:1.5;stroke-linejoin:round;transform-origin:50% 50%;animation:strike .55s .12s ease-out both}
.cele .ck{fill:none;stroke:#fff;stroke-width:3.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:30;stroke-dashoffset:30;animation:pcDraw .45s .2s ease-out forwards}
.cele .spark{stroke:var(--r);stroke-width:3;stroke-linecap:round;opacity:0;animation:spark .6s .3s ease-out both}
.cele h3{font-family:var(--fh);font-weight:800;font-size:1.9rem;letter-spacing:-.02em;color:var(--ink);margin:10px 0 0;animation:evcIn .35s .2s both}
.cele p{margin:0;color:var(--mut);font-weight:700;font-variant-numeric:tabular-nums;animation:evcIn .35s .3s both}
@keyframes celePop{from{transform:scale(.3);opacity:0}to{transform:scale(1);opacity:1}}
@keyframes pcPing{0%{transform:scale(1);opacity:.7}100%{transform:scale(1.6);opacity:0}}
@keyframes pcDraw{to{stroke-dashoffset:0}}
@keyframes strike{0%{transform:translateY(-30px) scale(.6);opacity:0}55%{transform:translateY(3px) scale(1.08);opacity:1}100%{transform:none}}
@keyframes spark{0%{opacity:0;transform:scale(.4)}30%{opacity:1}100%{opacity:0;transform:scale(1.3)}}
@keyframes evcFade{from{opacity:0}to{opacity:1}}

/* done header */
.ty .okc{width:64px;height:64px;border-radius:50%;background:var(--grn);display:grid;place-items:center;margin:4px 0 16px;animation:celePop .45s var(--pop) both}
.ty .okc svg{width:34px;height:34px}

.toast{position:fixed;left:50%;bottom:calc(var(--tabh) + var(--sab) + 18px);transform:translate(-50%,16px);background:var(--ink);color:#fff;padding:12px 20px;border-radius:999px;font-size:.95rem;font-weight:700;opacity:0;pointer-events:none;transition:.25s;z-index:95;max-width:90%;text-align:center;box-shadow:0 10px 24px rgba(0,0,0,.2)}
.toast.show{opacity:1;transform:translate(-50%,0)}
.empty{text-align:center;color:var(--mut);padding:30px 10px}
.empty svg{width:140px;height:140px}
.hint-card{background:var(--card);border-radius:18px;padding:16px 18px;color:var(--mut);font-size:.92rem;margin:0 0 12px}
.hint-card b{color:var(--ink)}
.list-btn{display:flex;justify-content:space-between;align-items:center;width:100%;min-height:58px;font-size:1.02rem;font-weight:700;padding:0 18px;background:var(--card);border-radius:16px;margin:0 0 10px;color:var(--ink)}
.list-btn.red{color:var(--r)}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
/* v3: video */
.pbtns{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 0}
.pbtns .pbtn{margin:0;flex:1 1 auto;justify-content:center}
.vtile{position:relative;display:block;width:100%;aspect-ratio:1;border-radius:12px;overflow:hidden;background:linear-gradient(135deg,#2b2f36,#0f1113);animation:pcPop .3s ease both}
.vtile img{width:100%;height:100%;object-fit:cover;display:block;border-radius:0;animation:none}
.vtile .play{position:absolute;left:50%;top:50%;width:42px;height:42px;margin:-21px 0 0 -21px;border-radius:50%;background:var(--r);box-shadow:0 4px 14px rgba(0,0,0,.35)}
.vtile .play:after{content:"";position:absolute;left:16px;top:12px;border-style:solid;border-width:9px 0 9px 14px;border-color:transparent transparent transparent #fff}
.vtile:active .play{transform:scale(.92)}
.vdur{position:absolute;right:6px;bottom:6px;background:rgba(17,19,23,.8);color:#fff;font-size:.72rem;font-weight:800;border-radius:999px;padding:2px 7px;font-variant-numeric:tabular-nums}
.vdur.long{background:var(--r)}
.player{position:relative;margin:12px 0 0;border-radius:18px;overflow:hidden;background:#000;border:1.5px solid var(--r)}
.player.pop{animation:pcPop .3s ease both}
.player video{display:block;width:100%;max-height:60vh;background:#000}
.player .clr{position:absolute;top:10px;right:10px;background:#fff;border:1.5px solid var(--ln);border-radius:999px;padding:6px 12px;font-size:.85rem;font-weight:700;min-height:36px;z-index:2}
/* v4: logo header + sync indicator */
.apphead{position:sticky;top:calc(var(--sat) + var(--ban));z-index:30;display:flex;align-items:center;justify-content:space-between;gap:10px;
  margin:0 calc(-20px - var(--sar)) 4px calc(-20px - var(--sal));padding:10px calc(20px + var(--sar)) 10px calc(20px + var(--sal));
  background:rgba(255,255,255,.94);-webkit-backdrop-filter:saturate(180%) blur(14px);backdrop-filter:saturate(180%) blur(14px);border-bottom:1px solid #EFEFF1}
.applogo{height:30px;width:auto;display:block}
.app{padding-top:calc(var(--sat) + var(--ban))}
.sync{display:inline-flex;align-items:center;gap:7px;background:#fff;border:1.5px solid var(--ln);border-radius:999px;padding:6px 12px 6px 10px;min-height:34px;
  font-size:.68rem;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--lab);white-space:nowrap;max-width:62vw;overflow:hidden;text-overflow:ellipsis}
.sync span{overflow:hidden;text-overflow:ellipsis}
.sync i{flex:0 0 8px;width:8px;height:8px;border-radius:50%;background:var(--grn)}
.sync.ok{color:var(--grn2);border-color:#BBF7D0;background:#F0FDF4}
.sync.busy i,.sync.up i{background:var(--amb);animation:ping 1.4s infinite}
.sync.up{color:#8A5300;border-color:#F3D7A6;background:#FFF8EB}
.sync.off i{background:var(--ln2)}
.sync.err{color:var(--r2);border-color:#F5C2C2;background:var(--rbg)}.sync.err i{background:var(--r)}
.brand{flex-direction:column;align-items:flex-start;gap:8px;margin:22px 0 22px}
.brand .logo-full{width:min(78vw,300px);height:auto;border-radius:0}
.ph{position:relative;display:block}
.pend{position:absolute;left:6px;top:6px;background:rgba(255,255,255,.95);color:#8A5300;border:1px solid #F3D7A6;font-size:.7rem;font-weight:800;border-radius:999px;padding:1px 7px;z-index:2}
.pend.bad{color:var(--r2);border-color:#F5C2C2;left:4px;right:4px;text-align:center}

/* v5: server-space warning + 1080p tip */
.warn-card{margin:12px 0;padding:12px 14px;border-radius:14px;background:#fff4f4;border:1.5px solid #D32F2F;color:#8a1c1c;font-weight:700;font-size:15px;line-height:1.35}
.vtip{margin:8px 2px 4px;font-size:13px;line-height:1.4;color:#5b6270}

/* v6: login hero (circle emblem), 6-8 digit keypad, email field */
.hero{display:flex;flex-direction:column;align-items:center;text-align:center;margin:18px 0 18px}
.hero .hero-em{width:min(52vw,210px);height:auto;filter:drop-shadow(0 10px 22px rgba(0,0,0,.14));animation:heroIn .7s cubic-bezier(.2,.9,.25,1.15) both}
.hero .hero-wm{width:min(64vw,250px);height:auto;margin-top:16px;animation:heroUp .55s .18s cubic-bezier(.2,.8,.2,1) both}
.hero span{margin-top:8px;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase;color:var(--lab);font-weight:700;animation:heroUp .55s .28s cubic-bezier(.2,.8,.2,1) both}
.hero.sm{margin:6px 0 4px}.hero.sm .hero-em{width:76px;filter:none;animation:heroIn .45s cubic-bezier(.2,.9,.25,1.15) both}
@keyframes heroIn{from{opacity:0;transform:scale(.82) rotate(-6deg)}to{opacity:1;transform:none}}
@keyframes heroUp{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media(prefers-reduced-motion:reduce){.hero .hero-em,.hero .hero-wm,.hero span{animation:none!important;opacity:1;transform:none}}
.pin-dots.many{gap:11px}.pin-dots.many i{width:15px;height:15px}
.keypad .okk{background:var(--r);border-color:var(--r);color:#fff;font-size:1.05rem;letter-spacing:.06em;box-shadow:0 8px 18px rgba(211,47,47,.28)}
.keypad .okk[aria-disabled=true]{background:#fff;border-color:var(--ln);color:var(--ln2);box-shadow:none}
.keypad .okk:active{background:#b71c1c;transform:scale(.95)}
.keypad .ghost[data-k=del]{font-size:1.5rem}
.f .opt-l{font-weight:500;color:var(--mut);text-transform:none;letter-spacing:0}
.f .ferr{display:block;margin-top:6px;color:#c62828;font-weight:700;font-size:.85rem}
.f .ferr[hidden]{display:none}
.lines a.mail{color:var(--r);font-weight:700;text-decoration:none;word-break:break-all;text-align:right}

/* v1.2.0 — pinned CTA: fixed bar with a white fade so it never covers list items; content gets matching bottom padding */
.ctabar{position:fixed;left:0;right:0;bottom:0;z-index:20;padding:22px calc(20px + var(--sar)) calc(var(--sab) + 14px) calc(20px + var(--sal));
  background:linear-gradient(to bottom,rgba(255,255,255,0),#fff 22px);pointer-events:none}
.ctabar .go{pointer-events:auto;max-width:580px;margin:0 auto}
body.kb .ctabar{position:static;background:none;padding:18px 0 8px}  /* keyboard up: the button sits in the page flow under the content, never over the text box */
body.kb.has-cta .app{padding-bottom:calc(var(--sab) + 40px)}
.f.box-f textarea{-webkit-user-select:text;user-select:text}
body.has-cta .app{padding-bottom:calc(var(--sab) + 62px + 14px + 22px + 56px)}
body.has-cta .toast{bottom:calc(var(--sab) + 104px)}
.go.amber{background:var(--amb);box-shadow:0 10px 24px rgba(194,120,3,.25)}
.go.amber:active{background:#9a5f02}

/* outcome */
.opt.big{min-height:96px;padding:20px 18px}
.opt.big .ico{flex-basis:56px;height:56px;border-radius:16px}
.opt.big .ico svg{width:30px;height:30px}
.opt.big b{font-size:1.3rem;font-family:var(--fh)}
.opt.happy .ico{background:var(--grn);border-color:var(--grn);color:#fff}
.opt.more .ico{background:var(--amb);border-color:var(--amb);color:#fff}
.opt.happy.on{border-color:var(--grn);background:#F0FDF4}.opt.happy.on .dot{border-color:var(--grn);background:var(--grn)}
.opt.more.on{border-color:var(--amb);background:#FFF8EB}.opt.more.on .dot{border-color:var(--amb);background:var(--amb)}
.pbtns.two .pbtn{flex:1 1 calc(50% - 4px)}
.tag.fu{color:#8A5300;border-color:#F3D7A6;background:#FFF8EB}.tag.fu i{background:var(--amb)}
.sdot.fu{background:var(--amb);box-shadow:0 0 0 3px #FDE7C2}
.obadge{display:inline-block;background:var(--amb);color:#fff;border-radius:999px;padding:2px 10px;font-size:.72rem;font-weight:800;letter-spacing:.06em;text-transform:uppercase;vertical-align:middle;white-space:nowrap}
.obadge.sm{padding:1px 7px;font-size:.62rem}
.okmark{color:var(--grn);font-weight:900}
.obox{border-radius:18px;padding:16px 18px;margin:14px 0 0;border:1.5px solid}
.obox.happy{background:#F0FDF4;border-color:#BBF7D0}.obox.more{background:#FFF8EB;border-color:#F3D7A6}
.ohead{display:flex;align-items:center;gap:12px}
.ohead .ico{flex:0 0 40px;height:40px;border:0;color:#fff}.obox.happy .ico{background:var(--grn)}.obox.more .ico{background:var(--amb)}
.ohead b{font-family:var(--fh);font-size:1.2rem;color:var(--ink);flex:1}
.oline{margin:12px 0 0;color:var(--mut)}.oline b{color:var(--ink)}
.onote{margin:10px 0 0;white-space:pre-line;color:var(--fg)}
.lines.rv{margin-top:10px}.lines.rv li{font-size:.85rem;padding:8px 0}.lines.rv li span:last-child{white-space:normal;text-align:right}

/* Follow-up list (admin) */
.fu-lab{color:#8A5300}.fu-lab .cnt{display:inline-grid;place-items:center;min-width:22px;height:22px;border-radius:11px;background:var(--amb);color:#fff;font-size:.75rem;margin-left:6px;letter-spacing:0}
.fu-card{background:#FFF8EB;border:1.5px solid #F3D7A6;border-left:5px solid var(--amb);border-radius:18px;padding:14px 16px;margin:0 0 12px}
.fu-top{display:block}
.fu-top b{display:block;font-family:var(--fh);font-size:1.2rem;color:var(--ink);margin-top:6px}
.fu-top small{display:flex;align-items:center;gap:6px;color:var(--mut);font-size:.88rem}
.fu-top small.fx{color:#8A5300;font-weight:800;margin-top:4px}.fu-top small.fx svg{width:16px;height:16px}
.fu-top p{margin:8px 0 0;color:var(--fg);font-size:.95rem;white-space:pre-line}
.fu-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:12px;min-height:50px;border-radius:999px;background:var(--ink);color:#fff;font-weight:800}
.fu-btn svg{width:18px;height:18px}
.fu-hint{display:flex;align-items:center;gap:8px;border-left:4px solid var(--amb)}.fu-hint svg{width:18px;height:18px}

/* voice */
.mic{display:flex;align-items:center;gap:14px;width:100%;text-align:left;background:#fff;border:1.5px dashed var(--r);border-radius:18px;padding:14px 16px;margin:0 0 18px;min-height:64px}
.mic .mic-i{flex:0 0 46px;height:46px;border-radius:50%;background:var(--r);color:#fff;display:grid;place-items:center;box-shadow:0 6px 16px rgba(211,47,47,.28)}
.mic .mic-i svg{width:24px;height:24px}
.mic b{display:block;font-weight:800;color:var(--ink);font-size:1.05rem}.mic small{display:block;color:var(--mut);font-size:.86rem;line-height:1.35}
.mic:active{transform:scale(.985)}
.rec{position:fixed;inset:0;z-index:1000;pointer-events:auto;touch-action:manipulation;isolation:isolate;background:rgba(255,255,255,.97);display:flex;align-items:center;justify-content:center;padding:24px;animation:evcFade .18s ease}
.rec-c{width:100%;max-width:420px;text-align:center}
.rec-mic{display:inline-grid;place-items:center;width:128px;height:128px;border-radius:50%;background:var(--r);color:#fff;animation:recPulse 1.4s ease-out infinite}
.rec-mic svg{width:58px;height:58px}
.rec-mic.think{animation:recSpin 1.2s linear infinite;background:var(--ink)}
.rec h3{font-family:var(--fh);font-size:1.7rem;font-weight:800;color:var(--ink);margin:18px 0 4px}
.rec-t{color:var(--mut);font-variant-numeric:tabular-nums;margin:0}.rec-t b{color:var(--ink);font-size:1.3rem}
@keyframes recPulse{0%{box-shadow:0 0 0 0 rgba(211,47,47,.45)}100%{box-shadow:0 0 0 34px rgba(211,47,47,0)}}
@keyframes recSpin{50%{transform:scale(.92)}}
@media (prefers-reduced-motion:reduce){.rec-mic,.rec-mic.think{animation:none}}
.raw{margin:4px 0 16px;background:var(--card);border-radius:14px;padding:10px 14px}
.raw summary{cursor:pointer;font-weight:700;color:var(--lab);font-size:.9rem;min-height:32px;display:flex;align-items:center}
.raw p{margin:8px 0 2px;color:var(--mut);font-size:.9rem;white-space:pre-line}
.en-card{background:#F4F7FF;border:1.5px solid #D6E0FF;border-radius:16px;padding:14px 16px;margin:0 0 14px}
.en-card p{margin:0 0 8px;white-space:pre-line;font-size:.95rem}
.chk{display:flex;align-items:center;gap:10px;font-weight:700;font-size:1rem;min-height:44px;color:var(--ink)}
.chk input{width:22px;height:22px;accent-color:var(--r)}
#nj-other .f{margin-bottom:8px}

/* job types admin */
.tlist{display:grid;gap:8px;grid-template-columns:minmax(0,1fr)}
.trow{display:flex;align-items:center;gap:8px;background:var(--card);border-radius:16px;padding:8px 10px 8px 12px}
.trow.off{opacity:.6}
.tmain{display:flex;align-items:center;gap:12px;flex:1;min-width:0;min-height:52px}
.tmain .tx{min-width:0;flex:1}.tmain b{display:block;font-weight:800;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tmain small{display:block;color:var(--mut);font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.rnd.sm{width:44px;height:44px;flex:none}.rnd[disabled]{opacity:.3}
.pill.sm{min-height:44px;padding:8px 14px;font-size:.88rem}
.tprev{display:flex;align-items:center;gap:14px;background:var(--rbg);border:1.5px solid var(--r);border-radius:18px;padding:14px 16px;margin:6px 0 20px}
.tprev b{font-weight:800;color:var(--ink);font-size:1.1rem}
.igrid{display:grid;grid-template-columns:repeat(6,1fr);gap:8px}
.ib{aspect-ratio:1;border-radius:14px;background:var(--card);border:1.5px solid transparent;display:grid;place-items:center;color:var(--ink);min-height:44px}
.ib svg{width:24px;height:24px}.ib.on{border-color:var(--r);background:var(--rbg);color:var(--r)}
.toggle .sw{flex:0 0 52px;height:32px;border-radius:16px;background:#D4D4D8;position:relative;transition:background .2s}
.toggle .sw i{position:absolute;top:3px;left:3px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .2s}
.toggle.on .sw{background:var(--grn)}.toggle.on .sw i{transform:translateX(20px)}
.toggle.on{border-color:var(--grn);background:#F0FDF4}
.toggle .ico{color:#E0A100}

/* v8: client language switch */
.mode.lang-seg{margin:8px 0 0;max-width:280px}
.f .mode.lang-seg{margin-top:10px}

/* v8: dictation */
.rec-live{min-height:3em;max-height:30vh;overflow:auto;margin:8px 0 10px;color:var(--fg);font-size:1.05rem;line-height:1.4}
.dict-hint{display:flex;align-items:center;gap:8px;margin:-12px 0 16px;padding:10px 14px;border-radius:14px;background:var(--rbg);color:var(--r2);font-weight:800;font-size:.95rem}
.dict-hint svg{width:20px;height:20px;flex:none}
.lines.rv li.smsprep{display:block;font-size:.85rem}.lines.rv li.smsprep p{margin:4px 0 0;color:var(--fg);white-space:pre-line}

.rec .rec-c{position:relative;z-index:1}.rec .go,.rec .skip{position:relative;z-index:2;pointer-events:auto;touch-action:manipulation}
.rec .skip{min-height:48px;min-width:140px}
.kb-hint{margin:6px 2px 14px}

/* v8.4 work clock */
.wclock{font-family:var(--fh);font-weight:800;font-size:4.2rem;line-height:1;letter-spacing:-.02em;text-align:center;color:var(--ink);font-variant-numeric:tabular-nums;margin:28px 0 10px;padding:26px 10px;border-radius:24px;background:var(--card);border:2px solid var(--r);box-shadow:0 10px 28px rgba(211,47,47,.14)}
.wclock:not(.stopped){animation:wPulse 2s ease-in-out infinite}
.wclock.stopped{border-color:#1E9E55;box-shadow:0 10px 28px rgba(30,158,85,.14)}
@keyframes wPulse{0%,100%{box-shadow:0 10px 28px rgba(211,47,47,.10)}50%{box-shadow:0 10px 34px rgba(211,47,47,.30)}}
@media (prefers-reduced-motion:reduce){.wclock{animation:none!important}}
.wsum{text-align:center;color:var(--mut);margin:0 0 18px}.wsum b{color:var(--ink)}
.wline{margin:0 0 10px;padding:10px 14px;border-radius:14px;background:#EAF7EF;color:#14653A;font-weight:700}
.wrun{display:inline-block;margin:6px 0 2px;padding:3px 10px;border-radius:999px;background:#FDECEC;color:var(--r);font-weight:800;font-size:.85rem;font-variant-numeric:tabular-nums}
.wdone{display:inline-block;margin:6px 0 2px;padding:3px 10px;border-radius:999px;background:#EAF7EF;color:#14653A;font-weight:800;font-size:.85rem}
.lines li.wt b{color:#14653A}
.sheet{position:fixed;inset:0;z-index:1000;background:rgba(17,17,17,.45);display:flex;align-items:flex-end;justify-content:center;animation:evcFade .15s ease;pointer-events:auto}
.sheet-c{width:100%;max-width:560px;background:#fff;border-radius:24px 24px 0 0;padding:24px 20px calc(var(--sab) + 20px);text-align:center;display:flex;flex-direction:column;gap:12px}
.sheet-c h3{font-family:var(--fh);font-size:1.45rem;font-weight:800;margin:4px 0 8px;color:var(--ink)}

/* v8.4 Nuevo trabajo: new / existing client */
.cmode{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0 18px}
.cm{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;min-height:92px;padding:14px 8px;border-radius:18px;background:var(--card);border:2px solid transparent;color:var(--ink);font-size:1rem;transition:.15s}
.cm svg{width:28px;height:28px;color:var(--r)}.cm b{font-weight:800}
.cm.on{border-color:var(--r);background:#fff;box-shadow:0 8px 22px rgba(211,47,47,.14)}
.cres{display:flex;flex-direction:column;gap:8px;margin:0 0 14px}
.crow{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:12px 14px;min-height:64px;border-radius:16px;background:var(--card)}
.crow .tx{flex:1;min-width:0}.crow b{display:block;font-weight:800;color:var(--ink)}.crow small{display:block;color:var(--mut);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.crow .chev{color:var(--mut)}.crow:active{transform:scale(.99)}
.cpicked{margin:0 0 10px;padding:10px 14px;border-radius:14px;background:#EAF7EF;color:#14653A;font-weight:700}
.rec .rec-c{position:relative;z-index:1}.rec .go,.rec .skip{position:relative;z-index:2;pointer-events:auto;touch-action:manipulation}.rec .skip{min-height:48px;min-width:160px}
.vnotes{display:flex;flex-direction:column;gap:8px;margin:0 0 14px}.vnote{background:var(--card);border-radius:16px;padding:10px 12px}
.vnote audio{width:100%;height:40px;display:block}.vnote small{display:flex;align-items:center;gap:6px;color:var(--mut);margin-top:6px}.vnote small svg{width:14px;height:14px}
.vnote .clr{margin-left:auto;background:#fff;border:1.5px solid var(--ln);border-radius:999px;padding:4px 10px;font-size:.8rem;font-weight:700}

/* ===================== v8.5 ===================== */
.tabbar.five a{font-size:.6rem;letter-spacing:.04em}
.tabbar.five a svg{width:24px;height:24px}
.tbadge{position:absolute;top:6px;left:calc(50% + 6px);min-width:18px;height:18px;padding:0 5px;border-radius:9px;background:var(--r);color:#fff;font-size:.66rem;font-weight:800;display:grid;place-items:center;letter-spacing:0;box-shadow:0 0 0 2px #fff}
.cnt.red{display:inline-grid;place-items:center;min-width:22px;height:22px;border-radius:11px;background:var(--r);color:#fff;font-size:.75rem;padding:0 6px}
.tag.drive{color:#8A5300;border-color:#F3D7A6;background:#FFF8EB}
.tag.drive i{background:var(--amb);animation:ping 1.4s infinite}
/* Hoy: start the day */
.startday{background:var(--ink);color:#fff;border-radius:22px;padding:16px 18px 18px;margin:0 0 18px;box-shadow:0 12px 30px rgba(17,19,23,.18)}
.startday .k{color:#c9ccd1}
.startday b{display:block;font-family:var(--fh);font-weight:800;font-size:1.3rem;margin-top:4px}
.startday small{display:block;color:#c9ccd1;margin:2px 0 14px}
.startday .go{margin:0}
/* Manejando */
.addr-card{background:var(--card);border-radius:20px;padding:12px 16px;margin:2px 0 10px}
.addr-card b{display:block;font-family:var(--fh);font-weight:800;font-size:1.25rem;color:var(--ink);line-height:1.2}
.addr-card span{display:block;color:var(--mut);margin-top:4px;font-size:1rem}
.duo2{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0 0 10px}
.btn2{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;border-radius:999px;font-weight:800;font-size:.95rem;border:1.5px solid var(--ln);background:#fff;color:var(--ink);padding:0 10px;white-space:nowrap}
.btn2.map{background:var(--ink);border-color:var(--ink);color:#fff}
.btn2 svg{width:19px;height:19px;flex:none}
.drive{position:relative;border-radius:22px;background:linear-gradient(#F7F8FA,#EEF0F3);overflow:hidden;height:206px;margin:0 0 10px}
.drive .dstate{position:absolute;left:14px;top:12px;display:inline-flex;align-items:center;gap:8px;font-weight:800;color:#8A5300;background:#FFF8EB;border:1px solid #F3D7A6;border-radius:999px;padding:5px 12px;font-size:.88rem;z-index:2}
.drive .dstate i{width:8px;height:8px;border-radius:50%;background:var(--amb);animation:ping 1.4s infinite}
.drive .dtmr{position:absolute;right:14px;top:12px;font-family:var(--fh);font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums;font-size:1.05rem;z-index:2}
.drive .road{position:absolute;left:0;right:0;bottom:0;height:34px;background:#2B2F36;overflow:hidden}
.drive .road:after{content:"";position:absolute;left:0;top:15px;width:200%;height:4px;background:repeating-linear-gradient(90deg,#FFD400 0 26px,transparent 26px 52px);animation:oeRoad .9s linear infinite}
@keyframes oeRoad{to{transform:translateX(-52px)}}
.drive .hills{position:absolute;left:0;right:0;bottom:30px;height:70px;width:100%}
.drive .van{position:absolute;left:50%;bottom:12px;width:78%;margin-left:-38%;z-index:1;overflow:visible}
.drive .van .vbody{animation:oeBump .45s ease-in-out infinite alternate}
@keyframes oeBump{to{transform:translateY(-1.5px)}}
.drive .van .wh{animation:oeSpin .6s linear infinite}
@keyframes oeSpin{to{transform:rotate(360deg)}}
.eta{display:flex;gap:10px;align-items:center;background:#F0FDF4;color:#14532D;border:1px solid #BBF7D0;border-radius:16px;padding:9px 14px;font-weight:600;font-size:.95rem;line-height:1.35}
.eta.est{background:var(--card);color:var(--fg);border-color:#E4E4E7}
.eta svg{flex:0 0 20px;width:20px;height:20px;color:var(--grn2)}
.eta.est svg{color:var(--mut)}
.eta b{font-weight:800;white-space:nowrap}
/* Paso 3 ring */
.wk{display:flex;flex-direction:column;align-items:center;margin:14px 0 18px}
.wring{position:relative;width:min(290px,76vw);aspect-ratio:1}
.wring svg.r{display:block;width:100%;height:100%;transform:rotate(-90deg)}
.wring .trk{fill:none;stroke:#EFEFF1}
.wring .bar{fill:none;stroke:var(--r);stroke-linecap:round;transition:stroke-dashoffset 1s linear,stroke .4s;filter:drop-shadow(0 4px 8px rgba(211,47,47,.28));background:none;height:auto;border-radius:0;margin:0}
.wring .ticks line{stroke:#D4D4D8;stroke-width:2;stroke-linecap:round}
.wring:before{content:"";position:absolute;inset:10.5%;border-radius:50%;background:radial-gradient(circle at 50% 35%,#FFFFFF,#F7F7F8)}
.wring .orbit{position:absolute;inset:4.48%;transition:transform 1s linear;pointer-events:none}
.wring .orbit i{position:absolute;left:50%;top:0;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;background:var(--r);border:3px solid #fff;box-shadow:0 2px 8px rgba(211,47,47,.45)}
.wring.over .orbit i{background:var(--amb)}
@keyframes oeOrb{to{transform:rotate(360deg)}}
.wring .rin{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}
.wring .state{display:inline-flex;align-items:center;gap:8px;font-weight:800;color:var(--r2);background:var(--rbg);border-radius:999px;padding:6px 14px;font-size:.9rem;letter-spacing:.02em}
.wring .state i{width:8px;height:8px;border-radius:50%;background:var(--r);animation:ping 1.4s infinite}
.wring .time.wclock{all:unset;display:block;font-family:var(--fh);font-weight:800;color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.02em;line-height:1;font-size:clamp(2.4rem,11.5vw,3.3rem);margin-top:14px}
.wring .rin small{display:block;color:var(--mut);font-size:.95rem;font-weight:600;margin-top:8px}
.wring .rin small.allot{color:var(--ink);font-weight:800;margin-top:10px}
.wring .rin small.overby{color:#8A5300;font-weight:800;margin-top:4px}
.wring.over .bar{stroke:var(--amb);filter:drop-shadow(0 4px 8px rgba(194,120,3,.3))}
.wring.over .state{color:#8A5300;background:#FFF8EB}.wring.over .state i{background:var(--amb)}
.wring.over .orbit i{border-color:var(--amb)}
.wring.stopped .bar{stroke:#1E9E55;filter:none}.wring.stopped.over .bar{stroke:var(--amb)}
.wring.stopped .state{color:#14532D;background:#F0FDF4}.wring.stopped .state i,.wring.idle .state i{animation:none;background:#1E9E55}
.wring.idle .state{color:var(--lab);background:var(--card)}.wring.idle .state i{background:var(--ln2)}
@media (prefers-reduced-motion:reduce){.wring .orbit,.drive .road:after,.drive .van .vbody,.drive .van .wh{animation:none}}
/* Dictar pill */
.lrow{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 8px}
.lrow label{margin:0!important}
.dictar{display:inline-flex;align-items:center;gap:8px;background:var(--r);color:#fff;border:0;border-radius:999px;padding:9px 16px 9px 12px;font-weight:800;font-size:.95rem;min-height:44px;box-shadow:0 6px 16px rgba(211,47,47,.25);flex:none}
.dictar svg{width:20px;height:20px}
.dictar:active{transform:scale(.97)}
/* Calendario */
.calhd{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 0 12px}
.calhd .mode{margin:0;max-width:190px;flex:1}
.cnav{display:flex;align-items:center;gap:6px;font-weight:800;color:var(--ink);font-size:.92rem;white-space:nowrap}
.cnav button{width:36px;height:36px;border-radius:50%;border:1.5px solid var(--ln);display:grid;place-items:center;background:#fff;color:var(--ink)}
.cnav svg{width:16px;height:16px}
.clegend{display:flex;gap:8px;flex-wrap:wrap;margin:0 0 6px}
.cchip{display:inline-flex;align-items:center;gap:6px;font-weight:800;font-size:.82rem;color:var(--ink);background:var(--card);border-radius:999px;padding:5px 11px 5px 7px}
.cchip i{width:12px;height:12px;border-radius:50%}
.cdayh{font-size:.8rem;color:var(--mut);margin:0 0 14px;line-height:1.4}
.linkb{background:none;border:0;padding:0;color:var(--r);font-weight:800;font-size:inherit;text-decoration:underline;text-underline-offset:2px}
.cday{border:1.5px solid #EFEFF1;border-radius:18px;padding:10px 12px 12px;margin:0 0 10px;background:#fff}
.cday.today{border-color:var(--r);box-shadow:0 6px 18px rgba(211,47,47,.08)}
.cdh{display:flex;width:100%;justify-content:space-between;align-items:baseline;margin:0 0 4px;background:none;border:0;padding:0;text-align:left}
.cdh b{font-family:var(--fh);font-weight:800;color:var(--ink);font-size:1.02rem;text-transform:capitalize}
.cdh small{color:var(--mut);font-size:.78rem;font-weight:600}
.clane{display:flex;align-items:center;gap:8px;margin-top:6px}
.clane .av,.cdw .av,.mwb .av{flex:0 0 28px;height:28px;border-radius:50%;color:#fff;font-weight:800;font-size:.68rem;display:grid;place-items:center}
.ctrk{flex:1;min-width:0;display:flex;gap:3px;height:38px}
.cblk{flex:1 1 0;min-width:0;border:0;border-radius:9px;padding:3px 7px;color:#fff;display:flex;flex-direction:column;justify-content:center;line-height:1.15;overflow:hidden;text-align:left}
.cblk b{font-size:.72rem;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:block}
.cblk small{font-size:.66rem;opacity:.92;white-space:nowrap;font-weight:600}
.cblk.done{opacity:.45}
.cblk.live{box-shadow:inset 0 0 0 2px rgba(255,255,255,.75)}
.cblk:active{transform:scale(.97)}
.cfree{flex:1;border:1.5px dashed var(--ln);border-radius:9px;display:grid;place-items:center;color:var(--ln2);font-size:.72rem;font-weight:700;min-height:36px}
.cday.solo{padding:12px}
.cdlane{margin:0 0 14px}.cdlane:last-child{margin:0}
.cdw{display:flex;align-items:center;gap:8px;margin:0 0 6px}
.cdw b{color:var(--ink);font-weight:800}.cdw small{color:var(--mut);font-size:.8rem;margin-left:auto}
.cdtrk{display:flex;flex-direction:column;gap:6px}
.cdrow{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--card);border:0;border-radius:14px;padding:10px 12px;min-height:56px}
.cdrow i{flex:0 0 6px;align-self:stretch;border-radius:6px;background:var(--c)}
.cdrow .tx{flex:1;min-width:0}.cdrow b{display:block;color:var(--ink);font-weight:800;font-size:.95rem}.cdrow small{display:block;color:var(--mut);font-size:.8rem}
.cdrow.done{opacity:.55}
/* Mover trabajo sheet */
.sheet.mv .sheet-c{text-align:left;gap:0;padding-top:10px;max-height:92vh;overflow:auto}
.sheet.mv .grab{display:block;width:44px;height:5px;border-radius:5px;background:#D4D4D8;margin:0 auto 12px}
.sheet.mv h3{margin:0 0 6px}
.sheet.mv .lab{margin:14px 0 8px}
.mjc{display:flex;gap:12px;align-items:stretch;background:var(--card);border-radius:16px;padding:12px 14px}
.mjc .mbar{flex:0 0 6px;border-radius:6px}
.mjc b{display:block;color:var(--ink);font-weight:800}.mjc small{display:block;color:var(--mut);font-size:.86rem;line-height:1.35}
.mwho{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.mwb{display:flex;flex-direction:column;align-items:center;gap:5px;border:1.5px solid var(--ln);background:#fff;border-radius:16px;padding:8px 4px;font-weight:800;color:var(--ink);font-size:.9rem;line-height:1.1}
.mwb .av{width:32px;height:32px;flex:none}
.mwb small{font-weight:600;color:var(--mut);font-size:.7rem}
.mwb.on{border-color:var(--ink);border-width:2px;background:#FAFAFA;box-shadow:0 4px 12px rgba(0,0,0,.08)}
.mdlab{display:flex!important;align-items:center;justify-content:space-between}
.mdlab span{display:flex;gap:6px}
.mdays{display:grid;grid-template-columns:repeat(7,1fr);gap:5px}
.mdb{border:1.5px solid var(--ln);background:#fff;border-radius:14px;padding:7px 0;text-align:center;line-height:1.15}
.mdb b{display:block;font-size:.66rem;color:var(--mut);font-weight:700;text-transform:uppercase;letter-spacing:.04em}
.mdb span{display:block;font-family:var(--fh);font-weight:800;font-size:1.1rem;color:var(--ink)}
.mdb small{display:block;font-size:.6rem;color:var(--mut);font-weight:700}
.mdb.on{background:var(--ink);border-color:var(--ink)}.mdb.on b,.mdb.on span,.mdb.on small{color:#fff}
.mdb:disabled{opacity:.35}
.mprev{display:flex;gap:10px;align-items:center;background:#EFF6FF;color:#1E3A8A;border-radius:14px;padding:10px 12px;margin:14px 0 0;font-size:.88rem;font-weight:600;line-height:1.35}
.mprev i{flex:0 0 10px;height:10px;border-radius:50%}
.sheet.mv .go{margin-top:16px}
.sheet.mv .skip{margin-top:4px}
/* Alertas */
.alert{display:flex;gap:12px;align-items:center;background:var(--card);border-radius:18px;padding:14px 16px;margin:0 0 10px;color:inherit;text-decoration:none}
.alert.new{background:#FFF8EB;box-shadow:inset 0 0 0 1.5px #F3D7A6}
.alert .ico{flex:0 0 42px;height:42px;border-radius:50%;display:grid;place-items:center;background:#fff;color:var(--amb)}
.alert .ico svg{width:22px;height:22px}
.alert .tx{flex:1;min-width:0}.alert b{display:block;color:var(--ink);font-weight:800}.alert small{display:block;color:var(--mut);font-size:.86rem}
.alert small.aline{color:#8A5300;font-weight:700;margin-top:2px}
.mailprev{background:var(--card);border-radius:16px;padding:14px 16px;margin:10px 0 0;font-size:.92rem;line-height:1.45;color:var(--fg)}
.mailprev b{display:block;color:var(--ink);margin-bottom:6px}
.mailprev p{margin:0}

/* v8.5b: drive-time pick + compact address card (ETA note above the van, never behind Llegué) */
.etapick{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:2px 0 6px}
.etab{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:74px;border-radius:20px;border:2px solid var(--ln);background:#fff;color:var(--ink);font-family:var(--fh)}
.etab b{font-size:1.6rem;font-weight:800;line-height:1}.etab small{font-size:.8rem;font-weight:700;color:var(--mut);margin-top:3px}
.etab.on{border-color:var(--red);background:#FFF1F1;box-shadow:0 0 0 3px rgba(211,36,43,.15)}.etab.on small{color:var(--red)}
.go.wait{opacity:.55}
.addr-card.row{display:flex;align-items:center;gap:10px;padding:10px 10px 10px 16px}
.addr-card.row .at{flex:1;min-width:0}.addr-card.row .ab{display:flex;flex-direction:column;gap:6px;flex:none}
.addr-card.row .btn2{min-height:38px;padding:0 14px;font-size:.88rem;gap:6px}.addr-card.row .btn2 svg{width:16px;height:16px}
.drive + .eta,.addr-card.row + .eta{margin:0 0 10px}

/* v8.6: calendar drag & drop + day filter + 'Libre' picker */
.cblk,.cdrow{-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:manipulation}
.cblk.lifting,.cdrow.lifting{transition:transform .3s ease .08s;transform:scale(.97)}
.dph{opacity:.28!important;outline:2px dashed rgba(17,19,23,.35);outline-offset:-2px}
.dghost{position:fixed!important;z-index:2000;pointer-events:none;margin:0!important;box-shadow:0 18px 40px rgba(17,19,23,.32),0 4px 10px rgba(17,19,23,.18);border-radius:12px;transition:none;opacity:.97}
body.dragging{-webkit-user-select:none;user-select:none}
body.dragging .cday{transition:none}
.dz.dtgt{background:rgba(211,36,43,.07);box-shadow:0 0 0 2px rgba(211,36,43,.55);border-radius:11px}
.cchip.dtgt,.wfc.dtgt{box-shadow:0 0 0 2px var(--red);background:#FFF1F1}
.ctrk.dz{min-height:38px}
.cfree{display:flex;align-items:center;justify-content:center;gap:5px;flex:1 1 0;border:1.5px dashed var(--ln);background:transparent;color:var(--mut);font-weight:700;font-size:.78rem;border-radius:9px;min-height:36px;padding:0 8px}
.cfree svg{width:14px;height:14px}.cfree.hide{display:none}
.cdtrk .cfree{min-height:52px;border-radius:14px;font-size:.9rem}
.wfilt{display:flex;gap:8px;overflow-x:auto;margin:0 -2px 10px;padding:2px;scrollbar-width:none}.wfilt::-webkit-scrollbar{display:none}
.wfc{flex:none;display:inline-flex;align-items:center;gap:7px;min-height:40px;padding:0 14px;border-radius:999px;border:1.5px solid var(--ln);background:#fff;font-weight:800;font-size:.9rem;color:var(--ink);white-space:nowrap}
.wfc i{width:11px;height:11px;border-radius:50%}.wfc.on{background:var(--ink);border-color:var(--ink);color:#fff}
.sheet.pk .pksub{display:flex;align-items:center;gap:8px;color:var(--mut);font-weight:700;margin:-4px 0 6px}
.sheet.pk .pksub .av{width:26px;height:26px;font-size:.7rem}
.pkr{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--card);border:0;border-radius:14px;padding:11px 12px;margin:0 0 8px;color:var(--ink)}
.pkr i{flex:0 0 6px;align-self:stretch;border-radius:6px}.pkr span{flex:1;min-width:0}.pkr b{display:block;font-weight:800;font-size:.95rem}.pkr small{display:block;color:var(--mut);font-size:.8rem}
.pkr svg{width:18px;height:18px;color:var(--mut);flex:none}

/* ---------- v8.7: Crew-Control-style admin calendar (admin + dispatcher only) ---------- */
@media (min-width:760px){.app[data-view=cal]{max-width:1440px}}
.kc-cal .kc-h{margin:14px 0 12px}
.kc-tb{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.kc-dd,.kc-dp,.kc-tdy,.kc-nb{height:42px;border-radius:12px;border:1.5px solid var(--ln);background:#fff;display:inline-flex;align-items:center;gap:8px;padding:0 12px;font-weight:800;font-size:.9rem;color:var(--ink);white-space:nowrap;position:relative}
.kc-dd{padding:0}.kc-dd select{appearance:none;-webkit-appearance:none;border:0;background:transparent;font:inherit;font-weight:800;color:var(--ink);height:100%;padding:0 34px 0 12px;border-radius:12px;max-width:52vw;text-overflow:ellipsis}
.kc-dd svg{position:absolute;right:10px;width:16px;height:16px;color:var(--mut);pointer-events:none}
.kc-dp svg{width:18px;height:18px;color:var(--mut)}
.kc-dp input{position:absolute;inset:0;opacity:0;width:100%;height:100%;cursor:pointer;border:0;padding:0;margin:0}
.kc-tdy{background:var(--ink);border-color:var(--ink);color:#fff;cursor:pointer}
.kc-seg{display:inline-flex;background:var(--card);border-radius:12px;padding:3px;height:42px;box-sizing:border-box}
.kc-seg button{border:0;background:transparent;padding:0 13px;border-radius:9px;font:inherit;font-size:.88rem;font-weight:800;color:var(--mut);cursor:pointer}
.kc-seg button.on{background:#fff;color:var(--ink);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.kc-nb{background:var(--r);border-color:var(--r);color:#fff;margin-left:auto;text-decoration:none}.kc-nb svg{width:18px;height:18px}
.kc-wk{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:14px 0 10px}
.kc-wk h3{margin:0;font-family:var(--fh);font-size:1.4rem;font-weight:800;color:var(--ink);text-align:center;flex:1}
.kc-ar{width:42px;height:42px;flex:none;border-radius:50%;border:1.5px solid var(--ln);background:#fff;display:grid;place-items:center;color:var(--ink);cursor:pointer;padding:0}.kc-ar svg{width:20px;height:20px}
.kc-uns{background:#fff;border:1.5px dashed #C9CDD3;border-radius:16px;padding:10px 12px;margin:0 0 12px}
.kc-uh{display:flex;align-items:center;justify-content:center;gap:6px;font-weight:700;color:var(--fg);flex-wrap:wrap}.kc-uh b{font-weight:900;color:var(--ink)}
.kc-uh .linkb{color:var(--r);font-weight:800}
.kc-chips{display:none;gap:8px;overflow-x:auto;margin-top:10px;padding:2px;min-height:52px;align-items:stretch;border-radius:12px}
.kc-uns.open .kc-chips{display:flex}
.kc-trayh{border-radius:12px;padding:4px}.kc-trayh.dtgt{background:#FFF1F1;box-shadow:0 0 0 2px rgba(211,36,43,.55)}
.kc-uchip{flex:none;width:180px;text-align:left;background:var(--card);border:0;border-left:4px solid var(--c,#9AA0A8);border-radius:12px;padding:8px 10px;font:inherit;font-size:.8rem;line-height:1.25;color:var(--fg);cursor:pointer;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:manipulation}
.kc-uchip b{display:block;font-size:.86rem;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.kc-uchip small{color:var(--mut);display:block}.kc-uchip i{font-style:normal;color:var(--mut);font-size:.72rem}
.kc-uchip .t{display:none}
.kc-tz{flex:1;min-width:160px;display:grid;place-items:center;color:var(--mut);font-size:.78rem;font-weight:700;border:1.5px dashed #E1E3E6;border-radius:12px;padding:6px}
.kc-row{background:#fff;border:1px solid #E6E8EB;border-radius:16px;margin:0 0 10px;overflow:hidden}
.kc-rh{display:flex;align-items:center;gap:10px;width:100%;padding:11px 14px;font:inherit;font-weight:800;color:var(--ink);background:#fff;border:0;text-align:left;cursor:pointer}
.kc-rh .car{width:18px;display:grid;place-items:center;color:var(--mut)}.kc-rh .car svg{width:16px;height:16px}
.kc-rh .av,.kc-dh .av{width:28px;height:28px;border-radius:50%;display:inline-grid;place-items:center;color:#fff;font-size:.72rem;font-weight:900;flex:none}
.kc-rh b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kc-rh small{margin-left:auto;color:var(--mut);font-weight:700;font-size:.82rem;white-space:nowrap}
.kc-rh.dtgt{background:#FFF1F1}
.kc-sw{position:relative}.kc-sw:after{content:"";position:absolute;right:0;top:0;bottom:0;width:22px;background:linear-gradient(90deg,rgba(255,255,255,0),#fff);pointer-events:none;z-index:4}
.kc-scr{overflow-x:auto;-webkit-overflow-scrolling:touch;overscroll-behavior-x:contain}
.kc-grid{display:grid;border-top:1px solid #EEF0F2;position:relative}
.kc-dh{position:relative;background:#fff;z-index:2;text-align:center;padding:8px 2px 6px;border:0;border-left:1px solid #EEF0F2;border-bottom:1px solid #EEF0F2;font:inherit;cursor:pointer;color:inherit;min-width:0}
.kc-dh.ax{border-left:0;cursor:default}
.kc-dh b{display:block;font-size:.86rem;color:#2B2F36;font-weight:800;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-transform:capitalize}.kc-dh span{display:block;font-size:.78rem;color:var(--mut);font-weight:700}
.kc-dh small{display:block;font-size:.7rem;color:var(--r);font-weight:800;margin-top:2px;min-height:1em}
.kc-dh.today{background:var(--r);border-radius:10px 10px 0 0}.kc-dh.today b,.kc-dh.today span,.kc-dh.today small{color:#fff}
.tcols .kc-dh{cursor:default}.tcols .kc-dh .av{width:24px;height:24px;font-size:.66rem;margin-bottom:2px}
.kc-ax{position:relative;border-right:1px solid #EEF0F2}
.kc-ax i{position:absolute;right:5px;font-style:normal;font-size:.68rem;color:var(--mut);font-weight:700;transform:translateY(-50%);white-space:nowrap}
.kc-col{position:relative;border-left:1px solid #EEF0F2;background-image:linear-gradient(#EEF0F2 1px,transparent 1px);background-size:100% var(--hh);cursor:copy;min-width:0}
.kc-col.today{background-color:#FFFAFA}
.kc-col.dz.dtgt{background-color:rgba(211,36,43,.06);box-shadow:inset 0 0 0 2px rgba(211,36,43,.5);border-radius:0}
.kc-end{position:absolute;left:0;right:0;border-top:2px dashed #E3B4B4;pointer-events:none}
.kc-end span{position:absolute;right:3px;top:-9px;background:#fff;color:#B4797A;font-size:.6rem;font-weight:800;padding:0 3px;white-space:nowrap}
.kc-now{position:absolute;left:0;right:0;border-top:2px solid var(--r);z-index:3;pointer-events:none}.kc-now:before{content:"";position:absolute;left:-5px;top:-6px;width:10px;height:10px;border-radius:50%;background:var(--r)}
.kc-jb{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;position:absolute;left:3px;right:3px;border-radius:9px;padding:5px 7px;overflow:hidden;color:#fff;line-height:1.2;box-shadow:0 1px 2px rgba(0,0,0,.12);border:0;text-align:left;font:inherit;cursor:pointer;z-index:1;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none;touch-action:manipulation;transition:top .18s ease,height .18s ease}
.kc-jb b{display:block;font-size:.74rem;font-weight:900;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-decoration:underline;text-underline-offset:2px;padding-right:12px}
.kc-jb .t{display:block;font-size:.68rem;font-weight:700;opacity:.95;white-space:nowrap}.kc-jb .t em{font-style:normal}.kc-jb .t .mn{font-style:normal;opacity:.9}
.kc-jb .n{display:block;font-size:.66rem;opacity:.9;margin-top:2px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical}
.kc-jb.done{opacity:.55}.kc-jb .st{position:absolute;right:6px;top:5px;font-size:.7rem}
.kc-jb.live{box-shadow:0 0 0 2px #fff,0 0 0 4px currentColor}
.kc-jb.man{background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.0) 0 8px,rgba(255,255,255,.10) 8px 16px)!important}
.kc-jb.lifting{transition:transform .3s ease .08s;transform:scale(.97)}
.kc-jb.dph{opacity:.3!important}
.kc-rsz{position:absolute;left:0;right:0;bottom:0;height:14px;cursor:ns-resize;touch-action:none;display:block}
.kc-rsz:after{content:"";position:absolute;left:50%;bottom:4px;width:22px;height:3px;margin-left:-11px;border-radius:2px;background:rgba(255,255,255,.75)}
.kc-jb.rsz-on{z-index:6;box-shadow:0 0 0 2px var(--ink),0 8px 18px rgba(17,19,23,.25);transition:none}
body.resizing,body.resizing *{cursor:ns-resize!important;-webkit-user-select:none;user-select:none}
.kc-tip{position:absolute;right:4px;bottom:16px;background:var(--ink);color:#fff;font-size:.7rem;font-weight:900;border-radius:7px;padding:2px 6px}
.kc-free{position:absolute;left:4px;right:4px;border:1.5px dashed #D4D4D8;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:var(--mut);font-weight:800;font-size:.78rem;pointer-events:auto}
.kc-free.hide{display:none}.kc-free span{display:inline-flex;align-items:center;gap:4px}.kc-free svg{width:14px;height:14px}
.kc-asg{border:0;background:var(--card);color:var(--ink);font:inherit;font-size:.68rem;font-weight:800;padding:5px 8px;border-radius:8px;cursor:pointer}
.kc-col.dtgt .kc-free{border-color:var(--r);color:var(--r);background:rgba(211,36,43,.05)}
.kc-hint{font-size:.8rem;margin:6px 2px 10px}
.kc-cal.wide .kc-tb{flex-wrap:nowrap}
.kc-cal .dghost.kc-jb,.dghost.kc-jb{color:#fff;padding:5px 7px}
.dghost.kc-uchip{background:#fff}
/* Mover trabajo: Duración */
.kc-durw{display:flex;align-items:center;gap:10px;justify-content:center;flex-wrap:wrap}
.kc-durw .rnd{width:44px;height:44px;border-radius:50%;border:1.5px solid var(--ln);background:#fff;font-size:1.3rem;font-weight:900;color:var(--ink);cursor:pointer}
.kc-dur{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--ln);border-radius:12px;padding:0 12px;height:44px;background:#fff}
.kc-dur input{width:64px;border:0;font:inherit;font-size:1.1rem;font-weight:900;text-align:center;color:var(--ink);background:transparent;outline:0}
.kc-dur span{color:var(--mut);font-weight:800}
.kc-auto{color:var(--mut);font-size:.8rem;font-weight:700;width:100%;text-align:center}
.kc-durw .linkb{width:100%;color:var(--r);font-weight:800}
.kc-nod{align-self:center;border:1.5px dashed #C9CDD3;background:#fff;border-radius:999px;padding:7px 14px;font:inherit;font-size:.85rem;font-weight:800;color:var(--mut);cursor:pointer}
.kc-nod.on{border-style:solid;border-color:var(--ink);color:var(--ink);background:var(--card)}
@media (max-width:759px){.kc-nb span{display:none}.kc-nb{padding:0 12px}.kc-wk h3{font-size:1.2rem}.kc-dd select{max-width:44vw}}
.kc-col .kc-jb small{display:block;font-size:.66rem;opacity:.9}.kc-col .kc-jb i:not(.kc-rsz):not(.mn){display:none}
.tcols .kc-dh b{text-transform:none}
/* ---------- v8.9: iPhone admin calendar (narrow only) + empty-slot choice (iPhone sheet / Mac popover) ---------- */
.kc-phone{padding-top:4px}
.kc-mon{padding:2px 0 4px}
.kc-mh{display:flex;align-items:center;justify-content:space-between;padding:4px 4px 8px}
.kc-mh b{font-family:var(--fh);font-size:1.18rem;font-weight:800;color:var(--ink)}.kc-mh>span{display:flex;gap:6px}
.kc-mb{width:38px;height:38px;border-radius:50%;border:0;background:var(--card);display:grid;place-items:center;color:var(--ink);cursor:pointer;padding:0}.kc-mb svg{width:18px;height:18px}
.kc-mg{display:grid;grid-template-columns:repeat(7,1fr);row-gap:2px;text-align:center}
.kc-mg i{font-style:normal;font-size:.72rem;font-weight:800;color:var(--mut);padding:4px 0 6px;text-transform:uppercase;letter-spacing:.04em}
.kc-mg button{position:relative;height:42px;border:0;background:none;display:grid;place-items:center;font:inherit;font-size:1rem;font-weight:700;color:var(--fg);cursor:pointer;padding:0}
.kc-mg button span{width:38px;height:38px;border-radius:50%;display:grid;place-items:center}
.kc-mg button.o{color:#C4C7CC}.kc-mg button.t{color:var(--r);font-weight:900}
.kc-mg button.s span{background:var(--ink);color:#fff;font-weight:900}.kc-mg button.t.s span{background:var(--r)}
.kc-mg button em{position:absolute;bottom:2px;left:50%;width:5px;height:5px;margin-left:-2.5px;border-radius:50%;background:var(--r)}.kc-mg button.s em{display:none}
.kc-mfold{display:flex;align-items:center;justify-content:center;gap:4px;margin:2px auto 8px;border:0;background:none;font:inherit;font-size:.82rem;font-weight:800;color:var(--mut);cursor:pointer;padding:6px 10px}.kc-mfold svg{width:15px;height:15px;transform:rotate(180deg)}
.kc-pday{display:flex;align-items:center;justify-content:center;gap:6px;margin:6px 0 12px}
.kc-pa{width:44px;height:44px;border:0;background:none;display:grid;place-items:center;color:var(--ink);cursor:pointer;padding:0;flex:none}.kc-pa svg{width:24px;height:24px}
.kc-pt{display:inline-flex;align-items:center;gap:6px;border:0;background:none;font-family:var(--fh);font-size:1.55rem;font-weight:800;color:var(--ink);cursor:pointer;padding:4px 6px;min-width:0}
.kc-pt span{white-space:nowrap}.kc-pt svg{width:18px;height:18px;color:var(--mut);flex:none}
.kc-prow{display:flex;gap:8px;margin:0 0 10px;align-items:stretch}
.kc-psel{flex:1;min-width:0;height:48px;border:1.5px solid var(--ln);border-radius:12px;display:flex;align-items:center;gap:10px;padding:0 0 0 12px;background:#fff;position:relative}
.kc-psel select{appearance:none;-webkit-appearance:none;position:absolute;inset:0;width:100%;height:100%;border:0;background:transparent;font:inherit;font-weight:800;font-size:1rem;color:var(--ink);padding:0 36px 0 48px;border-radius:12px;cursor:pointer;text-overflow:ellipsis}
.kc-psel>svg{position:absolute;right:12px;width:18px;height:18px;color:var(--mut);pointer-events:none}
.kc-psel .av,.kc-pill .av{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:.68rem;font-weight:900;flex:none;pointer-events:none}
.kc-psel .av.all{background:var(--ink)}
.kc-ptdy{height:48px;border-radius:12px;border:1.5px solid var(--ink);background:var(--ink);color:#fff;font:inherit;font-weight:900;padding:0 18px;cursor:pointer;letter-spacing:.02em}
.kc-pnew{flex:1;height:52px;border-radius:12px;background:var(--r);color:#fff;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:900;font-size:1.04rem;text-decoration:none;box-shadow:0 4px 14px rgba(211,47,47,.28)}.kc-pnew svg{width:20px;height:20px}
.kc-phr{height:52px;border-radius:12px;border:1.5px solid var(--ln);background:#fff;display:inline-flex;align-items:center;gap:6px;padding:0 14px;font:inherit;font-weight:800;color:var(--ink);cursor:pointer;white-space:nowrap}.kc-phr svg{width:18px;height:18px}
.kc-ptray{border:1.5px solid #E4E4E7;background:#FAFAFA;border-radius:14px;padding:0;margin:0 0 12px}
.kc-ptray .kc-uh{width:100%;justify-content:flex-start;gap:10px;padding:13px 14px;border:0;background:none;font:inherit;font-size:1rem;cursor:pointer;flex-wrap:nowrap;text-align:left}
.kc-ptray .kc-uh>svg{width:20px;height:20px;margin-left:auto;color:var(--mut);flex:none;transition:transform .2s}.kc-ptray.open .kc-uh>svg{transform:rotate(180deg)}
.kc-badge{min-width:26px;height:26px;border-radius:13px;background:var(--r);color:#fff;font-size:.8rem;font-weight:900;display:grid;place-items:center;padding:0 7px;flex:none}.kc-badge.z{background:#A1A1AA}
.kc-ptray .kc-chips{flex-direction:column;overflow:visible;margin:0;padding:0 10px 10px}
.kc-ptray .kc-uchip{width:auto;background:#fff;border:1px solid #E4E4E7;border-left:4px solid var(--c,#71717A);padding:10px 12px;font-size:.84rem}
.kc-ptray .kc-uchip b{font-size:.95rem}
.kc-ptray .kc-tz{min-width:0;min-height:44px}
.kc-ptray.open .kc-uh{padding-bottom:10px}
.kc-ptw{border:1.5px solid #E4E4E7;border-radius:16px}
.kc-ptl .kc-dh{padding:10px 2px 9px}
.kc-pill{display:inline-flex;align-items:center;gap:7px;border-radius:999px;padding:5px 12px 5px 5px;font-weight:900;color:var(--ink);background:color-mix(in srgb,var(--c) 12%,#fff);max-width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kc-ptl .kc-dh small{color:var(--mut);font-weight:700;font-size:.78rem;margin-top:4px}
.kc-ptl:not(.one) .kc-pill{font-size:.84rem;padding:4px 9px 4px 4px;gap:5px}.kc-ptl:not(.one) .kc-pill .av{width:22px;height:22px;font-size:.6rem}
.kc-ptl .kc-ax i{font-size:.74rem;right:7px}
.kc-ptl .kc-col{background-color:#fff}.kc-ptl .kc-col.today{background-color:#fff}
.kc-ptl .kc-jb{left:5px;right:5px;border-radius:10px;padding:7px 10px}
.kc-ptl.one .kc-jb b{font-size:.95rem}.kc-ptl.one .kc-jb .t{font-size:.86rem;font-weight:800;margin-top:1px}.kc-ptl.one .kc-jb .n{font-size:.8rem;margin-top:3px}
.kc-ptl:not(.one) .kc-jb{padding:6px 7px}.kc-ptl:not(.one) .kc-jb b{font-size:.82rem}.kc-ptl:not(.one) .kc-jb .t{font-size:.74rem}.kc-ptl:not(.one) .kc-jb .n{font-size:.7rem}
.kc-ptl .kc-rsz{height:18px}.kc-ptl .kc-rsz:after{width:30px;height:4px;margin-left:-15px;bottom:5px}
.kc-ptl .kc-now{left:-6px}
.kc-ptl .kc-end span{font-size:.68rem;top:-10px}
.kc-ptl .kc-free{font-size:.86rem;gap:8px}.kc-ptl .kc-asg{font-size:.8rem;padding:7px 12px;border-radius:10px}
.kc-phone .kc-hint{margin-top:10px}
.kc-slot{position:absolute;left:5px;right:5px;border-radius:9px;background:#FDECEC;border:2px solid var(--r);color:#B71C1C;font-weight:900;font-size:.8rem;display:flex;align-items:center;gap:5px;padding:0 8px;z-index:4;pointer-events:none;box-sizing:border-box;white-space:nowrap;overflow:hidden}.kc-slot svg{width:14px;height:14px;flex:none}
.sheet.kc-sl .pksub{display:flex;align-items:center;gap:8px;color:var(--mut);font-weight:700;margin:-2px 0 12px}
.sheet.kc-sl .pksub .av{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:.66rem;font-weight:900}
.kc-opt{display:flex;align-items:center;gap:12px;width:100%;border:1.5px solid var(--ln);border-radius:16px;padding:14px;margin:0 0 10px;background:#fff;font:inherit;color:var(--ink);text-align:left;cursor:pointer}
.kc-opt .ic{width:44px;height:44px;border-radius:12px;display:grid;place-items:center;background:var(--card);flex:none}.kc-opt .ic svg{width:22px;height:22px}
.kc-opt .tx{flex:1;min-width:0}.kc-opt b{display:block;font-size:1.02rem}.kc-opt small{display:block;color:var(--mut);font-size:.84rem;font-weight:600;margin-top:2px}
.kc-opt>svg{width:20px;height:20px;color:var(--mut);flex:none}
.kc-opt.r{border-color:var(--r);background:#FDECEC}.kc-opt.r .ic{background:var(--r);color:#fff}
.sheet.kc-pop{background:rgba(17,17,17,.12);display:block}
.sheet.kc-pop .sheet-c{position:fixed;width:340px;max-width:calc(100vw - 20px);border-radius:18px;padding:16px;box-shadow:0 20px 60px rgba(0,0,0,.3);animation:none}
.sheet.kc-pop .grab{display:none}.sheet.kc-pop h3{font-size:1.15rem}
.sheet.kc-pop .kc-opt{padding:12px;border-radius:14px;margin-bottom:8px}.sheet.kc-pop .kc-opt .ic{width:38px;height:38px;border-radius:10px}
.kc-ptl .kc-dh.today{background:#fff;border-radius:0}.kc-ptl .kc-dh.today small{color:var(--mut)}.kc-ptl .kc-dh.today .kc-pill{color:var(--ink)}
.kc-ptl .kc-ax i.f{transform:none;top:3px!important}
.kc-ptl .kc-dh .kc-pill{display:inline-flex;font-size:1rem}.kc-ptl .kc-dh .kc-pill .av{display:grid;margin:0}
.kc-ptl:not(.one) .kc-dh .kc-pill{font-size:.84rem}
.kc-ptl .kc-col~.kc-col .kc-now:before{display:none}
.sheet.pk .pksub .av{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:.66rem;font-weight:900;flex:none}
.kc-ptl .kc-dh .kc-pill{color:var(--ink)}
/* ---------- v9.0: fixed start time + Editar trabajo ---------- */
.kc-jb.fx{box-shadow:inset 0 3px 0 rgba(255,255,255,.85)}
.kc-jb .fxi{display:inline-flex;vertical-align:-2px;opacity:.95}
.kc-jb .fxi svg{width:12px;height:12px}
.kc-dtip{position:fixed;z-index:2001;pointer-events:none;transform:translateX(-50%);white-space:nowrap;background:var(--ink);color:#fff;font-size:.8rem;font-weight:900;letter-spacing:.01em;border-radius:9px;padding:4px 9px;box-shadow:0 6px 16px rgba(17,19,23,.28)}
.kc-dtip.warn{background:#E0A100;color:#111317}
.kc-dtip[hidden]{display:none}
.kc-stw{display:flex;align-items:center;gap:10px;justify-content:center;flex-wrap:wrap}
.kc-stw .pill{margin:0}
.kc-st{display:inline-flex;align-items:center;gap:6px;border:1.5px solid var(--ln);border-radius:12px;padding:0 10px;height:44px;background:#fff;color:var(--mut)}
.kc-st.on{border-color:var(--ink);color:var(--ink)}
.kc-st svg{width:18px;height:18px}
.kc-st input{border:0;font:inherit;font-size:1.05rem;font-weight:900;color:var(--ink);background:transparent;outline:0;min-width:96px}
.kc-sthint{display:block;text-align:center;margin-top:6px}
.sec.kc-edit{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:10px}
.sec.kc-edit svg{width:18px;height:18px}
.ed .ed-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.ed .ed-row input[type=date],.ed .ed-row input[type=time]{flex:1;min-width:140px}
.ed .ed-row input:disabled{opacity:.45}
.ed .ed-row .pill{margin:0}
.ed .ed-st{margin:0;max-width:none}
.ed .ed-warn{color:#9A6B00;font-weight:800}
.ed .kc-auto{display:block;margin-top:6px;color:var(--mut)}
.ed .f label.kc-dur{display:inline-flex;text-transform:none;letter-spacing:0;margin:0;font-size:inherit}
/* v9.1 admin storage meter */
.stor.busy{opacity:.55}
.st-card{background:var(--card);border-radius:16px;padding:14px 14px 12px}
.st-top{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:8px}
.st-top b{font-size:1.05rem}
.st-free{color:#1F8A4C;font-weight:800;font-size:.88rem}
.st-bar{display:flex;height:14px;border-radius:999px;background:#E4E7EB;overflow:hidden}
.st-bar i{display:block;height:100%}
.st-bar .c,.st-leg .c{background:var(--r)}
.st-bar .w,.st-leg .w{background:#111317}
.st-bar .o,.st-leg .o{background:#9AA0A8}
.st-leg{display:flex;flex-wrap:wrap;gap:6px 12px;margin:8px 0 4px;font-size:.75rem;color:var(--mut);font-weight:700}
.st-leg i{display:inline-block;width:9px;height:9px;border-radius:3px;margin-right:5px;vertical-align:0}
.st-leg .f{background:#E4E7EB}
.st-lines{margin:6px 0 8px}
.st-lines li.sub{padding-top:0;color:var(--mut);font-size:.82rem;border-top:0}
.st-more{display:flex;align-items:center;gap:8px;background:#fff;border-radius:12px;padding:10px 12px;font-weight:800}
.st-more svg{width:20px;height:20px;color:var(--r);flex:0 0 auto}
.st-card small.muted{display:block;margin-top:8px}
.st-plan{display:flex;align-items:center;gap:8px;margin-top:10px;flex-wrap:wrap}
.st-plan label{font-weight:800;font-size:.85rem}
.st-plan input{width:84px;height:40px;border:1.5px solid var(--ln);border-radius:10px;padding:0 10px;font:inherit;font-weight:800}
.st-plan .pill{margin:0}
.st-leg span{white-space:nowrap;display:inline-flex;align-items:center}

/* v9.3: the resize grip is only the bottom 8px of a tall card; short cards keep a readable minimum */
.kc-rsz,.kc-ptl .kc-rsz{height:8px}
.kc-rsz:after,.kc-ptl .kc-rsz:after{bottom:2px;height:3px}
.kc-jb[data-short] .n,.kc-jb[data-short] .t{display:none}
.kc-ax i.f{transform:translateY(0)}

/* v9.3: delete a photo / video before finishing */
.gal .ph,.gal .vtile{position:relative}
.mdel{position:absolute;top:4px;right:4px;width:28px;height:28px;border-radius:50%;border:0;background:rgba(17,19,23,.72);color:#fff;font-size:18px;line-height:28px;text-align:center;padding:0;z-index:3;cursor:pointer}
.go.wait{opacity:.55}

/* 9.4: real use (server demo off) */
html.live{--ban:0px}
html.live .demo-banner{display:none}
/* v9.5: one Calendario tab — switcher Hoy / Semana / Mes, Mes grid, Semana list on iPhone */
.kc-vwrow{margin-top:-2px}
.kc-vwrow .kc-vw{flex:1;height:46px}
.kc-vw button{flex:1;font-size:.95rem}
.kc-cal.wide .kc-vw,.kc-tb .kc-vw{flex:none}
.kc-tb .kc-vw button{flex:none}
.kc-pnew.sm{flex:none;height:48px;padding:0 14px;font-size:.95rem}
span.kc-pt{cursor:default;font-size:1.3rem;white-space:nowrap}
.kc-mbig{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:0 0 10px}
.kc-mbig i{font-style:normal;font-size:.7rem;font-weight:800;color:var(--mut);text-align:center;padding:2px 0 4px;text-transform:uppercase;letter-spacing:.04em}
.kc-mbig button{position:relative;min-height:62px;border:1.5px solid var(--ln);border-radius:12px;background:#fff;font:inherit;color:var(--fg);cursor:pointer;padding:5px 4px;display:flex;flex-direction:column;align-items:center;gap:2px}
.kc-mbig button .dn{font-weight:800;font-size:.95rem}
.kc-mbig button b{font-size:.74rem;font-weight:900;color:#fff;background:var(--ink);border-radius:999px;padding:1px 7px;line-height:1.35}
.kc-mbig button .dd{display:flex;gap:2px}.kc-mbig button .dd em{width:6px;height:6px;border-radius:50%}
.kc-mbig button.o{opacity:.4}
.kc-mbig button.t{border-color:var(--r)}.kc-mbig button.t .dn{color:var(--r)}
.kc-mbig button.has{background:#FAFAFB}
.kc-month.wide .kc-mbig button{min-height:96px}
.kc-wlist .day-h{width:100%;border:0;background:none;font:inherit;cursor:pointer;text-align:left}
.kc-wlist .wdot{display:inline-block;width:8px;height:8px;border-radius:50%;margin:0 4px 0 0;vertical-align:baseline}
.adm-est .sec{font-weight:800}
.top .top-edit{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;border-radius:10px;border:1.5px solid var(--ln);background:#fff;color:var(--ink);font-weight:800;font-size:.85rem;text-decoration:none;white-space:nowrap}
.top .top-edit svg{width:16px;height:16px}
/* v9.7 Admin › Equipo */
.tm-list{display:flex;flex-direction:column;gap:8px;margin-bottom:6px}
.tm-row{display:flex;align-items:center;gap:12px;background:var(--card);border-radius:16px;padding:12px 14px;min-height:60px;color:inherit;text-decoration:none}
.tm-row .tx{flex:1;min-width:0}.tm-row .tx b{display:block}.tm-row .tx small{color:var(--mut)}.tm-row.off{opacity:.6}
.tm-groups{display:flex;flex-direction:column;gap:8px}
.tm-g{display:flex;align-items:center;gap:8px;background:var(--card);border-radius:14px;padding:10px 12px}.tm-g .tx{flex:1;min-width:0}.tm-g .tx b{display:block}.tm-g small{color:var(--mut)}
.tm-gadd{display:flex;gap:8px;margin-top:4px}.tm-gadd input{flex:1;min-width:0;border:1.5px solid var(--ln2);border-radius:12px;padding:10px 12px;font:inherit;background:#fff}
.tm-colors{display:flex;flex-wrap:wrap;gap:10px}.tm-c{width:38px;height:38px;border-radius:50%;border:3px solid #fff;box-shadow:0 0 0 1.5px var(--ln2)}.tm-c.on{box-shadow:0 0 0 3px #111317}
/* v9.7 Borrar cliente */
.es-btn.danger{color:#b42318;border-color:#f3c3be}
.cl-arow{display:flex;gap:8px;align-items:stretch}.cl-arow>.es-row{flex:1;min-width:0}.cl-arow>.cl-del{flex:none;align-self:center;color:#b42318}
/* v9.7 dictation = iPhone keyboard; 'Nota de voz' is a separate audio button */
.dict-hint{margin:8px 0 0;padding:10px 12px;border-radius:12px;background:#FFF7E6;border:1px solid #F5D9A8;color:#7a4b00;font-weight:700;font-size:.92rem}
.vn-btn{display:inline-flex;align-items:center;gap:6px;background:#fff;color:var(--ink,#18181B);border:1.5px solid #E4E4E7;border-radius:999px;padding:8px 12px;font-weight:700;font-size:.85rem;min-height:44px;flex:none;margin-left:auto;margin-right:8px}
.vn-btn svg{width:16px;height:16px}
.lrow{flex-wrap:wrap;row-gap:8px}.lrow label{flex:1 1 auto;min-width:0}.lrow .vn-btn{margin-left:auto;margin-right:0}.lrow .dictar{margin-left:8px}
/* v9.7.1 Hoy empty state: branded van in a soft circle */
.empty .van-empty{width:200px;height:200px;margin:0 auto 14px;border-radius:50%;background:radial-gradient(circle at 50% 42%,#fff 0,#F1F1F3 72%);display:flex;align-items:center;justify-content:center;box-shadow:inset 0 0 0 1px #ECECEF}
.empty .van-empty svg.van{width:164px;height:auto;filter:drop-shadow(0 6px 8px rgba(0,0,0,.12))}

/* ================= v9.7.5 big-screen view (Tesla browser / wide landscape). Only under html.big — phones never get this class. */
html.big{--sbw:clamp(210px,15vw,264px);--sidew:clamp(320px,24vw,420px);font-size:17px}
html.big *,html.big *:before,html.big *:after{animation:none!important;transition:none!important}  /* light on the car's CPU */
html.big .tabbar,html.big .apphead{-webkit-backdrop-filter:none;backdrop-filter:none}
/* sidebar instead of bottom tabs */
html.big .tabbar{top:0;bottom:0;right:auto;width:var(--sbw);flex-direction:column;justify-content:flex-start;gap:6px;background:var(--ink);border:0;padding:18px 12px;overflow-y:auto}
html.big .tabbar a,html.big .tabbar.five a{flex:none;height:64px;flex-direction:row;justify-content:flex-start;gap:16px;padding:0 18px;border-radius:16px;font-size:1rem;letter-spacing:.04em;color:#C9CACF}
html.big .tabbar a svg,html.big .tabbar.five a svg{width:28px;height:28px}
html.big .tabbar a.on{background:var(--r);color:#fff}
html.big .tabbar a.on:before{display:none}
html.big .tabbar .tbadge{position:static;margin-left:auto}
html.big .sb-brand{display:flex;align-items:center;gap:12px;padding:4px 10px 18px;margin-bottom:6px;border-bottom:1px solid #2A2D33}
html.big .sb-brand img{width:44px;height:44px}
html.big .sb-brand b{display:block;color:#fff;font-family:var(--fh);font-size:1.25rem;font-weight:900;letter-spacing:.02em;line-height:1}
html.big .sb-brand small{display:block;color:#E57373;font-size:.72rem;font-weight:800;letter-spacing:.24em;text-transform:uppercase;margin-top:3px}
html.big .sb-fs{margin-top:auto;display:flex;align-items:center;gap:14px;height:60px;padding:0 18px;border-radius:16px;background:#1E2126;color:#fff;font-weight:800;font-size:.95rem;border:0;text-align:left}
/* main content: full width next to the sidebar */
html.big .app,html.big body.est-wide .app,html.big .app.no-tabs{max-width:none;margin:0 0 0 var(--sbw);padding:calc(var(--ban) + 8px) 40px 48px 40px}
html.big .apphead{margin:0 -40px 12px;padding:12px 40px}
html.big .applogo{height:34px}
html.big .demo-banner{left:var(--sbw)}
html.big .ctabar{left:var(--sbw);padding-left:40px;padding-right:40px}
html.big .ctabar .go{max-width:640px}
html.big body.has-cta .app{padding-bottom:140px}
html.big .toast{left:calc(50% + var(--sbw) / 2);bottom:28px}
html.big body.has-cta .toast{bottom:120px}
/* big touch targets (>= 56px) */
html.big .go{min-height:64px;font-size:1.2rem}
html.big .back{min-height:56px;padding:12px 22px;font-size:1rem}
html.big .seg{min-height:56px;font-size:1rem}
html.big .list-btn,html.big .opt{min-height:64px}
html.big .pill,html.big .kc-seg button,html.big .es-btn,html.big .es-chip{min-height:56px}
html.big .mode{max-width:none}
/* Hoy: wide cards in a grid */
html.big [data-view=today] .in{max-width:none}
html.big [data-view=today] .stats{max-width:900px}
html.big [data-view=today] .stag{display:grid;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));gap:18px}
html.big [data-view=today] .stag .job{margin:0;padding:22px 24px;min-height:150px}
html.big .job b.cl{font-size:1.45rem}
html.big [data-view=today] .startday{max-width:900px}
html.big [data-view=today] .empty{max-width:700px;margin:40px auto}
/* other phone screens: readable width, centered in the content area */
html.big [data-view=profile] .in,html.big [data-view=admin] .in,html.big [data-view=week] .in,html.big [data-view=newjob],html.big [data-view=job] .in{max-width:900px}
html.big .in{max-width:1100px}
html.big .kc-cal .in,html.big .in.kc-cal{max-width:none}
/* job detail: day list on the left, job on the right */
.bigside{display:none}
html.big.split .bigside{display:block;position:fixed;top:0;bottom:0;left:var(--sbw);width:var(--sidew);overflow-y:auto;background:#F6F6F7;border-right:1px solid #E4E4E7;padding:calc(var(--ban) + 22px) 16px 24px;z-index:10}
html.big.split .app{margin-left:calc(var(--sbw) + var(--sidew));padding-left:32px;padding-right:32px}
html.big.split .apphead{margin-left:-32px;margin-right:-32px;padding-left:32px;padding-right:32px}
html.big.split .ctabar{left:calc(var(--sbw) + var(--sidew))}
html.big.split .toast{left:calc(50% + (var(--sbw) + var(--sidew)) / 2)}
.bs-job{display:block;background:#fff;border:2px solid transparent;border-radius:16px;padding:14px 16px;margin-top:10px;min-height:76px;color:var(--ink)}
.bs-job .when{font-weight:800;font-variant-numeric:tabular-nums;font-size:.95rem}
.bs-job b{display:block;font-family:var(--fh);font-size:1.15rem;font-weight:800;margin-top:4px;line-height:1.2}
.bs-job small{display:block;color:var(--mut);font-size:.88rem;margin-top:2px}
.bs-job .tag{margin-top:6px}
.bs-job.on{border-color:var(--r);background:var(--rbg)}
.bs-job.done{opacity:.6}
/* sheets centered on the content area */
html.big .sheet{align-items:center;padding-left:var(--sbw)}
html.big .sheet-c{border-radius:24px;max-width:620px}
html.big .es-sheet{padding-left:var(--sbw)}
html.big .fs-row{margin-top:10px}
html.big{font-size:clamp(17px,1.05vw,20px)}
html.big .tabbar a svg{flex:none}
html.big .job .tag.who{display:inline-flex;width:auto;max-width:100%}
html.big{--sbw:clamp(228px,15vw,264px)}
html.big .tabbar a,html.big .tabbar.five a{padding:0 14px;gap:12px;font-size:.92rem;letter-spacing:.03em}
html.big .tabbar a span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html.big .tabbar .tbadge{flex:none}

/* v9.8.1 burst bar */
.burst{position:relative;display:flex;align-items:center;gap:8px;margin:12px 0 0;padding:10px;background:#fff;border:1.5px solid var(--ln);border-radius:18px;box-shadow:0 6px 20px rgba(0,0,0,.08)}
.burst .bl{flex:1;min-width:0;display:flex;flex-direction:column;font-size:.85rem}.burst .bl small{color:#6b7280}
.burst .pbtn{margin:0;padding:10px 12px}.burst .bcam{background:var(--ink);color:#fff;border-color:var(--ink)}
.burst.pop{animation:pcPop .3s ease both}
/* v9.9.2 Contratista */
.opt.gc .ico{background:#1E3A8A;border-color:#1E3A8A;color:#fff}.opt.gc.on{border-color:#1E3A8A;background:#EFF6FF}.opt.gc.on .dot{border-color:#1E3A8A;background:#1E3A8A}
/* v9.9.3 admin view-only job + full-screen swipe gallery */
.ro-tag{margin-left:auto;font-size:12px;font-weight:700;color:#5b6472;background:#eef1f5;border-radius:999px;padding:5px 10px;white-space:nowrap}
.ro-note{background:#f4f6f9;border:1px solid #e3e7ee;border-radius:12px;padding:10px 12px;font-size:14px;color:#4a5361;margin:0 0 12px}
.ro-tl{list-style:none;margin:0 0 8px;padding:4px 0 0 4px}
.ro-tl li{position:relative;display:flex;align-items:center;gap:10px;padding:9px 0 9px 22px;border-left:2px solid #e3e7ee;margin-left:6px;font-size:15px}
.ro-tl li i{position:absolute;left:-8px;width:14px;height:14px;border-radius:50%;background:#fff;border:2px solid #c9cfd8}
.ro-tl li.ok i{background:#1f9d55;border-color:#1f9d55}.ro-tl li.now i{background:#f5a623;border-color:#f5a623}
.ro-tl li span{flex:1;color:#3a4250}.ro-tl li b{font-variant-numeric:tabular-nums;color:#111}.ro-tl li:not(.ok) b{color:#9aa3af;font-weight:500}
.gal.ro{grid-template-columns:repeat(3,1fr)}
.gal.ro .ph,.gal.ro .vtile{border:0;padding:0;cursor:zoom-in;aspect-ratio:1;overflow:hidden;border-radius:10px;background:#e9edf2;position:relative}
.gal.ro .ph img,.gal.ro .vtile img{width:100%;height:100%;object-fit:cover;display:block}
.ro-acts{display:flex;flex-direction:column;gap:8px;margin-bottom:24px}
.ro-acts .list-btn{display:flex;align-items:center;gap:10px;text-align:left}.ro-acts .list-btn svg{width:20px;height:20px;flex:none}
.ro-tx{flex:1;display:flex;flex-direction:column}.ro-tx small{font-size:12.5px;font-weight:500;opacity:.7}
body.lbx-on{overflow:hidden}
.lbx{position:fixed;inset:0;z-index:9999;background:#000;display:flex;flex-direction:column}
.lbx-top{display:flex;align-items:center;justify-content:space-between;padding:calc(env(safe-area-inset-top) + 10px) 16px 10px;color:#fff}
.lbx-x{background:rgba(255,255,255,.16);color:#fff;border:0;border-radius:50%;width:40px;height:40px;font-size:18px}
.lbx-track{flex:1;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.lbx-track::-webkit-scrollbar{display:none}
.lbx-s{flex:0 0 100%;scroll-snap-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;position:relative}
.lbx-s img,.lbx-s video{max-width:100%;max-height:calc(100% - 40px);object-fit:contain}
.lbx-s small{color:#cfd5dd;font-size:13px;padding:8px 0 calc(env(safe-area-inset-bottom) + 8px)}
.soft-hint{margin:14px 0 4px;padding:10px 12px;border-radius:12px;background:#FFF8E1;color:#6D4C00;font-size:14px}
.kc-multi{font-size:10px;font-weight:800;opacity:.9;margin-left:2px}.ed-techs .pill .wdot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:4px;vertical-align:middle}
