/* Kubao 库宝 · hoja única. Tokens arriba, componentes abajo. */
:root{
  --paper:#F7F5F1; --surface:#FFFFFF; --surface-2:#EEEAE3; --surface-3:#E4DFD6;
  --ink:#1B1815; --ink-2:#5A534B; --ink-3:#8B8279;
  --line:#DFD8CE; --line-2:#CFC7BB;
  --brand:#C23B22; --brand-ink:#FFFFFF; --brand-soft:#F7E4DF;
  --in:#0F6B4F; --in-soft:#DDEFE7;
  --out:#8A4A12; --out-soft:#F6E7D5;
  --bad:#B3261E; --bad-soft:#F9E2E0;
  --focus:#1F5FA8;
  --r:14px;
  --f-display:"Archivo","Noto Sans SC",system-ui,-apple-system,sans-serif;
  --f-body:"IBM Plex Sans","Noto Sans SC",system-ui,-apple-system,sans-serif;
  --f-mono:"IBM Plex Mono","Noto Sans SC",ui-monospace,monospace;
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --paper:#141210; --surface:#1E1B18; --surface-2:#26221E; --surface-3:#332D27;
    --ink:#F2EDE6; --ink-2:#B4ACA2; --ink-3:#867E75;
    --line:#332E28; --line-2:#413A33;
    --brand:#E4654A; --brand-ink:#1B1815; --brand-soft:#3B211A;
    --in:#4FBF93; --in-soft:#13291F;
    --out:#E0994E; --out-soft:#2E2114;
    --bad:#F2837A; --bad-soft:#3A1A17;
    --focus:#7FB2F0;
  }
}
:root[data-theme="dark"]{
  --paper:#141210; --surface:#1E1B18; --surface-2:#26221E; --surface-3:#332D27;
  --ink:#F2EDE6; --ink-2:#B4ACA2; --ink-3:#867E75;
  --line:#332E28; --line-2:#413A33;
  --brand:#E4654A; --brand-ink:#1B1815; --brand-soft:#3B211A;
  --in:#4FBF93; --in-soft:#13291F;
  --out:#E0994E; --out-soft:#2E2114;
  --bad:#F2837A; --bad-soft:#3A1A17;
  --focus:#7FB2F0;
}

