/* ============================================================
   GUATAN — sistema de diseño · heritage artesanal 1951
   Fuentes self-hosted (sin CDN). Paleta marrón/crema/dorado.
   ============================================================ */

/* ---- Fuentes embebidas (variables) ---- */
@font-face{
  font-family:'Fraunces';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('/fonts/fraunces-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Fraunces';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('/fonts/fraunces-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}
@font-face{
  font-family:'Archivo';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('/fonts/archivo-latin.woff2') format('woff2');
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2074,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD;
}
@font-face{
  font-family:'Archivo';font-style:normal;font-weight:100 900;font-display:swap;
  src:url('/fonts/archivo-latin-ext.woff2') format('woff2');
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF;
}

:root{
  --ink:#21100C; --brown:#3A1410; --brown2:#4a1c14;
  --cream:#F3E7CD; --cream2:#FBF4E2; --paper:#F4E8CF;
  --gold:#C27E22; --gold-lt:#E0A94C; --white:#fff;
  --text:#3A1410; --muted:#7A5A3E; --line:#E4D4B2; --line2:#d8c39a;
  --ok:#5d6c1f; --ok-bg:rgba(122,139,46,.16);
  --mid:#B5732A; --mid-bg:rgba(181,115,42,.16);
  --low:#B3261E; --low-bg:rgba(179,38,30,.13);
  --cl:#9a6016; --cl-bg:rgba(122,90,62,.12);
  --shadow:0 18px 40px -30px rgba(58,20,16,.55);
  --radius:14px;
}

*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  font-family:'Archivo',system-ui,sans-serif;color:var(--text);line-height:1.45;
  -webkit-font-smoothing:antialiased;
  background:
    radial-gradient(120% 80% at 100% -10%,rgba(224,169,76,.10),transparent 60%),
    var(--cream);
  min-height:100vh;
}
/* grano de papel sutil */
body::before{
  content:"";position:fixed;inset:0;pointer-events:none;z-index:0;opacity:.5;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.035'/%3E%3C/svg%3E");
}
.serif{font-family:'Fraunces',Georgia,serif}
a{color:var(--gold);text-decoration:none}
.tnum{font-variant-numeric:tabular-nums}

/* ---------- Topbar ---------- */
.topbar{
  position:sticky;top:0;z-index:20;
  background:linear-gradient(180deg,var(--brown2),var(--brown));
  color:var(--cream);border-bottom:2px solid var(--gold);
  box-shadow:0 8px 30px -20px rgba(0,0,0,.7);
}
.topbar .inner{max-width:1200px;margin:0 auto;display:flex;align-items:center;gap:1.4rem;
  padding:.7rem clamp(1rem,3vw,2rem)}
.tb-brand{display:flex;align-items:center;gap:.7rem;font-family:'Fraunces';font-weight:600;
  font-size:1.5rem;color:var(--gold-lt);letter-spacing:.04em}
.tb-seal{width:34px;height:34px;border-radius:50%;border:1.5px solid var(--gold-lt);
  display:grid;place-items:center;font-family:'Fraunces';font-weight:700;font-size:.62rem;
  color:var(--gold-lt);flex:0 0 auto;position:relative}
.tb-seal::after{content:"";position:absolute;inset:4px;border-radius:50%;border:1px solid rgba(224,169,76,.4)}
.tb-nav{display:flex;gap:.3rem;margin-left:.6rem}
.tb-nav a{color:var(--cream);font-weight:600;font-size:.9rem;padding:.45rem .85rem;border-radius:8px;
  opacity:.82;transition:.15s}
.tb-nav a:hover{opacity:1;background:rgba(255,255,255,.07)}
.tb-nav a.active{opacity:1;background:rgba(224,169,76,.18);color:var(--gold-lt)}
.tb-right{margin-left:auto;display:flex;align-items:center;gap:1rem}
.tb-user{font-size:.82rem;opacity:.85;display:flex;align-items:center;gap:.5rem}
.role-badge{font-size:.66rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  background:var(--gold-lt);color:var(--ink);padding:.2rem .5rem;border-radius:5px}
.tb-logout{background:rgba(255,255,255,.08);border:1px solid rgba(224,169,76,.35);color:var(--cream);
  font-family:'Archivo';font-weight:600;font-size:.82rem;padding:.4rem .8rem;border-radius:8px;cursor:pointer}
.tb-logout:hover{background:rgba(255,255,255,.15)}

/* ---------- Layout ---------- */
.wrap{max-width:1200px;margin:0 auto;padding:clamp(1.4rem,3vw,2.6rem) clamp(1rem,3vw,2rem) 4rem;position:relative;z-index:1}
.page-head{margin-bottom:1.6rem}
.page-head h1{font-family:'Fraunces';font-weight:600;font-size:clamp(1.6rem,3vw,2.3rem);color:var(--brown);letter-spacing:.01em}
.page-head .sub{color:var(--muted);font-size:.95rem;margin-top:.3rem;max-width:60ch}
.warn-tag{display:inline-flex;align-items:center;gap:.5rem;margin-top:.9rem;font-size:.72rem;font-weight:700;
  letter-spacing:.1em;text-transform:uppercase;color:#fff;background:rgba(179,38,30,.85);
  padding:.4rem .8rem;border-radius:6px}

/* ---------- Tarjetas / paneles ---------- */
.panel{background:var(--cream2);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:1rem;margin-bottom:1.6rem}
.kpi{background:var(--cream2);border:1px solid var(--line);border-radius:var(--radius);padding:1.2rem 1.3rem}
.kpi .k{font-family:'Fraunces';font-weight:700;font-size:1.7rem;color:var(--gold)}
.kpi .l{font-size:.84rem;color:var(--muted);margin-top:.25rem;line-height:1.35}
.kpi.green{border-color:rgba(122,139,46,.4)}.kpi.green .k{color:var(--ok)}
.kpi.red{border-color:rgba(179,38,30,.35)}.kpi.red .k{color:var(--low)}

/* ---------- Controles globales (sliders) ---------- */
.controls{background:linear-gradient(180deg,var(--cream2),#f7efda);border:1px solid var(--line);
  border-radius:var(--radius);box-shadow:var(--shadow);padding:clamp(1.1rem,2.5vw,1.6rem);margin-bottom:1.7rem}
.controls h3{font-family:'Fraunces';font-weight:600;font-size:1.05rem;color:var(--brown);margin-bottom:.2rem}
.controls .hint{font-size:.82rem;color:var(--muted);margin-bottom:1.1rem}
.ctrl-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:1.3rem 1.8rem}
.field label{display:block;font-size:.74rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);margin-bottom:.5rem}
.field .row{display:flex;align-items:center;gap:.8rem}
.field output{font-family:'Fraunces';font-weight:700;font-size:1.25rem;color:var(--gold);min-width:3.4ch;text-align:right}
input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:6px;border-radius:6px;
  background:linear-gradient(90deg,var(--gold) var(--p,40%),var(--line2) var(--p,40%));outline:none}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:20px;height:20px;border-radius:50%;
  background:var(--brown);border:2px solid var(--gold-lt);cursor:pointer;box-shadow:0 2px 6px rgba(0,0,0,.3)}
