/* Pergamino 2 · estilo aprobado (bosquejos/demo.html, 29-sep-2026): iOS estándar, barra Things 3. */
:root{
  --ink:#0A0A0A;--mute:#6E6E73;--faint:#C7C7CC;--line:#E5E5EA;--fill:#F2F2F7;--bg:#F2F2F7;--card:#FFFFFF;
  --blue:#007AFF;--blue-press:#0062CC;--rojo:#E5484D;--ambar:#D9962B;--ok:#30A46C;--gris:#98989D;
  --perg:#8C4B2F;--verde:#7DAA5C;--ligero:#E3A857;--medio:#D98A2B;--oscuro:#5E3A26;--molido:#6B4A36;--env:#E9DDBF;--esen:#3F6E8C;
  --sh:0 1px 2px rgba(0,0,0,.04),0 6px 22px rgba(0,0,0,.055);
  --gut:22px;--ease:cubic-bezier(.2,.8,.2,1);
  --top:env(safe-area-inset-top,0px);--bot:env(safe-area-inset-bottom,0px);
  color-scheme:light;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%;background:var(--bg);overscroll-behavior:none;touch-action:manipulation;overflow:hidden;-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text",system-ui,sans-serif;color:var(--ink);-webkit-font-smoothing:antialiased;-webkit-user-select:none;user-select:none}
input,textarea{-webkit-user-select:text;user-select:text}
button,input,select,textarea{font:inherit;color:inherit}
[hidden]{display:none!important}

/* ---------- armazón: teléfono a pantalla completa ---------- */
#app{position:fixed;inset:0;display:flex;flex-direction:column;background:var(--bg);overflow:hidden}
.scr{flex:1;min-height:0;display:flex;flex-direction:column;background:var(--bg);position:relative}
.scroll{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;padding-bottom:24px}
.col{width:100%;max-width:720px;margin:0 auto}
.sb{height:max(var(--top),12px);flex:0 0 auto}
.nb{height:44px;flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:0 10px;font-size:17px;gap:8px}
.nb>div{flex:1;display:flex;align-items:center}
.nb>div:nth-child(2){justify-content:center;flex:0 1 auto}
.nb>div:last-child{justify-content:flex-end}
.nb .t{font-weight:600;white-space:nowrap}
.lnk{color:var(--blue);background:none;border:0;display:inline-flex;align-items:center;gap:3px;padding:8px 6px;cursor:pointer;font-size:17px;min-height:44px}
.lnk:disabled{color:var(--faint)}
.lnk b{font-weight:600}
.hd{display:flex;align-items:flex-end;justify-content:space-between;padding:0 20px 6px;gap:12px}
.hda{display:flex;align-items:center;gap:12px;margin-bottom:1px}
.lt{font-size:31px;font-weight:700;letter-spacing:.2px;line-height:1.1;min-width:0;overflow-wrap:anywhere}
.circ{width:34px;height:34px;border-radius:50%;background:var(--blue);border:0;display:flex;align-items:center;justify-content:center;cursor:pointer;margin-bottom:2px;flex:0 0 auto;position:relative}
.circ::after{content:"";position:absolute;inset:-5px}
.sub{padding:2px 20px 0;color:var(--mute);font-size:15px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dot{width:10px;height:10px;border-radius:50%;flex:0 0 auto;display:inline-block}
.card{background:var(--card);border-radius:16px;margin:14px var(--gut) 0;box-shadow:var(--sh);overflow:hidden}
button.card{display:block;width:calc(100% - 2 * var(--gut));border:0;text-align:left;cursor:pointer}
.ch{padding:10px 16px 4px;font-size:13px;font-weight:600;color:#5A5A5E;letter-spacing:.1px;text-transform:uppercase;display:flex;justify-content:space-between;align-items:center;min-height:36px}
.ch.sep,.card>.ch:has(+ .row){min-height:46px;padding-bottom:14px;border-bottom:.5px solid var(--line)}
.ch .lnk{font-size:15px;text-transform:none;letter-spacing:0;padding:0;min-height:0}
.kpi{padding:7px 16px 0;font-size:min(80px,20.5vw);font-weight:700;letter-spacing:-.04em;line-height:1.05;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.kpi small{font-size:.5em;font-weight:700;letter-spacing:-.01em;margin-left:.3em}
.kpi.l{font-size:min(64px,16.5vw)}.kpi.xl{font-size:min(52px,13.5vw)}
.kpi.m{font-size:48px;letter-spacing:-1.5px}.kpi.m small{font-size:24px}
.kcap{padding:0 16px 14px;color:var(--mute);font-size:15px;font-variant-numeric:tabular-nums}
.bar{display:flex;height:21px;border-radius:10.5px;overflow:hidden;margin:14px 16px 0;background:var(--fill)}
.bar span{min-width:6px;transition:flex-grow .2s var(--ease)}
/* Leyenda = clave de color de la barra: punto del estado + nombre, cifra debajo. Nunca menos de 12 px:
   si las 5 columnas no caben (320–360 px o cifras largas), app.js la pasa a 3 + 2 filas (.dos). */
.leg{display:grid;grid-template-columns:repeat(5,minmax(max-content,1fr));column-gap:7px;padding:6px 16px 15px;text-align:center;font-variant-numeric:tabular-nums}
.leg.t3{grid-template-columns:repeat(3,minmax(max-content,1fr))}
.leg.dos{grid-template-columns:repeat(6,minmax(0,1fr));row-gap:6px}
.leg.dos>div{grid-column:span 2}
.leg.dos>div:nth-child(4){grid-column:2 / span 2}
.leg div{font-size:12px;color:#48484C;line-height:1.5;min-width:0;white-space:nowrap}
.leg b{display:block;font-weight:400;color:inherit;font-size:12px}
.leg .dot{width:7px;height:7px;margin-right:3px;vertical-align:0;box-shadow:inset 0 0 0 .5px rgba(0,0,0,.14)}
.row{display:flex;align-items:center;justify-content:space-between;min-height:52px;margin:0 16px;border-bottom:.5px solid var(--line);font-size:17px;gap:12px;font-variant-numeric:tabular-nums;width:calc(100% - 32px);background:none;border-left:0;border-right:0;border-top:0;text-align:left;padding:6px 0}
.card>.row:last-child,.card>*:last-child>.row:last-child,.card>.row.fin{border-bottom:0}
button.row{cursor:pointer}
button.row:active{opacity:.6}
.row .l{display:flex;align-items:center;gap:12px;min-width:0}
.row .l>span:last-child{min-width:0;overflow-wrap:anywhere}
.row .r{color:var(--mute);display:flex;align-items:center;gap:8px;white-space:nowrap}
.row .r.k{color:var(--ink)}
.row .r.col2{flex-direction:column;align-items:flex-end;gap:1px}
.row .r small{font-size:13px;color:var(--mute)}
.row .r small.venc{color:var(--rojo)}
.row .n2{display:block;font-size:13px;color:var(--mute);margin-top:1px}
.row .c3{display:grid;grid-template-columns:62px 1fr 72px;align-items:center;flex:1;gap:8px}
/* Inicio: filas de lista del comp aprobado */
.row.ord{min-height:42px;font-size:15px;padding:0}
.row.ord .c3{grid-template-columns:62px 1fr auto;gap:6px;min-width:0}
.row.ord .c3>span{white-space:nowrap;min-width:0}
.row.ord .c3>span:last-child{text-align:right}
.row.ord .c3>span:nth-child(2){overflow:hidden;text-overflow:ellipsis}
.row.ord .pc{flex:0 0 105px;display:flex;justify-content:flex-end}
.row.cob{align-items:flex-start;min-height:46px;padding:7px 0 7px;font-size:15px}
.row.cob .r{font-weight:500}
.row.cob .r small{font-size:13px;margin-top:-1px;font-weight:400}
.g2.ini>.card+.card{margin-top:23px}
.mu{color:var(--mute)}
.ico{width:30px;height:30px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex:0 0 auto;color:#fff}
.ico svg{width:18px;height:18px}
.chev{width:8px;height:14px;flex:0 0 auto}
.acts{display:flex;gap:10px;padding:16px var(--gut) 0}
.acts+.acts{padding-top:10px}
.btn{flex:1;min-height:50px;border-radius:14px;background:var(--blue);color:#fff;font-weight:600;font-size:17px;display:flex;align-items:center;justify-content:center;gap:8px;border:0;cursor:pointer;padding:0 12px;text-align:center}
.btn:active{background:var(--blue-press)}
.btn.s{background:var(--card);color:var(--blue);box-shadow:var(--sh)}
.btn.s:active{background:#E8E8ED}
.btn:disabled{background:#E9E9EE;color:var(--faint);box-shadow:none;cursor:default}
.btn.neutro{color:var(--ink)}
.seg{margin:6px 16px 14px;background:var(--fill);border-radius:9px;padding:2px;display:flex;min-height:36px}
.seg button{flex:1;border:0;background:none;font-size:15px;border-radius:7px;font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:6px;min-height:32px}
.seg button.on{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.14);font-weight:600}
.seg button:disabled{color:var(--faint);cursor:default}
.in{width:112px;height:38px;border-radius:10px;background:var(--fill);border:0;text-align:right;padding:0 12px;font-size:17px;font-weight:600;font-variant-numeric:tabular-nums;outline:none;min-width:0}
.in:focus{box-shadow:0 0 0 2px var(--blue);background:#fff}
.in.w{width:190px}
.in.t{text-align:left;font-weight:500}
.in.bad{box-shadow:0 0 0 2px var(--rojo)}
input[type=date].in{width:170px;text-align:right;-webkit-appearance:none;appearance:none;display:inline-flex;align-items:center;justify-content:flex-end}
input[type=date].in::-webkit-date-and-time-value{text-align:right}
.unit{color:var(--mute);font-size:15px;margin-left:6px}
.campo{display:flex;align-items:center;justify-content:flex-end;min-width:0}
.tot{padding:14px 16px 0;display:flex;justify-content:space-between;font-size:17px;font-weight:600;font-variant-numeric:tabular-nums}
.tot.m{padding:4px 16px 14px;font-weight:400;color:var(--mute)}
.tot.p{padding-bottom:14px}
.warn{margin:10px 20px 0;color:var(--rojo);font-size:15px;min-height:18px}
.warn:empty{display:none}
.note{padding:8px 16px 14px;color:var(--mute);font-size:13px}
.add{margin:0 16px;min-height:52px;display:flex;align-items:center;color:var(--blue);font-size:17px;gap:10px;background:none;border:0;cursor:pointer;width:calc(100% - 32px);border-bottom:.5px solid var(--line)}
.foot{padding:calc(10px + var(--aviso,0px)) var(--gut) calc(14px + var(--bot));flex:0 0 auto;transition:padding-top .2s var(--ease);background:linear-gradient(to top,var(--bg) 70%,rgba(242,242,247,0))}
.foot .in2{display:flex;gap:10px;max-width:688px;margin:0 auto}
.foot:empty{display:none}
/* Sitio para el aviso (app.js pone --aviso mientras se ve, en el pie o al final): nunca tapa el botón ni los campos. */
.scr>.scroll:last-child{margin-bottom:var(--aviso,0px);transition:margin-bottom .2s var(--ease)}
.pill{font-size:13px;font-weight:500;line-height:16px;padding:3px 12px;border-radius:11px;color:#fff;white-space:nowrap;display:inline-block;transition:background-color .2s var(--ease)}
.pill.am{background:var(--ambar)}.pill.gr{background:var(--gris)}.pill.ok{background:var(--ok)}.pill.rj{background:var(--rojo)}.pill.bl{background:var(--esen)}
.tl{margin:0 16px;padding:16px 0 14px;display:flex}
.tl .st{flex:1;display:flex;flex-direction:column;align-items:center;gap:6px;font-size:13px;color:var(--mute);position:relative}
.tl .st:not(:last-child)::after{content:"";position:absolute;top:11px;left:calc(50% + 14px);right:calc(-50% + 14px);height:2px;background:var(--line)}
.tl .st.dn:not(:last-child)::after{background:#8E8E93}
.tl .c{width:22px;height:22px;border-radius:50%;border:2px solid var(--faint);background:#fff}
.tl .c.d{background:#8E8E93;border-color:#8E8E93}
.tl .c.n{background:var(--ambar);border-color:var(--ambar)}
.tl .st.a{color:var(--ink);font-weight:600}
.search{margin:8px var(--gut) 0;height:38px;border-radius:11px;background:#E3E3E8;border:0;padding:0 12px 0 34px;font-size:17px;width:calc(100% - 32px);outline:none;display:block;text-align:left;color:#8A8A8E;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 16 16'%3E%3Ccircle cx='7' cy='7' r='5.2' stroke='%238A8A8E' stroke-width='1.8' fill='none'/%3E%3Cpath d='M11 11l3.5 3.5' stroke='%238A8A8E' stroke-width='1.8' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:11px 11px}
input.search{color:var(--ink);cursor:text}
.search.ic{width:34px;height:34px;margin:0;padding:0;border-radius:50%;background-color:#E3E3E8;background-position:center;flex:0 0 auto;position:relative}
.search.ic::after{content:"";position:absolute;inset:-5px}
.search.ic:active{background-color:#D1D1D6}
.empty{padding:22px 16px;color:var(--mute);font-size:15px;text-align:center}
.sel{appearance:none;-webkit-appearance:none;background:var(--fill);border:0;border-radius:10px;height:38px;padding:0 12px;font-size:17px;font-weight:600;max-width:210px;text-align:right;text-align-last:right;cursor:pointer;min-width:0}
.chips{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:14px var(--gut) 0}
.chip{border-radius:14px;padding:12px;color:#fff;min-height:74px;display:flex;flex-direction:column;justify-content:space-between;border:0;text-align:left;cursor:pointer;box-shadow:var(--sh)}
.chip:active{opacity:.8}
.chip span{font-size:13px;font-weight:600;opacity:.92}
.chip b{font-size:22px;font-weight:700;letter-spacing:-.5px;font-variant-numeric:tabular-nums;overflow-wrap:anywhere}
.chip b small{font-size:13px;font-weight:600;margin-left:2px}
.chip.claro{color:#5A4A2A}
.sw{width:51px;height:31px;border-radius:16px;background:#E9E9EA;border:0;position:relative;cursor:pointer;flex:0 0 auto;transition:background .2s}
.sw::after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 2px 4px rgba(0,0,0,.2);transition:transform .2s}
.sw.on{background:#34C759}
.sw.on::after{transform:translateX(20px)}
.tx{width:100%;min-height:80px;border:0;background:var(--fill);border-radius:10px;padding:10px 12px;font-size:17px;outline:none;resize:none}
.anul{margin:14px var(--gut) 0;padding:10px 14px;border-radius:12px;background:#EDEDF0;color:var(--mute);font-size:15px}

/* ---------- pestañas: abajo en el teléfono ---------- */
.tabs{flex:0 0 auto;order:2;height:calc(56px + var(--bot));padding-bottom:var(--bot);border-top:.5px solid rgba(0,0,0,.12);display:flex;justify-content:space-around;padding-top:10px;background:rgba(249,249,249,.94);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}
.tabs .marca{display:none}
.tabs button{background:none;border:0;display:flex;flex-direction:column;align-items:center;gap:3px;font-size:11px;line-height:13px;color:#7C7C80;width:70px;cursor:pointer;font-weight:500;transition:color .15s var(--ease)}
.tabs button.on{color:var(--blue)}
.tabs svg{width:28px;height:28px}
#app.modal .tabs{display:none}

/* ---------- hoja, avisos ---------- */
.sheet-bg{position:fixed;inset:0;background:rgba(0,0,0,.3);display:flex;align-items:flex-end;justify-content:center;z-index:20;animation:f .18s ease-out}
.sheet{width:100%;max-width:520px;background:var(--bg);border-radius:16px 16px 0 0;padding:8px 0 calc(20px + var(--bot));animation:u .24s cubic-bezier(.2,.8,.2,1)}
.sheet .card{margin-top:6px}
.grab{width:36px;height:5px;border-radius:3px;background:#D1D1D6;margin:0 auto 8px}
@keyframes f{from{opacity:0}}@keyframes u{from{transform:translateY(60px);opacity:.5}}
.toast{position:fixed;left:16px;right:16px;margin:0 auto;width:fit-content;bottom:calc(var(--bot) + 88px);background:rgba(28,28,30,.92);color:#fff;font-size:15px;padding:10px 16px;border-radius:14px;z-index:30;animation:f .2s;max-width:calc(100% - 32px);display:flex;align-items:center;gap:14px}
.toast button{background:none;border:0;color:#5AC8FA;font-weight:600;font-size:15px;cursor:pointer;padding:4px 0;white-space:nowrap}

/* ---------- entrada: instalar y clave ---------- */
.entrada{flex:1;overflow-y:auto;display:flex;flex-direction:column;align-items:center;padding:calc(var(--top) + 48px) 0 calc(var(--bot) + 24px)}
.entrada .col{max-width:440px}
.logo{width:88px;height:88px;border-radius:20px;box-shadow:var(--sh);display:block;margin:0 auto 14px}
.entrada h1{text-align:center;font-size:34px;font-weight:700;letter-spacing:.3px}
.entrada .de{text-align:center;color:var(--mute);font-size:15px;margin-top:2px}
.pasos{list-style:none;counter-reset:p}
.pasos li{counter-increment:p;display:flex;align-items:center;gap:12px;min-height:56px;margin:0 16px;border-bottom:.5px solid var(--line);font-size:17px}
.pasos li:last-child{border-bottom:0}
.pasos li::before{content:counter(p);width:26px;height:26px;border-radius:50%;background:var(--blue);color:#fff;font-size:15px;font-weight:600;display:flex;align-items:center;justify-content:center;flex:0 0 auto}
.pasos svg{vertical-align:-4px;margin:0 2px}
.clave{width:100%;height:50px;border-radius:12px;border:0;background:var(--fill);padding:0 14px;font-size:17px;outline:none}
.clave:focus{box-shadow:0 0 0 2px var(--blue);background:#fff}

/* ---------- escritorio: barra lateral y columna centrada ---------- */
@media (min-width:900px){
  #app{flex-direction:row}
  .tabs{order:0;flex:0 0 232px;width:232px;height:auto;flex-direction:column;justify-content:flex-start;align-items:stretch;gap:2px;padding:calc(var(--top) + 18px) 12px 18px;border-top:0;border-right:.5px solid rgba(0,0,0,.1);background:rgba(246,246,248,.96)}
  .tabs .marca{display:flex;align-items:center;gap:10px;padding:4px 10px 18px;font-size:19px;font-weight:700;letter-spacing:.2px}
  .tabs .marca img{width:30px;height:30px;border-radius:7px}
  .tabs button{flex-direction:row;width:auto;gap:12px;font-size:15px;padding:0 12px;height:40px;border-radius:10px;color:var(--ink)}
  .tabs button svg{width:22px;height:21px;color:#8E8E93}
  .tabs button:hover{background:rgba(0,0,0,.04)}
  .tabs button.on{background:rgba(0,122,255,.12);color:var(--blue)}
  .tabs button.on svg{color:var(--blue)}
  #app.modal .tabs{display:flex}
  .sb{height:calc(var(--top) + 14px)}
  .sb.raiz{height:calc(var(--top) + 40px)}
  .scroll{padding-bottom:48px}
  .sheet-bg{align-items:center}
  .sheet{border-radius:16px;max-width:420px;padding-bottom:16px}
  .sheet .grab{display:none}
  .foot{background:none}
  .toast{bottom:28px;left:232px}
}
@media (min-width:1280px){
  .col.ancha{max-width:1080px}
  .g2{display:grid;grid-template-columns:1fr 1fr;align-items:start}
  .g2>.card:first-child{grid-row:span 2}
  .g2.ini>.card:nth-child(2){margin-top:14px}
  .leg div,.leg b{font-size:15px}
  .leg .dot{width:9px;height:9px;margin-right:5px}
  .row.ord,.row.cob{font-size:17px}
  .row.ord .c3{grid-template-columns:76px 132px 1fr}
  .row.ord .c3>span:last-child{text-align:left}
  .pill{font-size:15px;line-height:18px;padding:4px 13px}
}
@media (max-width:400px){
  .row.ord .c3{grid-template-columns:minmax(54px,auto) 1fr auto}.row.ord .pc{flex-basis:98px}
}
@media (max-width:360px){
  :root{--gut:16px}
  .kpi.m{font-size:42px}
  .row.ord{font-size:14px}.row.ord .c3{grid-template-columns:52px 1fr auto}.row.ord .pc{flex-basis:auto}
  .row.ord .pill{font-size:12px;padding:3px 9px}
  .leg{padding-left:8px;padding-right:8px}
  .in.w{width:150px}
}
@media (hover:hover){
  button.row:hover{background:rgba(0,0,0,.018)}
}

/* ---------- movimiento: solo cambios de estado, 150–250 ms ---------- */
button.row,.btn,.lnk,.circ,.search.ic,.chip{transition:background-color .15s var(--ease),opacity .15s var(--ease),color .15s var(--ease)}
.seg button{transition:background-color .2s var(--ease),box-shadow .2s var(--ease)}
.in,.clave{transition:box-shadow .15s var(--ease),background-color .15s var(--ease)}
.circ:active{transform:scale(.94);transition:transform .15s var(--ease)}
::selection{background:rgba(0,122,255,.22)}
input,textarea{caret-color:var(--blue)}
button:focus-visible{outline:2px solid var(--blue);outline-offset:2px}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:1ms!important;transition-duration:1ms!important}
}
