/*
 * Red COMAL · Sistema de trazabilidad — estilos base
 * Tokens de diseño en :root (colores, tipografía). Componentes agrupados por bloque.
 * Tipografía: Poppins (UI) · IBM Plex Mono (datos técnicos: códigos, coordenadas).
 */

:root{
  --paper:#F4F5F2; --surface:#FFFFFF; --field:#EFF1ED;
  --ink:#1A1C19; --ink2:#65685F; --ink3:#9A9D93;
  --line:#EAECE6; --line2:#DDE0D8;
  --forest:#16412A; --forest2:#1E5436;
  --green:#2E7D4F; --green-d:#1C5A38; --green-bg:#E4F0E8;
  --clay:#925C36; --clay-bg:#F2E8DC;
  --blue:#2B5BD7; --blue-d:#1E45AB; --blue-bg:#E9EEFB; --blue-ring:rgba(43,91,215,.16);
  --amber:#9A6A12; --amber-bg:#F8EFD6;
  --red:#BE4135; --red-bg:#FAE6E2;
  --elev:0 1px 2px rgba(26,28,25,.05), 0 0 0 1px rgba(26,28,25,.045);
  --elev2:0 8px 26px rgba(26,28,25,.12), 0 0 0 1px rgba(26,28,25,.05);
  --sans:"Poppins",-apple-system,system-ui,Segoe UI,Roboto,sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{background:#D7DAD3;font-family:var(--sans);color:var(--ink);line-height:1.5;font-size:14px;
  display:flex;align-items:center;justify-content:center;padding:20px;-webkit-font-smoothing:antialiased}
:focus-visible{outline:2px solid var(--blue);outline-offset:2px;border-radius:6px}
.phone{position:relative;width:412px;height:min(888px,94vh);background:var(--paper);
  border-radius:34px;box-shadow:0 24px 60px rgba(0,0,0,.30);overflow:hidden;
  display:flex;flex-direction:column;border:1px solid #cdd0c9}
@media(max-width:460px){.phone{width:100%;height:100dvh;border-radius:0;border:0}body{padding:0}}

/* ---------- header ---------- */
.top{flex-shrink:0;z-index:10}
.top.plain{background:var(--paper);padding:16px 18px 13px;border-bottom:1px solid var(--line)}
.top.branded{background:var(--forest);padding:16px 18px 18px}
.top__row{display:flex;align-items:center;gap:12px;min-height:40px}
.brand{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;flex-shrink:0;
  background:rgba(255,255,255,.13);color:#fff}
.brand svg{width:21px;height:21px}
.t-titles{flex:1;min-width:0}
.t-titles h1{font-size:20px;font-weight:600;letter-spacing:-.3px;margin:0;line-height:1.15}
.t-titles p{font-size:12.5px;margin:1px 0 0}
.top.plain .t-titles h1{color:var(--ink)} .top.plain .t-titles p{color:var(--ink2)}
.top.branded .t-titles h1{color:#fff} .top.branded .t-titles p{color:rgba(255,255,255,.72)}
.ghostbtn{background:0;border:0;color:var(--ink);width:34px;height:34px;border-radius:10px;
  display:grid;place-items:center;cursor:pointer;flex-shrink:0;margin-left:-6px}
.ghostbtn:active{background:var(--field)} .ghostbtn svg{width:22px;height:22px}
.uava{width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,.16);color:#fff;border:2px solid rgba(255,255,255,.45);
  display:grid;place-items:center;font-weight:600;font-size:13px;cursor:pointer;flex-shrink:0;position:relative}
.uava .ndot{position:absolute;top:-1px;right:-1px;width:11px;height:11px;border-radius:50%;background:#E0A21C;border:2px solid var(--forest)}
.search{display:flex;align-items:center;gap:11px;width:100%;background:#fff;border:0;border-radius:14px;padding:13px 15px;
  margin-top:15px;box-shadow:0 3px 12px rgba(0,0,0,.13);font-family:inherit;cursor:text;color:var(--ink3);font-size:14.5px}
.search svg{width:19px;height:19px;color:var(--ink2)}

/* ---------- screen + nav ---------- */
.screen{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:16px 16px 22px;-webkit-overflow-scrolling:touch}
.screen::-webkit-scrollbar{width:0}
.screen.enter{animation:enter .24s cubic-bezier(.2,.7,.2,1)}
@keyframes enter{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.nav{flex-shrink:0;background:var(--paper);display:flex;padding:8px 4px calc(8px + env(safe-area-inset-bottom))}
.nav button{flex:1;background:0;border:0;cursor:pointer;display:flex;flex-direction:column;align-items:center;
  gap:3px;color:var(--ink3);font-family:var(--sans);font-size:10.5px;font-weight:500}
.nav .icw{width:50px;height:30px;border-radius:999px;display:grid;place-items:center;transition:background .18s}
.nav button svg{width:21px;height:21px}
.nav button.act{color:var(--green-d)} .nav button.act .icw{background:var(--green-bg)}

/* ---------- primitives ---------- */
.h2{font-size:21px;font-weight:700;color:var(--green-d);letter-spacing:-.4px;margin:20px 2px 13px}
.eyebrow{font-size:11px;font-weight:600;letter-spacing:.8px;text-transform:uppercase;color:var(--ink3);margin:0 2px 9px}
.card{background:var(--surface);border-radius:18px;padding:16px;margin-bottom:12px;box-shadow:var(--elev)}
.row{display:flex;align-items:center;gap:12px} .grow{flex:1;min-width:0}
.nowrap{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.muted{color:var(--ink2)} .tiny{font-size:12.5px}
.mono{font-family:var(--mono);font-feature-settings:"tnum"}
.code{font-family:var(--mono);font-size:11.5px;color:var(--clay);background:var(--clay-bg);padding:2px 7px;border-radius:6px;font-weight:500;letter-spacing:-.3px;display:inline-block}
.tag{font-size:10.5px;font-weight:600;letter-spacing:.2px;color:var(--green-d);background:var(--green-bg);padding:3px 8px;border-radius:6px}
.status{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:500;white-space:nowrap}
.status .sd{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.s-ok{color:var(--green-d)} .s-ok .sd{background:var(--green)}
.s-warn{color:var(--amber)} .s-warn .sd{background:#E0A21C}
.s-err{color:var(--red)} .s-err .sd{background:var(--red)}
.s-eq{color:var(--ink2)} .s-eq .sd{background:var(--ink3)}
.avatar{width:42px;height:42px;border-radius:13px;background:var(--green-bg);color:var(--green-d);display:grid;place-items:center;flex-shrink:0;font-weight:600;font-size:14px}
.avatar svg{width:20px;height:20px} .avatar.clay{background:var(--clay-bg);color:var(--clay)}
.tile{display:flex;align-items:center;gap:13px;background:var(--surface);border-radius:16px;padding:13px 14px;margin-bottom:9px;cursor:pointer;width:100%;text-align:left;font-family:inherit;color:inherit;box-shadow:var(--elev);transition:transform .12s}
.tile:active{transform:scale(.992)}
.chev{color:var(--ink3);flex-shrink:0;display:grid;place-items:center} .chev svg{width:19px;height:19px}
.kv{display:flex;justify-content:space-between;gap:14px;padding:10px 0;border-bottom:1px solid var(--line)}
.kv:first-child{padding-top:2px} .kv:last-child{border-bottom:0;padding-bottom:2px}
.kv .k{color:var(--ink2);font-size:13px} .kv .v{font-weight:500;text-align:right;font-size:13.5px}
.section-title{margin:20px 2px 11px} .section-title h3{font-size:11px;font-weight:600;letter-spacing:.8px;text-transform:uppercase;color:var(--ink3);margin:0}

/* hero carousel */
.hero{display:flex;gap:12px;overflow-x:auto;scroll-snap-type:x mandatory;margin:4px -16px 0;padding:0 16px 6px;-webkit-overflow-scrolling:touch}
.hero::-webkit-scrollbar{display:none}
.hcard{flex:0 0 84%;scroll-snap-align:start;border-radius:18px;padding:17px;min-height:150px;color:#fff;display:flex;flex-direction:column;justify-content:flex-end;position:relative;overflow:hidden;box-shadow:var(--elev);cursor:pointer;border:0;font-family:inherit;text-align:left}
.hcard .hi{position:absolute;top:15px;right:15px;opacity:.9} .hcard .hi svg{width:28px;height:28px}
.hcard .et{font-size:10.5px;font-weight:600;letter-spacing:.7px;text-transform:uppercase;opacity:.9}
.hcard h3{font-size:18px;font-weight:700;margin:6px 0 4px;letter-spacing:-.3px}
.hcard p{font-size:12.5px;opacity:.92;margin:0;line-height:1.35}

/* rubros / catálogo grid */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:4px}
.crop{border-radius:16px;overflow:hidden;box-shadow:var(--elev);cursor:pointer;background:var(--surface);text-align:left;border:0;padding:0;font-family:inherit;color:inherit;transition:transform .12s}
.crop:active{transform:scale(.985)}
.crop .cim{height:100px;position:relative;display:grid;place-items:center;overflow:hidden}
.crop .cph{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;border:0}
.crop .cim svg{width:auto;height:76px;filter:drop-shadow(0 2px 3px rgba(0,0,0,.14))}
.crop .clb{padding:11px 13px} .crop .clb b{font-size:14.5px;font-weight:600;display:block} .crop .clb span{font-size:11.5px;color:var(--ink2)}

/* settings list */
.slist{background:var(--surface);border-radius:18px;box-shadow:var(--elev);overflow:hidden;margin-bottom:12px}
.srow{display:flex;align-items:center;gap:13px;padding:14px 16px;border-bottom:1px solid var(--line);width:100%;background:0;border:0;text-align:left;cursor:pointer;color:inherit;font-family:inherit}
.srow:last-child{border-bottom:0}
.srow .si{width:34px;height:34px;border-radius:10px;background:var(--green-bg);color:var(--green-d);display:grid;place-items:center;flex-shrink:0}
.srow .si svg{width:18px;height:18px}
.srow .grow .t{font-weight:500;font-size:14.5px;display:block} .srow .grow .s{font-size:12.5px;color:var(--ink2);display:block;margin-top:1px}
.srow .val{font-size:13px;color:var(--ink2);white-space:nowrap}
.sw{width:44px;height:26px;border-radius:999px;background:var(--line2);position:relative;transition:.2s;flex-shrink:0}
.sw.on{background:var(--green)}
.sw::after{content:"";position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:.2s;box-shadow:0 1px 2px rgba(0,0,0,.25)}
.sw.on::after{left:21px}

/* buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;font-family:var(--sans);font-weight:600;font-size:14.5px;border-radius:13px;padding:14px 16px;width:100%;transition:transform .12s,filter .15s}
.btn:active{transform:scale(.99)} .btn svg{width:17px;height:17px}
.btn-azul{background:var(--blue);color:#fff;box-shadow:0 2px 8px rgba(43,91,215,.26)} .btn-azul:active{filter:brightness(.96)}
.btn-verde{background:var(--green);color:#fff;box-shadow:0 2px 8px rgba(46,125,79,.26)}
.btn-ghost{background:var(--surface);color:var(--blue);box-shadow:var(--elev)}
.btn-row{display:flex;gap:10px} .btn-row .btn{font-size:14px;padding:13px 10px}

/* timeline */
.timeline{position:relative;margin-left:6px;padding-left:20px}
.timeline::before{content:"";position:absolute;left:0;top:6px;bottom:10px;width:2px;background:var(--line2);border-radius:2px}
.tl{position:relative;margin-bottom:10px}
.tl::before{content:"";position:absolute;left:-24px;top:6px;width:11px;height:11px;border-radius:50%;background:var(--surface);box-shadow:0 0 0 2px var(--green)}

/* ---------- motor ---------- */
.fhead{background:var(--surface);border-radius:18px;padding:15px 16px;margin-bottom:8px;box-shadow:var(--elev)}
.fhead .row{justify-content:space-between;align-items:flex-start}
.fsec{margin-top:18px} .fsec__h{display:flex;align-items:center;gap:8px;margin:0 4px 9px} .fsec__h .eyebrow{margin:0}
.fsec__h .rubro{font-size:10px;font-weight:600;letter-spacing:.3px;text-transform:uppercase;color:var(--blue-d);background:var(--blue-bg);padding:2px 7px;border-radius:5px}
.fcard{background:var(--surface);border-radius:18px;box-shadow:var(--elev);overflow:hidden}
.fld{padding:14px 16px;border-bottom:1px solid var(--line)} .fld:last-child{border-bottom:0}
.lbl{font-size:14px;font-weight:500;margin-bottom:10px;display:flex;align-items:center;gap:6px} .req{color:var(--red);font-weight:700}
.inp{width:100%;font-family:var(--sans);font-size:15px;color:var(--ink);background:var(--field);border:1.5px solid transparent;border-radius:11px;padding:11px 12px;outline:none;transition:.15s}
.inp:focus{background:var(--surface);border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-ring)} .inp.mono{font-family:var(--mono)}
select.inp{appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='20' fill='none' stroke='%2365685F' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='M6 8l4 4 4-4'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 11px center;padding-right:34px}
.inrow{display:flex;align-items:center;gap:10px} .unit{font-size:13px;color:var(--ink3);font-family:var(--mono);flex-shrink:0}
.seg{display:flex;flex-wrap:wrap;gap:8px}
.opt{font-size:13.5px;font-weight:500;border:1.5px solid var(--line2);background:var(--surface);color:var(--ink);padding:9px 13px;border-radius:11px;cursor:pointer;font-family:inherit;transition:.13s}
.opt:active{transform:scale(.97)} .opt.sel{background:var(--green);border-color:var(--green);color:#fff} .opt.sel.multi{background:var(--blue);border-color:var(--blue)}
.fld--ref{display:flex;align-items:center;justify-content:space-between;gap:12px}
.fld--ref .lbl{margin:0;color:var(--ink2);font-weight:500;font-size:13px} .fld--ref .lbl svg{width:13px;height:13px;color:var(--ink3)}
.refval{font-family:var(--mono);font-size:13.5px;font-weight:500;text-align:right;color:var(--ink)}
.fld--calc{background:#FBFBF8} .calcrow{display:flex;align-items:baseline;justify-content:space-between;gap:12px}
.calcval{font-family:var(--mono);font-size:19px;font-weight:500;color:var(--blue-d);letter-spacing:-.5px} .calcform{font-size:11.5px;color:var(--ink3);margin-top:3px}
.capture{display:flex;align-items:center;gap:10px;border:1.5px dashed var(--line2);border-radius:11px;padding:12px;background:var(--field);cursor:pointer;color:var(--ink2);font-size:14px;font-weight:500;width:100%;font-family:inherit}
.capture svg{width:18px;height:18px;color:var(--blue)}
.thumbs{display:flex;gap:7px;margin-top:9px} .thumb{width:48px;height:48px;border-radius:10px;background:var(--green-bg);display:grid;place-items:center;color:var(--green-d)} .thumb svg{width:19px;height:19px}
.ffoot{position:sticky;bottom:0;background:linear-gradient(transparent,var(--paper) 32%);padding:16px 0 4px;margin-top:10px}
.note{font-size:12px;color:var(--ink3);text-align:center;margin-top:9px}

/* toast + misc */
.toast{position:absolute;left:16px;right:16px;bottom:calc(78px + env(safe-area-inset-bottom));background:var(--ink);color:#fff;border-radius:14px;padding:13px 15px;font-size:13.5px;display:flex;gap:11px;align-items:center;box-shadow:var(--elev2);opacity:0;visibility:hidden;transform:translateY(16px);transition:transform .28s cubic-bezier(.2,.8,.2,1),opacity .22s ease,visibility .28s;z-index:40}
.toast.show{opacity:1;visibility:visible;transform:translateY(0)} .toast svg{width:18px;height:18px;flex-shrink:0;color:#86D194} .toast.err svg{color:#F0A79D}
.spin{display:inline-flex;animation:sp 1s linear infinite} @keyframes sp{to{transform:rotate(360deg)}}
.banner{display:flex;gap:12px;align-items:center;border-radius:16px;padding:13px 14px;margin-bottom:14px}
.banner.warn{background:var(--amber-bg)} .banner.ok{background:var(--green-bg)}
.banner .ic{width:36px;height:36px;border-radius:11px;background:rgba(255,255,255,.7);display:grid;place-items:center;flex-shrink:0}
.banner.warn .ic{color:var(--amber)} .banner.ok .ic{color:var(--green-d)} .banner .ic svg{width:18px;height:18px}
.empty{text-align:center;color:var(--ink3);padding:46px 20px;font-size:14px} .empty svg{width:30px;height:30px;color:var(--green);margin-bottom:8px}
@media (prefers-reduced-motion: reduce){*{animation:none!important;transition:none!important}}

/* ============================================================
   LOGIN — pantalla de inicio de sesión (maqueta visual)
   Capa que cubre el marco completo. Se oculta con .login--out
   ============================================================ */
.login{position:absolute;inset:0;z-index:60;background:var(--forest);
  display:flex;flex-direction:column;padding:26px 24px calc(24px + env(safe-area-inset-bottom));
  overflow-y:auto;transition:opacity .32s ease,transform .32s cubic-bezier(.2,.8,.2,1)}
.login--out{opacity:0;transform:translateY(-10px);pointer-events:none}
.login--hidden{display:none}
.lg-err{color:var(--red);font-size:12.5px;font-weight:500;margin:-2px 0 12px}
.lg-top{flex:1;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;padding:18px 0 22px}
.lg-mark{width:74px;height:74px;border-radius:22px;background:rgba(255,255,255,.13);
  display:grid;place-items:center;color:#fff;margin-bottom:18px}
.lg-mark svg{width:38px;height:38px}
.lg-brand{font-size:27px;font-weight:700;color:#fff;letter-spacing:-.4px;margin:0}
.lg-sub{font-size:13.5px;color:rgba(255,255,255,.72);margin:5px 0 0}
.lg-card{background:var(--surface);border-radius:22px;padding:22px 20px 20px;box-shadow:0 12px 34px rgba(0,0,0,.22)}
.lg-card h2{font-size:18px;font-weight:600;margin:0 0 3px;letter-spacing:-.2px}
.lg-card p.lead{font-size:13px;color:var(--ink2);margin:0 0 18px}
.lg-field{margin-bottom:13px}
.lg-lbl{font-size:12.5px;font-weight:500;color:var(--ink2);margin-bottom:7px;display:block}
.lg-inp{position:relative;display:flex;align-items:center}
.lg-inp svg{position:absolute;left:13px;width:17px;height:17px;color:var(--ink3);pointer-events:none}
.lg-inp input{width:100%;font-family:var(--sans);font-size:15px;color:var(--ink);background:var(--field);
  border:1.5px solid transparent;border-radius:12px;padding:13px 13px 13px 40px;outline:none;transition:.15s}
.lg-inp input::placeholder{color:var(--ink3)}
.lg-inp input:focus{background:var(--surface);border-color:var(--blue);box-shadow:0 0 0 3px var(--blue-ring)}
.lg-inp .eye{position:absolute;right:6px;left:auto;width:34px;height:34px;border:0;background:0;cursor:pointer;
  display:grid;place-items:center;color:var(--ink3);border-radius:9px;pointer-events:auto}
.lg-inp .eye svg{position:static;width:17px;height:17px}
.lg-row{display:flex;align-items:center;justify-content:space-between;margin:4px 0 18px}
.lg-check{display:flex;align-items:center;gap:8px;cursor:pointer;font-size:13px;color:var(--ink2);
  background:0;border:0;font-family:inherit;padding:0}
.lg-box{width:19px;height:19px;border-radius:6px;border:1.5px solid var(--line2);background:var(--surface);
  display:grid;place-items:center;color:transparent;flex-shrink:0;transition:.15s}
.lg-box svg{width:12px;height:12px}
.lg-check.on .lg-box{background:var(--green);border-color:var(--green);color:#fff}
.lg-link{font-size:13px;font-weight:500;color:var(--blue);background:0;border:0;cursor:pointer;font-family:inherit;padding:0}
.lg-foot{text-align:center;padding:18px 0 4px}
.lg-foot p{font-size:12px;color:rgba(255,255,255,.62);margin:0}
.lg-badge{display:inline-flex;align-items:center;gap:6px;font-size:11.5px;font-weight:500;
  color:rgba(255,255,255,.82);background:rgba(255,255,255,.12);padding:6px 11px;border-radius:999px;margin-bottom:10px}
.lg-badge svg{width:13px;height:13px}
.lg-err{font-size:12.5px;color:var(--red);background:var(--red-bg);border-radius:9px;padding:9px 11px;
  margin-bottom:13px;display:none;align-items:center;gap:8px}
.lg-err.show{display:flex}
.lg-err svg{width:15px;height:15px;flex-shrink:0}

/* ---- login: simulación de descarga inicial ---- */
.lg-bar{height:8px;border-radius:999px;background:var(--field);overflow:hidden;margin:4px 0 16px}
.lg-bar__fill{height:100%;width:0%;background:var(--green);border-radius:999px;transition:width .45s ease}
.lg-step{display:flex;align-items:center;gap:10px;padding:7px 0;font-size:13.5px;color:var(--ink3)}
.lg-step .sic{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;flex-shrink:0}
.lg-step.run{color:var(--ink)} .lg-step.run .sic{color:var(--blue)}
.lg-step.done{color:var(--ink)} .lg-step.done .sic{background:var(--green-bg);color:var(--green-d)}
.lg-step .sic svg{width:13px;height:13px}

/* ---- campana de notificaciones (cabecera) ---- */
.bellbtn{width:42px;height:42px;border-radius:13px;background:rgba(255,255,255,.13);border:0;color:#fff;
  display:grid;place-items:center;cursor:pointer;flex-shrink:0;position:relative}
.bellbtn svg{width:20px;height:20px}
.bellbtn .ndot{position:absolute;top:7px;right:8px;width:9px;height:9px;border-radius:50%;background:#E0A21C;border:2px solid var(--forest)}

/* ---- ficha de trazabilidad: código QR ---- */
.qrbox{background:#fff;border:1px solid var(--line);border-radius:14px;padding:9px;display:grid;place-items:center;flex-shrink:0}
.qrbox svg{width:104px;height:104px;color:var(--ink);display:block}

/* ============================================================
   EXTRAS DE DEMO — splash de descarga, notificaciones, trazabilidad
   ============================================================ */

/* Campana de notificaciones */
.bell{position:relative;width:42px;height:42px;border-radius:50%;background:rgba(255,255,255,.16);color:#fff;border:0;display:grid;place-items:center;cursor:pointer;flex-shrink:0}
.bell svg{width:20px;height:20px}
.bell .bdg{position:absolute;top:-2px;right:-2px;min-width:18px;height:18px;border-radius:99px;background:#E0574A;color:#fff;font-size:10px;font-weight:700;display:grid;place-items:center;padding:0 4px;border:2px solid var(--forest)}

/* Hoja inferior de notificaciones */
.sheet{position:absolute;inset:0;z-index:65;display:flex;align-items:flex-end;background:rgba(20,22,18,.42);opacity:0;transition:opacity .28s}
.sheet.show{opacity:1}
.sheet--hidden{display:none}
.sheet__card{width:100%;background:var(--paper);border-radius:22px 22px 0 0;padding:8px 16px calc(20px + env(safe-area-inset-bottom));max-height:78%;overflow-y:auto;transform:translateY(100%);transition:transform .3s cubic-bezier(.2,.8,.2,1);box-shadow:0 -8px 30px rgba(0,0,0,.22)}
.sheet.show .sheet__card{transform:translateY(0)}
.sheet__grab{width:38px;height:4px;border-radius:99px;background:var(--line2);margin:8px auto 12px}
.sheet__h{display:flex;align-items:center;justify-content:space-between;margin:0 2px 12px}
.sheet__h b{font-size:17px;font-weight:600}
.sheet__h button{background:0;border:0;color:var(--blue);font-family:inherit;font-size:13px;font-weight:500;cursor:pointer}
.noti{display:flex;gap:12px;background:var(--surface);border-radius:14px;padding:13px;margin-bottom:9px;box-shadow:var(--elev);cursor:pointer;width:100%;text-align:left;font-family:inherit;color:inherit;border:0}
.noti .ni{width:40px;height:40px;border-radius:11px;display:grid;place-items:center;flex-shrink:0}
.noti .ni svg{width:19px;height:19px}
.noti .nt{font-weight:500;font-size:14px;display:block}
.noti .nx{font-size:12.5px;color:var(--ink2);margin-top:2px;display:block}
.noti .ntime{font-size:11px;color:var(--ink3);margin-top:4px;display:block}
.noti.unread{position:relative}
.noti.unread::after{content:"";position:absolute;top:13px;right:13px;width:8px;height:8px;border-radius:50%;background:var(--blue)}

/* Buscador funcional de productores */
.psearch{display:flex;align-items:center;gap:10px;background:var(--surface);border-radius:13px;padding:11px 14px;margin-bottom:14px;box-shadow:var(--elev)}
.psearch svg{width:18px;height:18px;color:var(--ink3);flex-shrink:0}
.psearch input{flex:1;border:0;outline:0;background:0;font-family:var(--sans);font-size:14.5px;color:var(--ink);min-width:0}

/* Ficha de trazabilidad + QR */
.trz{background:var(--surface);border-radius:20px;box-shadow:var(--elev);overflow:hidden;margin-bottom:14px}
.trz__top{background:var(--forest);color:#fff;padding:18px 18px 20px;text-align:center}
.trz__top .lbl{font-size:11px;letter-spacing:.6px;text-transform:uppercase;color:rgba(255,255,255,.72)}
.trz__code{font-family:var(--mono);font-size:20px;font-weight:500;letter-spacing:-.5px;margin-top:4px}
.qr{background:#fff;border-radius:16px;padding:12px;width:168px;margin:16px auto 4px;box-shadow:0 4px 14px rgba(0,0,0,.18)}
.qr img{display:block;width:100%;height:auto;image-rendering:pixelated}
.qr svg{width:56px;height:56px;margin:28px auto;display:block;color:var(--ink3)}
.trz__scan{font-size:12px;color:rgba(255,255,255,.78);margin-top:8px}
.trz__chain{padding:4px 16px 12px}
.trz-step{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.trz-step:last-child{border-bottom:0}
.trz-step .tn{width:30px;height:30px;border-radius:9px;background:var(--green-bg);color:var(--green-d);display:grid;place-items:center;flex-shrink:0}
.trz-step .tn svg{width:16px;height:16px}
.trz-k{font-size:11px;letter-spacing:.4px;text-transform:uppercase;color:var(--ink3)}
.trz-v{font-weight:500;font-size:14px;margin-top:1px}
.trz-x{font-size:12.5px;color:var(--ink2);margin-top:1px}