input[type=range]::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--brown);
  border:2px solid var(--gold-lt);cursor:pointer}
.num-in{font-family:'Archivo';font-weight:600;font-size:.95rem;color:var(--brown);background:var(--white);
  border:1px solid var(--line2);border-radius:8px;padding:.45rem .6rem;width:100%;font-variant-numeric:tabular-nums}
.num-in:focus{outline:2px solid var(--gold-lt);outline-offset:-1px}

.actions{display:flex;flex-wrap:wrap;gap:.8rem;align-items:center;margin-top:1.3rem}
.btn{font-family:'Archivo';font-weight:600;font-size:.9rem;border:none;border-radius:9px;padding:.62rem 1.2rem;
  cursor:pointer;letter-spacing:.02em;transition:.15s;display:inline-flex;align-items:center;gap:.5rem}
.btn-gold{background:var(--gold-lt);color:var(--ink)}.btn-gold:hover{background:var(--gold)}
.btn-ghost{background:transparent;color:var(--brown);border:1px solid var(--line2)}.btn-ghost:hover{background:var(--cream)}
.btn:disabled{opacity:.5;cursor:default}
.saved-flag{font-size:.85rem;color:var(--ok);font-weight:600;opacity:0;transition:.3s}
.saved-flag.show{opacity:1}

/* ---------- Tablas ---------- */
.cat-block{margin-top:1.7rem}
.cat-h{display:flex;align-items:center;gap:.85rem;margin-bottom:.9rem}
.cat-h .s{width:36px;height:36px;border-radius:50%;background:var(--brown);color:var(--gold-lt);
  display:grid;place-items:center;font-family:'Fraunces';font-weight:700;font-size:1rem;flex:0 0 auto}