*{box-sizing:border-box; -webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{
  margin:0; background:var(--paper); color:var(--ink);
  font-family:var(--f-body); font-size:15px; line-height:1.45;
  -webkit-font-smoothing:antialiased; overscroll-behavior-y:none;
}
button,input{font:inherit; color:inherit}
button{cursor:pointer}
:focus-visible{outline:2px solid var(--focus); outline-offset:2px; border-radius:6px}
.app{display:flex; flex-direction:column; height:100dvh; max-width:560px; margin:0 auto; position:relative; background:var(--paper)}
[hidden]{display:none !important}

/* ---- encabezado ---- */
.hdr{flex:none; background:var(--surface); border-bottom:1px solid var(--line);
     padding:calc(10px + env(safe-area-inset-top)) 14px 10px; display:flex; flex-direction:column; gap:10px}
.hdr-top{display:flex; align-items:center; gap:10px}
.hdr-title{font-family:var(--f-display); font-size:19px; font-weight:600; letter-spacing:-.01em; margin:0; flex:1;
           min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.me{display:flex; align-items:center; gap:7px; border:1px solid var(--line); border-radius:20px;
    padding:3px 10px 3px 3px; background:var(--surface)}
.me .av{width:24px; height:24px; border-radius:50%; background:var(--surface-3); display:grid; place-items:center;
        font-size:11px; font-weight:600; font-family:var(--f-display)}
.me b{font-size:12px; font-weight:600}
.sync{display:flex; align-items:center; gap:6px; font-size:11px; font-weight:500; color:var(--ink-3)}
.sync .led{width:7px; height:7px; border-radius:50%; background:var(--in)}
.sync.off{color:var(--out)} .sync.off .led{background:var(--out)}
.sync.busy .led{animation:pulse 1s ease-in-out infinite}
@keyframes pulse{50%{opacity:.25}}
@media (prefers-reduced-motion:reduce){ .sync.busy .led{animation:none} }
.whrow{display:flex; gap:6px; overflow-x:auto; scrollbar-width:none}
.whrow::-webkit-scrollbar{display:none}
.wh{flex:none; border:1px solid var(--line); background:var(--surface); border-radius:20px; padding:5px 11px;
    font-size:12px; font-weight:500; color:var(--ink-2); white-space:nowrap}
.wh[aria-pressed="true"]{background:var(--ink); color:var(--paper); border-color:var(--ink)}

/* ---- cuerpo y pestañas ---- */
.body{flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch; padding:14px 14px 96px}
.tabs{position:fixed; left:50%; transform:translateX(-50%); bottom:0; width:100%; max-width:560px;
      height:calc(66px + env(safe-area-inset-bottom)); padding-bottom:env(safe-area-inset-bottom);
      background:var(--surface); border-top:1px solid var(--line);
      display:grid; grid-template-columns:repeat(4,1fr); align-items:center; z-index:10}
.tab{display:flex; flex-direction:column; align-items:center; gap:3px; background:none; border:0; padding:6px 0;
     color:var(--ink-3); font-size:10.5px; font-weight:500}
.tab[aria-current="true"]{color:var(--brand)}
.tab svg{width:21px; height:21px}
.fabwrap{display:grid; place-items:center}
.fab{width:50px; height:50px; border-radius:16px; border:0; background:var(--brand); color:var(--brand-ink);
     display:grid; place-items:center; box-shadow:0 6px 16px rgba(194,59,34,.32); margin-top:-14px}
.fab svg{width:23px; height:23px}

/* ---- búsqueda y lista ---- */
.search{display:flex; align-items:center; gap:9px; background:var(--surface); border:1px solid var(--line);
        border-radius:11px; padding:9px 11px; margin-bottom:12px}
.search input{border:0; background:none; outline:none; width:100%; min-width:0}
.search svg{width:17px; height:17px; color:var(--ink-3); flex:none}
.sectlabel{display:flex; align-items:baseline; justify-content:space-between; margin:2px 2px 9px; gap:10px}
.sectlabel h3{margin:0; font-size:10.5px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3)}
.sectlabel span{font-size:11.5px; color:var(--ink-3); font-variant-numeric:tabular-nums; white-space:nowrap}
.list{display:flex; flex-direction:column; gap:8px}
.item{display:grid; grid-template-columns:auto 1fr auto; gap:12px; align-items:center; width:100%; text-align:left;
      background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:10px 12px}
.thumb{width:46px; height:46px; border-radius:9px; background:var(--surface-2); display:grid; place-items:center;
       color:var(--ink-2); flex:none; border:1px solid var(--line); overflow:hidden}
.thumb svg{width:26px; height:26px}
.thumb img{width:100%; height:100%; object-fit:cover}
.item .nm{display:block; font-size:14.5px; font-weight:600; line-height:1.25; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.item .alt{display:block; font-size:12px; color:var(--ink-3); line-height:1.3; overflow:hidden; text-overflow:ellipsis; white-space:nowrap}
.item .sku{display:block; font-family:var(--f-mono); font-size:10.5px; color:var(--ink-3)}
.qty{text-align:right; flex:none}
.qty b{display:block; font-family:var(--f-mono); font-size:22px; font-weight:600; line-height:1; font-variant-numeric:tabular-nums}
.qty small{display:block; font-size:10.5px; color:var(--ink-3); margin-top:3px}
.qty.zero b{color:var(--ink-3)}
.qty.low b{color:var(--out)}
.qty.neg b{color:var(--bad)}

/* ---- ficha ---- */
.back{display:inline-flex; align-items:center; gap:6px; background:none; border:0; padding:0; color:var(--ink-2);
      font-size:13px; font-weight:500; margin-bottom:10px}
.back svg{width:15px; height:15px}
.card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:14px}
.hero{display:grid; grid-template-columns:auto 1fr; gap:14px; align-items:start}
.hero .thumb{width:74px; height:74px; border-radius:11px}
.hero .thumb svg{width:40px; height:40px}
.names{min-width:0}
.names .primary{font-family:var(--f-display); font-size:18px; font-weight:600; line-height:1.2; letter-spacing:-.01em; text-wrap:balance}
.names .secondary{font-size:13.5px; color:var(--ink-2); margin-top:3px; line-height:1.3}
.pairtag{display:inline-flex; margin-top:8px; font-size:10.5px; font-weight:600; letter-spacing:.04em;
         text-transform:uppercase; color:var(--brand); background:var(--brand-soft); border-radius:6px; padding:3px 7px}
.meta{display:grid; grid-template-columns:repeat(3,1fr); gap:1px; background:var(--line); border-radius:11px;
      overflow:hidden; margin-top:14px}
.meta div{background:var(--surface); padding:10px 11px}
.meta dt{font-size:10px; font-weight:600; letter-spacing:.07em; text-transform:uppercase; color:var(--ink-3); margin:0}
.meta dd{margin:4px 0 0; font-family:var(--f-mono); font-size:15px; font-weight:600; font-variant-numeric:tabular-nums}
.balance{display:flex; align-items:baseline; gap:9px; margin-top:14px; padding-top:14px; border-top:1px solid var(--line)}
.balance b{font-family:var(--f-mono); font-size:44px; font-weight:600; line-height:.95; letter-spacing:-.02em; font-variant-numeric:tabular-nums}
.balance.neg b{color:var(--bad)}
.balance span{font-size:13px; color:var(--ink-2)}
.flag{margin-top:10px; background:var(--bad-soft); color:var(--bad); border-radius:10px; padding:9px 11px; font-size:12.5px; font-weight:500}
.acts{display:grid; grid-template-columns:1fr 1fr; gap:9px; margin-top:14px}
.act{display:flex; align-items:center; justify-content:center; gap:9px; border-radius:12px; border:0; padding:15px 10px;
     font-family:var(--f-display); font-size:15.5px; font-weight:600}
.act .glyph{font-family:var(--f-body); font-size:19px; font-weight:700; line-height:1}
.act.in{background:var(--in-soft); color:var(--in)}
.act.out{background:var(--out-soft); color:var(--out)}
.act:disabled{opacity:.42}

/* ---- movimientos ---- */
.mv{display:grid; grid-template-columns:auto 1fr auto; gap:11px; align-items:center; padding:10px 0; border-bottom:1px solid var(--line)}
.mv:last-child{border-bottom:0}
.mv .mk{width:30px; height:30px; border-radius:8px; display:grid; place-items:center; font-size:15px; font-weight:700; flex:none}
.mv .mk.in{background:var(--in-soft); color:var(--in)}
.mv .mk.out{background:var(--out-soft); color:var(--out)}
.mv .t1{display:block; font-size:13.5px; font-weight:500; line-height:1.25}
.mv .t2{display:flex; align-items:center; gap:5px; flex-wrap:wrap; font-size:11.5px; color:var(--ink-3)}
.mv .amt{font-family:var(--f-mono); font-size:15px; font-weight:600; font-variant-numeric:tabular-nums}
.mv .amt.in{color:var(--in)} .mv .amt.out{color:var(--out)}
.pend{display:inline-flex; align-items:center; gap:4px; color:var(--out); font-weight:600}
.pend::before{content:""; width:5px; height:5px; border-radius:50%; background:var(--out)}
.daylabel{font-size:10.5px; font-weight:600; letter-spacing:.1em; text-transform:uppercase; color:var(--ink-3); margin:16px 2px 6px}
.daylabel:first-child{margin-top:2px}
.empty{text-align:center; padding:38px 20px; color:var(--ink-3)}
.empty svg{width:34px; height:34px; margin-bottom:10px}
.empty p{margin:0; font-size:13.5px; line-height:1.5}

/* ---- hoja inferior ---- */
.scrim{position:fixed; inset:0; background:rgba(20,18,16,.45); opacity:0; pointer-events:none; transition:opacity .2s; z-index:20}
.scrim.on{opacity:1; pointer-events:auto}
.sheet{position:fixed; left:50%; transform:translate(-50%,102%); bottom:0; width:100%; max-width:560px; z-index:21;
       background:var(--surface); border-top-left-radius:20px; border-top-right-radius:20px; border-top:1px solid var(--line);
       transition:transform .26s cubic-bezier(.32,.72,0,1); max-height:92dvh; overflow-y:auto;
       padding:8px 14px calc(16px + env(safe-area-inset-bottom))}
.sheet.on{transform:translate(-50%,0)}
@media (prefers-reduced-motion:reduce){ .sheet{transition:none} }
.grab{width:36px; height:4px; border-radius:3px; background:var(--line-2); margin:0 auto 12px}
.sheet h3{margin:0 0 2px; font-family:var(--f-display); font-size:17px; font-weight:600; letter-spacing:-.01em}
.sheet .sub{margin:0 0 14px; font-size:12.5px; color:var(--ink-2)}
.bignum{display:flex; align-items:baseline; justify-content:center; gap:9px; background:var(--surface-2);
        border-radius:12px; padding:16px; margin-bottom:12px}
.bignum b{font-family:var(--f-mono); font-size:46px; font-weight:600; line-height:1; font-variant-numeric:tabular-nums; letter-spacing:-.02em}
.bignum span{font-size:13px; color:var(--ink-2)}
.preview{text-align:center; font-size:12.5px; color:var(--ink-2); margin:-4px 0 12px; font-variant-numeric:tabular-nums}
.preview b{color:var(--ink); font-family:var(--f-mono); font-weight:600}
.warn{text-align:center; font-size:12.5px; color:var(--out); margin:-4px 0 12px; font-weight:500}
.pad{display:grid; grid-template-columns:repeat(3,1fr); gap:7px}
.key{height:54px; border-radius:11px; border:1px solid var(--line); background:var(--surface);
     font-family:var(--f-mono); font-size:20px; font-weight:600}
.key:active{background:var(--surface-2)}
.chips{display:flex; gap:7px; flex-wrap:wrap; margin:12px 0}
.chip{border:1px solid var(--line); background:var(--surface); border-radius:20px; padding:7px 12px; font-size:12.5px;
      font-weight:500; color:var(--ink-2)}
.chip[aria-pressed="true"]{background:var(--ink); color:var(--paper); border-color:var(--ink)}
.confirm{width:100%; border:0; border-radius:13px; padding:16px; font-family:var(--f-display); font-size:16px;
         font-weight:600; margin-top:4px; color:#fff}
.confirm.in{background:var(--in)} .confirm.out{background:var(--out)} .confirm.neutral{background:var(--ink); color:var(--paper)}
.confirm:disabled{opacity:.4}
.fields{display:flex; flex-direction:column; gap:11px; margin-bottom:14px}
.field label{display:block; font-size:10.5px; font-weight:600; letter-spacing:.07em; text-transform:uppercase;
             color:var(--ink-3); margin-bottom:5px}
.field input{width:100%; border:1px solid var(--line); background:var(--surface-2); border-radius:10px;
             padding:12px; outline:none}
.field input:focus{border-color:var(--focus); background:var(--surface)}
.hint{font-size:11.5px; color:var(--ink-3); margin-top:5px; line-height:1.4}
.err{font-size:12.5px; color:var(--bad); margin:8px 0 0; font-weight:500}

/* ---- ajustes ---- */
.rowset{background:var(--surface); border:1px solid var(--line); border-radius:var(--r); overflow:hidden}
.rowset > div{padding:12px 13px; border-bottom:1px solid var(--line)}
.rowset > div:last-child{border-bottom:0}
.rowset h4{margin:0 0 9px; font-size:10.5px; font-weight:600; letter-spacing:.09em; text-transform:uppercase; color:var(--ink-3)}
.seg{display:grid; grid-template-columns:repeat(3,1fr); gap:6px}
.seg button{border:1px solid var(--line); background:var(--surface-2); border-radius:9px; padding:11px 4px; font-size:13px; font-weight:600}
.seg button[aria-pressed="true"]{background:var(--ink); color:var(--paper); border-color:var(--ink)}
.setline{display:flex; align-items:center; justify-content:space-between; gap:10px; font-size:13.5px}
.setline small{display:block; color:var(--ink-3); font-size:11.5px; margin-top:2px}
.linkbtn{background:none; border:0; padding:0; color:var(--brand); font-size:13.5px; font-weight:600}

/* ---- entrada (login) ---- */
.gate{min-height:100dvh; display:flex; flex-direction:column; justify-content:center; gap:22px;
      padding:28px 22px calc(28px + env(safe-area-inset-bottom)); max-width:460px; margin:0 auto}
.gate .brand{display:flex; align-items:center; gap:12px}
.chop{width:46px; height:46px; flex:none; border-radius:10px; background:var(--brand); color:var(--brand-ink);
      display:grid; place-items:center; font-family:var(--f-display); font-weight:700; font-size:23px;
      box-shadow:inset 0 0 0 2px rgba(255,255,255,.18)}
.gate h1{margin:0; font-family:var(--f-display); font-size:26px; font-weight:700; letter-spacing:-.02em; line-height:1.05}
.gate h1 span{font-weight:500; color:var(--ink-3); margin-left:6px}
.gate p.lede{margin:0; font-size:13.5px; color:var(--ink-2)}
.people{display:flex; flex-direction:column; gap:8px}
.person{display:flex; align-items:center; gap:12px; text-align:left; background:var(--surface); border:1px solid var(--line);
        border-radius:var(--r); padding:12px 13px; width:100%}
.person .av{width:38px; height:38px; border-radius:50%; background:var(--surface-3); display:grid; place-items:center;
            font-family:var(--f-display); font-weight:600; font-size:15px; flex:none}
.person b{display:block; font-size:15px}
.person small{display:block; font-size:12px; color:var(--ink-2)}
.pindots{display:flex; gap:10px; justify-content:center; margin:6px 0 16px}
.pindots i{width:13px; height:13px; border-radius:50%; border:1.5px solid var(--line-2); background:transparent}
.pindots i.on{background:var(--ink); border-color:var(--ink)}
.langpick{display:flex; gap:6px; justify-content:center}
.langpick button{border:1px solid var(--line); background:var(--surface); border-radius:20px; padding:6px 14px;
                 font-size:12.5px; font-weight:600; color:var(--ink-2)}
.langpick button[aria-pressed="true"]{background:var(--ink); color:var(--paper); border-color:var(--ink)}

/* ---- avisos ---- */
.toast{position:fixed; left:50%; transform:translate(-50%,8px); bottom:calc(84px + env(safe-area-inset-bottom));
       width:calc(100% - 28px); max-width:532px; z-index:40; background:var(--ink); color:var(--paper);
       border-radius:11px; padding:12px 14px; font-size:13.5px; font-weight:500; display:flex; align-items:center; gap:9px;
       opacity:0; pointer-events:none; transition:opacity .2s, transform .2s}
.toast.on{opacity:1; transform:translate(-50%,0)}
.toast svg{width:17px; height:17px; flex:none}
.banner{background:var(--bad-soft); color:var(--bad); border-radius:11px; padding:11px 13px; font-size:12.5px;
        font-weight:500; margin-bottom:12px; display:flex; gap:10px; align-items:flex-start}
.banner button{background:none; border:0; padding:0; color:inherit; font-weight:700; text-decoration:underline}

/* ---- escáner ---- */
.scan{position:fixed; inset:0; z-index:30; background:#0E0C0B; display:none; flex-direction:column;
      align-items:center; justify-content:center; gap:20px; color:#F2EDE6}
.scan.on{display:flex}
.scan video{position:absolute; inset:0; width:100%; height:100%; object-fit:cover}
.viewfinder{position:relative; width:220px; height:220px; border-radius:18px; box-shadow:0 0 0 2000px rgba(14,12,11,.66)}
.viewfinder i{position:absolute; width:26px; height:26px; border:3px solid var(--brand)}
.viewfinder i:nth-child(1){top:-1px; left:-1px; border-right:0; border-bottom:0; border-top-left-radius:14px}
.viewfinder i:nth-child(2){top:-1px; right:-1px; border-left:0; border-bottom:0; border-top-right-radius:14px}
.viewfinder i:nth-child(3){bottom:-1px; left:-1px; border-right:0; border-top:0; border-bottom-left-radius:14px}
.viewfinder i:nth-child(4){bottom:-1px; right:-1px; border-left:0; border-top:0; border-bottom-right-radius:14px}
.scan p{margin:0; font-size:13.5px; opacity:.85; position:relative}
.scantools{position:relative; display:flex; gap:9px; flex-wrap:wrap; justify-content:center}
.scanbtn{border:1px solid rgba(242,237,230,.3); background:rgba(242,237,230,.08); color:#F2EDE6;
         border-radius:20px; padding:9px 16px; font-size:13px; font-weight:600}
.scanbtn[aria-pressed="true"]{background:var(--brand); border-color:var(--brand); color:#fff}
.scan p{max-width:300px; text-align:center; line-height:1.45}
.scan .cancel{position:relative; border:1px solid rgba(242,237,230,.28); background:transparent; color:#F2EDE6;
              border-radius:10px; padding:10px 20px; font-size:13.5px}

/* ---- foto de producto ---- */
.photoacts{display:flex; gap:14px; margin-top:9px}
.linkbtn.muted{color:var(--ink-3)}

/* ---- hoja de etiquetas ---- */
.printview{position:fixed; inset:0; z-index:50; background:var(--paper); overflow-y:auto;
           padding:calc(14px + env(safe-area-inset-top)) 14px calc(20px + env(safe-area-inset-bottom));
           max-width:900px; margin:0 auto}
.print-chrome{display:flex; flex-direction:column; gap:12px; max-width:560px; margin:0 auto 20px}
.pc-row{display:flex; align-items:center; justify-content:space-between; gap:10px}
.pc-count{font-size:12.5px; color:var(--ink-3); font-variant-numeric:tabular-nums}
.pc-picker{justify-content:flex-start; gap:7px}
.seg2{display:grid; grid-template-columns:1fr 1fr; gap:6px; width:100%}
.seg2 button{border:1px solid var(--line); background:var(--surface-2); border-radius:9px; padding:10px 6px;
             font-size:12.5px; font-weight:600}
.seg2 button[aria-pressed="true"]{background:var(--ink); color:var(--paper); border-color:var(--ink)}
.pc-list{max-height:34dvh; overflow-y:auto; background:var(--surface); border:1px solid var(--line);
         border-radius:var(--r); padding:4px 12px}
.pc-item{display:flex; align-items:center; gap:10px; padding:9px 0; border-bottom:1px solid var(--line); font-size:13.5px}
.pc-item:last-child{border-bottom:0}
.pc-item input{width:18px; height:18px; accent-color:var(--brand); flex:none}
.pc-item small{color:var(--ink-3); font-family:var(--f-mono); font-size:11px; margin-left:4px}
.sheet-preview{background:var(--surface-2); border-radius:var(--r); padding:10px; overflow-x:auto}

.labels{display:grid; gap:0; background:#fff; margin:0 auto; width:max-content}
.labels.sz-a4{grid-template-columns:repeat(3, 63.5mm); grid-auto-rows:38.1mm}
.labels.sz-big{grid-template-columns:repeat(2, 99.1mm); grid-auto-rows:67.7mm}
.label{display:grid; grid-template-columns:auto 1fr; gap:2.4mm; align-items:center;
       padding:2.6mm; overflow:hidden; color:#111; background:#fff; border:0.2mm dashed #D8D2C8}
.label .qr{width:24mm; height:24mm}
.labels.sz-big .label .qr{width:46mm; height:46mm}
.label .qr svg{display:block; width:100%; height:100%}
.lb-txt{min-width:0}
.lb-zh{font-family:"Noto Sans SC",sans-serif; font-weight:700; font-size:3.8mm; line-height:1.15;
       overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical}
.lb-es{font-size:2.9mm; line-height:1.2; margin-top:1mm; color:#333;
       overflow:hidden; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical}
.lb-meta{font-family:"IBM Plex Mono",monospace; font-size:2.5mm; margin-top:1.3mm; color:#555;
         white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.labels.sz-big .lb-zh{font-size:6.5mm} .labels.sz-big .lb-es{font-size:5mm} .labels.sz-big .lb-meta{font-size:4mm}

@media print{
  @page{ size:A4; margin:8mm }
  body{background:#fff}
  body > *:not(.printview){display:none !important}
  .printview{position:static; padding:0; max-width:none; background:#fff; overflow:visible}
  .print-chrome{display:none !important}
  .sheet-preview{background:#fff; padding:0; overflow:visible}
  .label{border:0.15mm solid #E2E2E2; break-inside:avoid; page-break-inside:avoid}
  .labels{width:auto}
}

/* ---- panel del dueño ---- */
.mg{max-width:820px; margin:0 auto}
.mg-head{display:flex; align-items:baseline; gap:14px; margin-bottom:16px; flex-wrap:wrap}
.mg-head h2{margin:0; font-family:var(--f-display); font-size:20px; font-weight:600; letter-spacing:-.01em}
.mg-head .back{margin:0}
.mg-biz{margin-left:auto; font-size:12.5px; color:var(--ink-3)}
.mg-tabs{display:grid; grid-template-columns:repeat(4,1fr); gap:6px; margin-bottom:18px}
.mg-tabs button{border:1px solid var(--line); background:var(--surface); border-radius:10px; padding:10px 4px;
                font-size:12.5px; font-weight:600; color:var(--ink-2)}
.mg-tabs button[aria-pressed="true"]{background:var(--ink); color:var(--paper); border-color:var(--ink)}
.mg-body{transition:opacity .15s}
.mg-body.busy{opacity:.5; pointer-events:none}
.mg-list{display:flex; flex-direction:column; gap:10px}
.mg-card{background:var(--surface); border:1px solid var(--line); border-radius:var(--r); padding:13px}
.mg-card.off{opacity:.62}
.mg-card.add{border-style:dashed}
.mg-row{display:flex; gap:9px; align-items:center; flex-wrap:wrap}
.mg-row + .mg-row{margin-top:9px}
.mg-two{display:grid; grid-template-columns:1fr 1fr; gap:9px; flex:1; min-width:220px}
.mg-input{flex:1; min-width:110px; border:1px solid var(--line); background:var(--surface-2); border-radius:9px;
          padding:10px 11px; font:inherit; color:inherit; outline:none}
.mg-input:focus{border-color:var(--focus); background:var(--surface)}
.mg-input.narrow{min-width:74px; max-width:120px}
select.mg-input{appearance:none; background-image:linear-gradient(45deg,transparent 50%,var(--ink-3) 50%),
  linear-gradient(135deg,var(--ink-3) 50%,transparent 50%);
  background-position:calc(100% - 15px) 50%, calc(100% - 10px) 50%; background-size:5px 5px, 5px 5px;
  background-repeat:no-repeat; padding-right:30px}
.mg-meta{display:flex; gap:14px; align-items:center; flex-wrap:wrap; margin-top:10px; padding-top:10px;
         border-top:1px solid var(--line); font-size:12px; color:var(--ink-3)}
.mg-meta .linkbtn{font-size:12.5px}
.pilloff{background:var(--surface-3); color:var(--ink-3); border-radius:20px; padding:2px 9px; font-size:11px; font-weight:600}
.av2{width:34px; height:34px; border-radius:50%; background:var(--surface-3); display:grid; place-items:center;
     font-family:var(--f-display); font-weight:600; font-size:14px; flex:none}
.mg-lbl{display:block; font-size:10.5px; font-weight:600; letter-spacing:.07em; text-transform:uppercase;
        color:var(--ink-3); margin-bottom:6px}
.mg-hint{font-size:12.5px; color:var(--ink-3); line-height:1.5; margin:8px 0 14px}
.mg-tablewrap{overflow-x:auto; border:1px solid var(--line); border-radius:var(--r); background:var(--surface)}
.mg-table{border-collapse:collapse; width:100%; min-width:660px; font-size:13px}
.mg-table th{text-align:left; font-size:9.5px; font-weight:600; letter-spacing:.08em; text-transform:uppercase;
             color:var(--ink-3); padding:9px 10px; border-bottom:1px solid var(--line)}
.mg-table td{padding:6px 10px; border-bottom:1px solid var(--line)}
.mg-table tr:last-child td{border-bottom:0}
.mg-table td.mono{font-family:var(--f-mono); font-size:11.5px; color:var(--ink-3); white-space:nowrap}
.mg-save{display:flex; align-items:center; justify-content:space-between; gap:14px; margin-top:14px; flex-wrap:wrap}
.mg-save span{font-size:12.5px; color:var(--ink-3)}
.mg-save .confirm{width:auto; min-width:160px; margin-top:0}
@media print{ .mg{display:none} }