.cat-h h2{font-family:'Fraunces';font-weight:600;font-size:clamp(1.2rem,2.2vw,1.55rem);color:var(--brown)}
table{width:100%;border-collapse:collapse;background:var(--cream2);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
thead th{background:var(--brown);color:var(--cream);font-size:.68rem;font-weight:700;letter-spacing:.05em;
  text-transform:uppercase;padding:.8rem .8rem;text-align:right;white-space:nowrap}
thead th:first-child{text-align:left}
tbody td{padding:.7rem .8rem;text-align:right;border-bottom:1px solid var(--line);font-variant-numeric:tabular-nums;font-size:.93rem}
tbody td:first-child{text-align:left}
tbody tr:last-child td{border-bottom:none}
tbody tr:hover{background:#fff}
.pname{font-weight:600;color:var(--brown);font-size:.96rem}
.ppres{font-size:.76rem;color:var(--muted);margin-top:.1rem}
.costo{color:var(--muted)}
.comer{font-family:'Fraunces';font-weight:600;color:var(--gold);font-size:1.04rem}
.sug{color:var(--brown);font-weight:600}
.bulto{color:var(--muted)}
.na-txt{color:var(--muted);font-style:italic;font-size:.86rem;font-weight:500}

.pill{display:inline-block;min-width:44px;padding:.2rem .55rem;border-radius:20px;font-size:.82rem;font-weight:700}
.pill.ok{background:var(--ok-bg);color:var(--ok)}
.pill.mid{background:var(--mid-bg);color:var(--mid)}
.pill.low{background:var(--low-bg);color:var(--low)}
.pill.cl,.pill.consultar{background:var(--cl-bg);color:var(--muted);font-weight:600}
.pill.na{background:var(--cl-bg);color:var(--muted);font-weight:500}

/* override por producto (input chico en la tabla interna) */
.mk-cell{display:inline-flex;align-items:center;gap:.35rem;justify-content:flex-end}
.mk-in{width:4.6ch;font-family:'Archivo';font-weight:600;font-size:.86rem;text-align:right;color:var(--brown);
  background:var(--white);border:1px solid var(--line2);border-radius:6px;padding:.25rem .35rem;font-variant-numeric:tabular-nums}
.mk-in.ovr{border-color:var(--gold);background:#fff7e8}
.mk-cell .pct{color:var(--muted);font-size:.8rem}
.tope{font-size:.74rem;color:var(--muted);margin-top:.15rem;white-space:nowrap}
.tope b{color:var(--brown);font-weight:600}

/* ---------- Notas ---------- */
.notes{margin-top:2.4rem;background:var(--cream2);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(1.3rem,3vw,1.9rem)}
.notes h3{font-family:'Fraunces';font-weight:600;font-size:1.1rem;color:var(--brown);margin-bottom:.9rem}
.notes ul{list-style:none;display:flex;flex-direction:column;gap:.65rem}
.notes li{font-size:.88rem;color:#5a4230;padding-left:1.25rem;position:relative;line-height:1.5}
.notes li::before{content:"";position:absolute;left:0;top:.55em;width:6px;height:6px;border-radius:50%;background:var(--gold)}
.notes li b{color:var(--brown)}.flag{color:var(--low);font-weight:700}

.foot{margin-top:2rem;display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;
  padding-top:1.3rem;border-top:1px solid var(--line);font-size:.82rem;color:var(--muted)}
.foot b{color:var(--brown)}

/* link compartible */
.share{display:flex;flex-wrap:wrap;align-items:center;gap:.7rem;background:#fff7e8;border:1px dashed var(--gold);
  border-radius:10px;padding:.7rem .9rem;margin-bottom:1.4rem}
.share .lbl{font-size:.74rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--cl)}
.share input{flex:1;min-width:200px;border:1px solid var(--line2);border-radius:7px;padding:.45rem .6rem;
  font-family:'Archivo';font-size:.85rem;color:var(--brown);background:var(--white)}

/* ====================================================
   LOGIN — medallón de lacre
   ==================================================== */
.login-body{display:grid;place-items:center;min-height:100vh;padding:1.5rem;
  background:
    radial-gradient(130% 100% at 50% -20%,#4a2414,var(--brown) 45%,var(--ink));
}
.login-card{position:relative;z-index:1;width:100%;max-width:420px;background:var(--cream2);
  border-radius:20px;box-shadow:0 40px 80px -30px rgba(0,0,0,.7),0 0 0 1px rgba(224,169,76,.25);
  padding:clamp(2rem,5vw,2.8rem);overflow:hidden}
.login-card::before{content:"";position:absolute;right:-90px;top:-90px;width:240px;height:240px;border-radius:50%;
  border:1.5px solid rgba(194,126,34,.18)}
.login-medal{width:74px;height:74px;border-radius:50%;margin:0 auto 1.1rem;
  background:radial-gradient(circle at 35% 30%,var(--gold-lt),var(--gold) 60%,#9a6016);
  display:grid;place-items:center;font-family:'Fraunces';font-weight:700;color:var(--brown);
  box-shadow:0 10px 24px -10px rgba(154,96,22,.7),inset 0 1px 2px rgba(255,255,255,.5);position:relative}
.login-medal span{font-size:.62rem;letter-spacing:.06em}
.login-medal::after{content:"";position:absolute;inset:7px;border-radius:50%;border:1.5px dashed rgba(58,20,16,.35)}
.login-brand{text-align:center;font-family:'Fraunces';font-weight:600;font-size:2.2rem;color:var(--brown);letter-spacing:.05em}
.login-brand small{display:block;font-family:'Archivo';font-weight:500;font-size:.7rem;letter-spacing:.28em;
  text-transform:uppercase;color:var(--muted);margin-top:.35rem}
.login-title{text-align:center;color:var(--muted);font-size:.9rem;margin:1rem 0 1.5rem}
.login-card form{display:flex;flex-direction:column;gap:1rem}
.login-card .fld label{display:block;font-size:.74rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
  color:var(--muted);margin-bottom:.4rem}
.login-card .fld input{width:100%;border:1px solid var(--line2);border-radius:10px;padding:.7rem .85rem;
  font-family:'Archivo';font-size:1rem;color:var(--brown);background:var(--white)}
.login-card .fld input:focus{outline:2px solid var(--gold-lt);outline-offset:-1px}
.login-card .btn-gold{justify-content:center;padding:.8rem;font-size:1rem;margin-top:.3rem}
.login-err{background:var(--low-bg);border:1px solid rgba(179,38,30,.3);color:var(--low);font-size:.85rem;
  font-weight:600;padding:.6rem .8rem;border-radius:9px;text-align:center}
.login-foot{text-align:center;font-size:.72rem;color:var(--muted);margin-top:1.4rem;letter-spacing:.04em}

/* ---------- Responsive: tabla → tarjetas ---------- */
@media (max-width:820px){
  .tb-nav a{padding:.4rem .6rem;font-size:.84rem}
  .tb-brand{font-size:1.25rem}
  table{background:transparent;box-shadow:none}
  thead{display:none}
  tbody,tr,td{display:block}
  tbody tr:not(.cat-row){background:var(--cream2);border:1px solid var(--line);border-radius:12px;
    margin-bottom:.9rem;padding:.5rem .9rem;box-shadow:0 10px 24px -22px rgba(58,20,16,.5)}
  tbody td{text-align:right;border-bottom:1px dashed var(--line);padding:.55rem 0;display:flex;
    justify-content:space-between;align-items:center;gap:1rem}
  tbody td:first-child{text-align:left;border-bottom:1px solid var(--line)}
  tbody td::before{content:attr(data-label);font-size:.68rem;font-weight:700;letter-spacing:.05em;
    text-transform:uppercase;color:var(--muted);text-align:left}
  tbody td:first-child::before{display:none}
  tbody tr td:last-child{border-bottom:none}
  .mk-cell{justify-content:flex-end}
}

/* ---------- Usuarios / Mi cuenta ---------- */
.flash{background:var(--ok-bg);color:var(--ok);border:1px solid var(--ok);border-radius:10px;
  padding:.7rem 1rem;font-size:.9rem;font-weight:600;margin-bottom:1.2rem}
.errbox{background:var(--low-bg);color:var(--low);border:1px solid var(--low);border-radius:10px;
  padding:.7rem 1rem;font-size:.9rem;font-weight:600;margin-bottom:1.2rem}
.utable{width:100%;border-collapse:collapse;background:var(--cream2);border:1px solid var(--line);
  border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.utable th{text-align:left;font-family:'Archivo';font-size:.72rem;font-weight:700;letter-spacing:.06em;
  text-transform:uppercase;color:var(--muted);padding:.7rem .9rem;border-bottom:1px solid var(--line)}
.utable td{padding:.7rem .9rem;border-bottom:1px solid var(--line);font-size:.92rem;vertical-align:middle}
.utable tbody tr:last-child td{border-bottom:none}
.utable tr.off td{opacity:.5}
.utable .uname{font-weight:700;color:var(--brown)}
.utable .udisp{color:var(--muted);font-size:.82rem}
.uform{display:flex;flex-wrap:wrap;gap:.9rem 1.1rem;align-items:flex-end}
.uform .field{margin:0}
.uform .field input,.uform .field select{border:1px solid var(--line2);border-radius:9px;
  padding:.55rem .7rem;font-size:.92rem;background:#fff;font-family:'Archivo'}
.uform .field input:focus,.uform .field select:focus{outline:2px solid var(--gold-lt);outline-offset:-1px}
.uacts{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}
.uacts form{margin:0}
.btn-sm{padding:.4rem .75rem;font-size:.8rem}
.state-on{color:var(--ok);font-weight:700;font-size:.82rem}
.state-off{color:var(--low);font-weight:700;font-size:.82rem}

/* ---------- Print ---------- */
@media print{
  .topbar,.controls,.actions,.share,.btn,.warn-tag,.tope,.mk-cell .pct{display:none!important}
  body{background:#fff}
  body::before{display:none}
  .wrap{padding-top:1rem}
  table{box-shadow:none}
  .cat-block{break-inside:avoid}
  thead th{-webkit-print-color-adjust:exact;print-color-adjust:exact}
}
