/* Portal EOS · Capillas Moreh — estilo inspirado en las guías de interfaz de Apple (iOS / macOS).
   Tipografía del sistema, fondos agrupados, azul del sistema para acciones y modo oscuro automático.
   Las variables --olive/--gold/--terra/--grey/--xpale/--gpale/--opale se conservan porque app.js las usa en gráficas:
   ahora significan verde/naranja/rojo/gris del sistema (semáforo), no colores de marca. */
:root{
  color-scheme:light dark;
  --bg:#f2f2f7;--card:#fff;--card2:#f9f9fb;--ink:#1d1d1f;--muted:#6e6e73;--faint:#8e8e93;--line:#d8d8dd;--sep:rgba(60,60,67,.14);
  --fill:#e9e9ee;--fill2:rgba(118,118,128,.12);
  --blue:#007aff;--blue-ink:#0066d6;--blue-tint:rgba(0,122,255,.1);
  --green:#34c759;--green-ink:#248a3d;--green-tint:rgba(52,199,89,.14);
  --orange:#ff9500;--orange-ink:#c93400;--orange-tint:rgba(255,149,0,.15);
  --red:#ff3b30;--red-ink:#d70015;--red-tint:rgba(255,59,48,.12);
  --gray:#8e8e93;--gray-tint:rgba(142,142,147,.14);
  --bar:rgba(249,249,251,.92);--side:rgba(242,242,247,.86);--shadow:0 1px 2px rgba(0,0,0,.04),0 8px 24px rgba(0,0,0,.06);
  --olive:var(--green);--gold:var(--orange);--terra:var(--red);--grey:var(--gray);--xpale:var(--fill);--gpale:var(--orange-tint);--opale:var(--green-tint);
  --c-media:#ffcc00;--c-done:#a6d9b3;--c-rev:#636366;--c-pale:#c7c7cc;--c-low:#ffb3ad;
  --r-lg:14px;--r-md:10px;--r-sm:8px;--tab-h:56px;
}
@media (prefers-color-scheme:dark){:root{
  --bg:#000;--card:#1c1c1e;--card2:#2c2c2e;--ink:#f5f5f7;--muted:#98989d;--faint:#8e8e93;--line:#38383a;--sep:rgba(84,84,88,.6);
  --fill:#2c2c2e;--fill2:rgba(118,118,128,.24);
  --blue:#0a84ff;--blue-ink:#409cff;--blue-tint:rgba(10,132,255,.2);
  --green:#30d158;--green-ink:#30d158;--green-tint:rgba(48,209,88,.2);
  --orange:#ff9f0a;--orange-ink:#ffb340;--orange-tint:rgba(255,159,10,.2);
  --red:#ff453a;--red-ink:#ff6961;--red-tint:rgba(255,69,58,.22);
  --gray:#8e8e93;--gray-tint:rgba(142,142,147,.24);
  --bar:rgba(22,22,24,.92);--side:rgba(28,28,30,.82);--shadow:none;
  --c-media:#ffd60a;--c-done:#2f6b3e;--c-rev:#8e8e93;--c-pale:#48484a;--c-low:#7a2c27;
}}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
html,body{margin:0;min-width:0}
html{overflow-x:hidden}
body{overflow-x:clip}
body{font-family:-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Segoe UI",system-ui,Roboto,"Helvetica Neue",Arial,sans-serif;
  background:var(--bg);color:var(--ink);font-size:0.9375rem;line-height:1.4;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  font-feature-settings:"tnum" 0}
button,input,select,textarea{font:inherit;color:inherit}
button{cursor:pointer;-webkit-tap-highlight-color:transparent}
a{color:var(--blue)}
:focus-visible{outline:3px solid color-mix(in srgb,var(--blue) 55%,transparent);outline-offset:2px;border-radius:6px}
.icon{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round;flex:none}

/* ------------------------------------------------------------ estructura (computadora) */
.app{width:100%;min-height:100vh;display:flex}
.side{position:fixed;inset:0 auto 0 0;width:248px;background:var(--side);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);
  border-right:1px solid var(--sep);padding:22px 12px 16px;display:flex;flex-direction:column;z-index:20}
.main{width:calc(100% - 248px);margin-left:248px;padding:0 32px 64px;min-width:0}
.wrap{width:100%;max-width:1180px;margin:auto}
.brand{padding:4px 10px 22px}
.brand-name{font-size:1.25rem;font-weight:700;letter-spacing:-.02em}
.brand-sub{font-size:0.8125rem;color:var(--muted);margin-top:1px}
.nav{display:grid;gap:2px}
.nav button{border:0;background:transparent;color:var(--ink);text-align:left;border-radius:var(--r-sm);padding:8px 10px;display:flex;gap:10px;align-items:center;font-size:0.9375rem;font-weight:500}
.nav button .icon{color:var(--blue)}
.nav button.active{background:var(--blue);color:#fff}
.nav button.active .icon{color:#fff}
.profile{margin-top:auto;padding:14px 10px 0;border-top:1px solid var(--sep)}
.profile-name{font-size:0.875rem;font-weight:600}
.profile-role{font-size:0.75rem;color:var(--muted);margin-top:2px}
.profile .btn{margin-top:10px}

.top{position:sticky;top:0;z-index:15;display:flex;justify-content:space-between;gap:16px;align-items:center;margin:0 -32px 8px;padding:12px 32px;
  background:transparent;box-shadow:0 1px 0 transparent;transition:background-color .2s ease,box-shadow .2s ease}
.top.scrolled{background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);box-shadow:0 .5px 0 var(--sep)}
.navtitle{display:none}
.stamp{font-size:0.8125rem;color:var(--muted)}
.operation{font-size:0.8125rem;color:var(--ink);font-weight:600;margin-top:1px}
.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.top label{display:flex;align-items:center;gap:6px;font-size:0.8125rem;color:var(--muted);font-weight:500}
.select{appearance:none;-webkit-appearance:none;font-size:0.875rem;color:var(--ink);background:var(--fill2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5 6 7.5 9 4.5' fill='none' stroke='%238e8e93' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") no-repeat right 8px center/12px;
  border:0;border-radius:var(--r-sm);padding:7px 28px 7px 10px;min-height:34px;max-width:100%}
label{font-size:0.8125rem;color:var(--muted)}
.avatar{display:none}

/* ------------------------------------------------------------ botones */
.btn{border:0;background:var(--fill2);color:var(--blue);padding:8px 14px;border-radius:var(--r-sm);font-size:0.9375rem;font-weight:500;display:inline-flex;gap:6px;align-items:center;justify-content:center;text-decoration:none;min-height:36px;white-space:nowrap}
.btn.primary{background:var(--blue);color:#fff;font-weight:600}
.btn.danger{color:var(--red)}
.btn:disabled{opacity:.45;cursor:default}
.iconbtn{border:0;background:var(--fill2);color:var(--muted);width:30px;height:30px;border-radius:50%;display:grid;place-items:center;padding:0}
.backlink{border:0;background:none;color:var(--blue);font-size:1.0625rem;padding:6px 0;display:inline-flex;align-items:center;gap:2px;margin-left:-4px}
.backlink .icon{width:22px;height:22px;stroke-width:2.3}

/* ------------------------------------------------------------ tipografía y bloques */
.heading{display:flex;justify-content:space-between;align-items:flex-end;gap:18px;margin:22px 0 18px}
.eyebrow{font-size:0.8125rem;font-weight:500;color:var(--muted);margin:0;letter-spacing:0;text-transform:none}
.heading h1{font-size:2.125rem;font-weight:700;letter-spacing:-.022em;line-height:1.12;margin:2px 0 0}
.card{background:var(--card);border-radius:var(--r-lg);min-width:0;box-shadow:var(--shadow)}
.panel{padding:18px 18px}
.section-title{font-size:1.1875rem;font-weight:600;letter-spacing:-.01em;margin:0}
.subtle{font-size:0.8125rem;color:var(--muted);margin:4px 0}
.empty{font-size:0.875rem;color:var(--muted);padding:18px 0;text-align:center}
.empty-state{padding:48px 24px;text-align:center;color:var(--muted);font-size:0.9375rem}
.muted{color:var(--muted)}.small{font-size:0.75rem}
.readonly-note{font-size:0.75rem;color:var(--muted)}
.notice{background:var(--fill2);color:var(--ink);border-radius:var(--r-md);padding:10px 14px;font-size:0.875rem;margin:0 0 14px}
.notice.bad{background:var(--red-tint)}

/* etiquetas de estado (semáforo) */
.tag{display:inline-flex;align-items:center;gap:5px;border-radius:99px;padding:3px 9px;font-size:0.75rem;font-weight:600;white-space:nowrap;line-height:1.35}
.dot{width:7px;height:7px;background:currentColor;border-radius:50%}
.tag.ok{background:var(--green-tint);color:var(--green-ink)}
.tag.warn{background:var(--orange-tint);color:var(--orange-ink)}
.tag.bad{background:var(--red-tint);color:var(--red-ink)}
.tag.none{background:var(--gray-tint);color:var(--muted)}

/* ------------------------------------------------------------ inicio */
.pending{margin-bottom:22px}
.pending-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:16px 18px 6px}
.pending-list{list-style:none;margin:0;padding:0 0 6px}
.pending-list li{display:flex;align-items:center;gap:12px;padding:10px 18px;border-top:1px solid var(--sep)}
.pending-list li:first-child{border-top:0}
.pending-list .what{flex:1;min-width:0}
.pending-list .what b{display:block;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pending-list .what span{font-size:0.8125rem;color:var(--muted)}
.linkbtn{border:0;background:none;color:var(--blue);font-size:0.9375rem;padding:4px 0}

.summary{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-bottom:22px}
.summary a{padding:16px 16px 14px;color:inherit;text-decoration:none;display:flex;flex-direction:column}
.summary .eyebrow{font-size:0.9375rem;font-weight:600;color:var(--ink)}
.summary-number{font-size:2.125rem;font-weight:700;letter-spacing:-.02em;margin:6px 0 2px;line-height:1.05;font-variant-numeric:tabular-nums}
.summary-number .subtle{font-size:0.9375rem !important;font-weight:500;letter-spacing:0}
.summary-detail{font-size:0.8125rem;color:var(--muted);margin:4px 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.summary-items{display:grid;gap:3px;margin:8px 0 0;min-height:36px}
.summary-items div{font-size:0.8125rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.summary-chips{display:flex;gap:4px;overflow:hidden;margin:6px 0 2px}
.summary-meter{height:6px;display:flex;overflow:hidden;border-radius:99px;background:var(--fill);margin:8px 0 6px;gap:2px}
.summary-meter i{display:block;height:100%;min-width:0;border-radius:99px}
.summary-meter .meter-good{background:var(--green)}
.summary-meter .meter-warn{background:var(--orange)}
.summary-meter .meter-bad{background:var(--red)}
.summary-meter .meter-none{background:var(--c-pale)}
.go{font-size:0.875rem;color:var(--blue);font-weight:500;margin-top:auto;padding-top:10px;display:flex;align-items:center;gap:4px}
.go .icon{width:14px;height:14px}

/* tablas -> listas agrupadas */
.table-wrap{overflow:auto;-webkit-overflow-scrolling:touch}
.table{width:100%;border-collapse:collapse;font-size:0.875rem;min-width:720px}
.table th{text-align:left;color:var(--muted);font-size:0.75rem;font-weight:600;padding:10px 12px;border-bottom:1px solid var(--sep)}
.table td{padding:12px;border-bottom:1px solid var(--sep);vertical-align:middle}
.table tbody tr:last-child td{border-bottom:0}
.table td .subtle{font-size:0.8125rem}
.rowlink{border:0;background:none;padding:0;text-align:left;color:var(--ink);font:inherit;font-weight:600;cursor:pointer}

/* tablero */
.board-title{margin:30px 0 12px}
.board-title .section-title{font-size:1.375rem !important;font-weight:700}
.board{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:14px}
.chart{grid-column:span 6;padding:16px 18px;background:var(--card);border-radius:var(--r-lg);box-shadow:var(--shadow);text-align:left;color:var(--ink);cursor:pointer;display:flex;flex-direction:column;min-width:0;border:0;font:inherit}
.chart.wide{grid-column:span 12}
.chart .section-title{font-size:1.0625rem}
.reading{font-size:0.8125rem;color:var(--muted);min-height:34px;line-height:1.35;margin:4px 0 10px}
.chartbody{min-height:120px;display:block;flex:1}
.chartdate{font-size:0.75rem;color:var(--faint);margin:12px 0 0}
.chart svg{display:block;width:100%;height:auto;overflow:visible}
.chart svg text{font-family:inherit}
.single{font-size:0.875rem;color:var(--muted);text-align:center}
.legend{display:flex;flex-wrap:wrap;gap:4px 12px;font-size:0.75rem;color:var(--muted);margin-top:10px}
.legend i{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:5px;vertical-align:-1px}
.hbar{display:grid;grid-template-columns:130px 1fr 48px;gap:10px;align-items:center;font-size:0.8125rem;margin:7px 0}
.hbar .lbl{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hbar .trk{height:8px;background:var(--fill);border-radius:99px;overflow:hidden;display:flex;position:relative}
.hbar .trk i{display:block;height:100%}
.hbar .num{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums}
.hbar .ref{position:absolute;top:-3px;bottom:-3px;width:2px;background:var(--ink);opacity:.45;border-radius:2px}
.c-ok{background:var(--green)}.c-warn{background:var(--orange)}.c-bad{background:var(--red)}.c-none{background:var(--gray)}.c-rev{background:var(--c-rev)}.c-pale{background:var(--c-pale)}
.heatgrid{display:grid;gap:4px;font-size:0.75rem;align-items:center}
.heatgrid .h{height:20px;border-radius:5px}
.heatgrid .lab{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.kpi-big{font-size:2.125rem;font-weight:700;letter-spacing:-.02em}

/* filtros = controles segmentados / píldoras */
.toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.filters{display:flex;gap:6px;flex-wrap:wrap}
.filter{border:0;background:var(--card);color:var(--ink);border-radius:99px;padding:7px 13px;font-size:0.875rem;font-weight:500;box-shadow:var(--shadow);white-space:nowrap}
.filter b{font-weight:600;color:var(--muted);margin-left:2px;font-variant-numeric:tabular-nums}
.filter.active{background:var(--blue);color:#fff}
.filter.active b{color:rgba(255,255,255,.8)}
.counter{font-size:0.875rem;color:var(--muted);font-weight:500}

.trend{width:100px;height:32px}
.rockgrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.rock{padding:16px 18px;display:flex;flex-direction:column}
.rock h2{font-size:1.0625rem;font-weight:600;margin:0 0 6px;line-height:1.3}
.meta{font-size:0.8125rem;color:var(--muted);margin:3px 0}
.progress{height:6px;border-radius:99px;background:var(--fill);overflow:hidden;margin:14px 0 8px}
.progress i{display:block;height:100%;background:var(--blue);border-radius:99px}
.group{margin-bottom:20px}
.group h2{font-size:0.9375rem;margin:0 0 8px}

/* ------------------------------------------------------------ detalle */
.detail-top{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-top:14px}
.detail-kicker{font-size:0.875rem;color:var(--muted);margin:14px 0 0}
.detail-title{font-size:1.875rem;font-weight:700;letter-spacing:-.02em;line-height:1.15;margin:4px 0 10px}
.chiprow{display:flex;gap:6px;flex-wrap:wrap}
.lastedit{font-size:0.8125rem;color:var(--muted);margin:10px 0 16px}
.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));background:var(--card);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--shadow)}
.field{background:var(--card);padding:12px 16px;min-width:0;border-top:1px solid var(--sep)}
.detail-grid > .field:nth-child(-n+2){border-top:0}
.detail-grid > .field:nth-child(odd){border-right:1px solid var(--sep)}
.field .eyebrow{font-size:0.8125rem}
.field b{display:block;font-size:0.9375rem;font-weight:400;margin-top:3px;overflow-wrap:anywhere}
.tabs{display:inline-flex;max-width:100%;overflow:auto;background:var(--fill2);border-radius:9px;padding:2px;margin:20px 0 16px;gap:2px;scrollbar-width:none}
.tabs::-webkit-scrollbar{display:none}
.tab{border:0;background:transparent;padding:6px 14px;color:var(--ink);font-size:0.8125rem;font-weight:500;white-space:nowrap;border-radius:7px}
.tab.active{background:var(--card);box-shadow:0 1px 3px rgba(0,0,0,.12),0 0 0 .5px rgba(0,0,0,.04);font-weight:600}
@media (prefers-color-scheme:dark){.tab.active{background:#636366}}
.editgrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.editfield{display:grid;gap:6px;min-width:0}
.editfield.full{grid-column:1/-1}
.editfield label{font-size:0.8125rem;color:var(--muted);font-weight:500}
.control{width:100%;border:0;background:var(--fill2);border-radius:var(--r-md);min-height:42px;padding:10px 12px;font-size:1rem;color:var(--ink)}
.control:focus{outline:2px solid var(--blue);outline-offset:0}
.control:disabled{opacity:.6}
.control.area{min-height:96px;resize:vertical}
select.control{appearance:none;-webkit-appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M3 4.5 6 7.5 9 4.5' fill='none' stroke='%238e8e93' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center;background-size:12px;padding-right:32px}
.edit-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px}
.history-chart{padding:16px 18px;margin-top:14px}
.history-chart svg{display:block;width:100%;height:220px}
.history-chart svg text{fill:var(--ink);font-family:inherit}
.timeline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin:14px 0}
.milestone{background:var(--card);padding:14px;border-radius:var(--r-lg);box-shadow:var(--shadow);min-height:100px;display:flex;flex-direction:column}
.milestone b{display:block;font-size:0.9375rem;font-weight:600;margin-top:4px;overflow-wrap:anywhere}
.milestone .row{display:flex;justify-content:space-between;align-items:center;gap:6px;margin-top:auto;padding-top:8px}
.mtoggle{border:0;background:var(--blue-tint);color:var(--blue);border-radius:99px;font-size:0.8125rem;font-weight:600;padding:5px 11px}
.weeks{display:grid;grid-template-columns:repeat(13,1fr);gap:4px;margin:14px 0}
.week{height:34px;background:var(--fill);border-radius:7px;display:grid;place-items:center;font-size:0.75rem;color:var(--muted);position:relative;font-variant-numeric:tabular-nums}
.week.current{outline:2px solid var(--blue);outline-offset:-2px;color:var(--blue);font-weight:700}
.week.mark{background:var(--blue-tint);color:var(--blue);font-weight:600}
.week.mark.done{background:var(--green);color:#fff}
.week.late{background:var(--red-tint);color:var(--red-ink)}

/* calendario */
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}
.cal .dow{font-size:0.75rem;color:var(--muted);padding:4px;text-align:center}
.cal .day{min-height:88px;border-radius:var(--r-sm);padding:5px;background:var(--card2);font-size:0.6875rem;overflow:hidden}
.cal .day.out{opacity:.4}
.cal .day.today .n{background:var(--red);color:#fff;border-radius:50%;width:22px;height:22px;display:inline-grid;place-items:center}
.cal .day .n{font-weight:600;color:var(--ink);font-size:0.75rem}
.cal .ev{display:block;width:100%;text-align:left;border:0;border-radius:5px;padding:2px 5px;margin-top:3px;font-size:0.6875rem;background:var(--blue-tint);color:var(--blue);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cal .ev.bad{background:var(--red-tint);color:var(--red-ink)}
.calnav{display:flex;gap:6px;align-items:center}

/* ------------------------------------------------------------ hojas y avisos */
.modal{position:fixed;inset:0;z-index:100;background:rgba(0,0,0,0);padding:24px;display:flex;align-items:center;justify-content:center}
.modal > .panel{width:100%;max-width:560px;max-height:88vh;overflow:auto;overscroll-behavior:contain;border-radius:16px;padding:20px 22px;will-change:transform,opacity;box-shadow:0 24px 64px rgba(0,0,0,.24)}
.modal-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}
.modal .eyebrow{font-size:0.8125rem}
.sheet-grip{display:none}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);will-change:transform,opacity;z-index:200;max-width:min(420px,calc(100vw - 32px));padding:11px 18px;border-radius:99px;background:rgba(44,44,46,.94);color:#fff;font-size:0.875rem;font-weight:500;box-shadow:0 8px 30px rgba(0,0,0,.2);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px)}
.toast.ok{background:rgba(36,138,61,.95)}
.toast.bad{background:rgba(215,0,21,.95)}
@keyframes toast-in{from{opacity:0;transform:translate(-50%,10px) scale(.96)}}
.toast{animation:toast-in .32s cubic-bezier(.32,.72,0,1)}

/* perfil (hoja en celular) */
.profile-sheet .who{display:flex;gap:12px;align-items:center;margin:14px 0 18px}
.profile-sheet .who .avatar{display:grid}

/* L10 */
.l10{position:fixed;inset:0;z-index:120;background:var(--bg);padding:30px;overflow:auto}
.l10-wrap{max-width:860px;margin:auto}
.l10-block{padding:28px;min-height:360px;display:grid;align-content:center}
.timer{font-size:3.5rem;font-weight:200;color:var(--blue);margin:10px 0;font-variant-numeric:tabular-nums;letter-spacing:-.02em}
.l10-actions{display:flex;justify-content:space-between;gap:10px;margin-top:20px}
.l10 .list{display:grid;gap:6px;margin-top:10px}
.l10 .list label{display:flex;gap:10px;align-items:flex-start;font-size:0.9375rem;color:var(--ink);padding:10px 12px;border-radius:var(--r-md);background:var(--fill2)}
.l10 textarea{width:100%;min-height:80px}

.spin{animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* barra de pestañas (solo celular) */
.tabbar{display:none}

/* ------------------------------------------------------------ entrada */
.login{min-height:100vh;min-height:100dvh;display:grid;place-items:center;align-content:center;gap:18px;padding:24px}
.login-card{background:var(--card);border-radius:20px;box-shadow:var(--shadow);padding:40px 32px 32px;display:grid;gap:14px;justify-items:center;text-align:center;max-width:400px;width:100%}
.login-card h1{font-size:2.125rem;font-weight:700;letter-spacing:-.022em;line-height:1.1;margin:0}
.login-card .muted{font-size:0.9375rem}
.login-card .btn{width:100%;min-height:50px;font-size:1.0625rem;border-radius:12px}
.login .foot{font-size:0.8125rem;color:var(--muted)}
.login-mark{width:64px;height:64px;border-radius:16px;background:var(--blue);color:#fff;display:grid;place-items:center;margin-bottom:4px}
.login-mark .icon{width:34px;height:34px;stroke-width:1.8}

/* ------------------------------------------------------------ tableta */
@media (max-width:1100px){
  .summary{grid-template-columns:repeat(2,minmax(0,1fr))}
  .rockgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
  .timeline{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* ------------------------------------------------------------ celular */
@media (max-width:760px){
  body{font-size:1rem}
  .side{display:none}
  .main{width:100%;margin:0;padding:0 16px calc(var(--tab-h) + 28px + env(safe-area-inset-bottom))}
  .top{margin:0 -16px;padding:calc(8px + env(safe-area-inset-top)) 16px 8px;gap:10px}
  .top > div:first-child{min-width:0}
  .stamp{font-size:0.75rem;white-space:nowrap}
  .operation{display:none}
  .actions{flex-wrap:nowrap;gap:6px}
  .top label{font-size:0rem;gap:0}
  .top .select{font-size:1rem;max-width:150px}
  .select{font-size:1rem}
  #refresh{font-size:0rem;gap:0;width:34px;height:34px;min-height:34px;padding:0;border-radius:50%}
  #refresh .icon{width:18px;height:18px}
  .avatar{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;border:0;background:var(--blue);color:#fff;font-size:0.8125rem;font-weight:600;flex:none;padding:0}

  .heading{display:block;margin:18px 0 14px}
  .heading > :last-child:not(div){margin-top:12px}
  .heading .btn{margin-top:12px}
  .heading h1{font-size:1.875rem}
  .summary{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
  .summary a{padding:14px}
  .summary-number{font-size:1.75rem}
  .summary-items{display:none}
  .summary-chips{flex-wrap:wrap}
  .summary-detail{white-space:normal}
  .go{font-size:0.8125rem}
  .board{gap:10px}
  .chart,.chart.wide{grid-column:span 12;padding:14px 16px}
  .hbar{grid-template-columns:96px 1fr 40px}

  /* tablas como listas: cada fila es una tarjeta con etiquetas */
  .table-wrap{overflow:visible}
  .table{min-width:0 !important;font-size:0.9375rem}
  .table thead{display:none}
  .table,.table tbody,.table tr,.table td{display:block;width:100%}
  .table tr{padding:12px 0;border-bottom:1px solid var(--sep)}
  .table tbody tr:last-child{border-bottom:0}
  .table td{border:0;padding:2px 0;display:flex;gap:10px;justify-content:space-between;align-items:center;text-align:right;min-height:0}
  .table td[data-label]::before{content:attr(data-label);color:var(--muted);font-size:0.8125rem;text-align:left;flex:none;max-width:45%}
  .table td:first-child{display:block;text-align:left;font-size:1rem;padding-bottom:6px}
  .table td:first-child::before{display:none}
  .table td:empty,.table td[data-label=""]::before{display:none}
  .table td.empty{display:block;text-align:center}
  .table td.empty::before{display:none}
  .table td .btn{min-height:32px;padding:6px 12px;font-size:0.875rem}
  .card.panel:has(> .table-wrap .table){padding:4px 16px}
  .trend{width:84px}

  .toolbar{display:block}
  .filters{flex-wrap:nowrap;overflow-x:auto;margin:0 -16px 10px;padding:2px 16px 6px;scrollbar-width:none}
  .filters::-webkit-scrollbar{display:none}
  .rockgrid{grid-template-columns:1fr;gap:10px}
  .detail-top{display:block}
  .detail-top .actions{margin-top:14px}
  .detail-top .actions .btn{flex:1}
  .detail-title{font-size:1.625rem}
  .detail-grid{grid-template-columns:1fr}
  .detail-grid > .field:nth-child(odd){border-right:0}
  .detail-grid > .field:nth-child(2){border-top:1px solid var(--sep)}
  .milestone{min-height:0}
  .tabs{display:flex;margin:18px 0 14px}
  .tab{flex:1 0 auto}
  .editgrid{grid-template-columns:1fr}
  .editfield.full{grid-column:auto}
  .timeline{grid-template-columns:1fr}
  .weeks{gap:3px}
  .week{height:30px;font-size:0.6875rem;border-radius:6px}
  .history-chart svg{height:180px}
  .cal .day{min-height:56px;padding:3px}
  .cal .ev{font-size:0rem;height:6px;padding:0;margin-top:2px;background:var(--blue)}
  .cal .ev.bad{background:var(--red)}
  .calnav{margin-top:10px}

  /* hojas que suben desde abajo */
  .modal{align-items:flex-end;padding:0}
  .modal > .panel{max-width:none;border-radius:16px 16px 0 0;max-height:92vh;max-height:92dvh;padding:8px 18px calc(18px + env(safe-area-inset-bottom));box-shadow:0 -1px 0 var(--sep)}
  .sheet-grip,.modal-top{touch-action:none}
  .sheet-grip{display:block;width:36px;height:5px;border-radius:99px;background:var(--c-pale);margin:2px auto 10px}
  .modal .edit-actions{position:sticky;bottom:calc(-18px - env(safe-area-inset-bottom));background:var(--card);margin:18px -18px 0;padding:12px 18px calc(12px + env(safe-area-inset-bottom));border-top:1px solid var(--sep)}
  .modal .edit-actions .btn{flex:1;min-height:46px;font-size:1.0625rem}
  .toast{bottom:calc(var(--tab-h) + 16px + env(safe-area-inset-bottom))}

  .tabbar{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:30;height:calc(var(--tab-h) + env(safe-area-inset-bottom));padding:6px 4px env(safe-area-inset-bottom);
    background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-top:1px solid var(--sep)}
  .tabbar button{border:0;background:none;color:var(--faint);display:flex;flex-direction:column;align-items:center;gap:3px;font-size:0.625rem;font-weight:500;padding:2px 0}
  .tabbar button .icon{width:24px;height:24px;stroke-width:1.8}
  .tabbar button.active{color:var(--blue)}
  .l10{padding:16px}
  .l10-block{padding:20px;min-height:300px}
  .timer{font-size:2.875rem}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none !important;transition:none !important}}

/* ------------------------------------------------------------ refinamiento apple-design */
/* Tipografía: tamaño, interlineado y tracking como un solo conjunto (negativo al crecer, ~0 en cuerpo) */
.heading h1,.login-card h1{font-size:2.125rem;line-height:1.12;letter-spacing:-.022em}
.detail-title{line-height:1.15;letter-spacing:-.02em}
.summary-number,.kpi-big{letter-spacing:-.022em;line-height:1.05}
.board-title .section-title{letter-spacing:-.016em}
.section-title{letter-spacing:-.012em;line-height:1.25}
.chart .section-title,.rock h2,.milestone b{letter-spacing:-.01em}
body{letter-spacing:-.006em}
.eyebrow,.subtle,.meta,.reading,.stamp,.legend,.chartdate,.table th,.lastedit{letter-spacing:0}
.tag,.tabbar button{letter-spacing:.006em}
.timer{letter-spacing:-.03em}

/* Respuesta: retroalimentación al presionar, instantánea; sin retraso de toque */
button,a,.chart,.summary a,[role=button]{touch-action:manipulation}
.btn,.filter,.mtoggle,.iconbtn,.avatar,.linkbtn,.backlink,.tab,.nav button,.summary a,.chart,.rock,.cal .ev{transition:transform .1s ease-out,background-color .15s ease,opacity .1s ease-out}
.btn:active,.filter:active,.mtoggle:active,.iconbtn:active,.avatar:active{transform:scale(.97)}
.summary a:active,.chart:active,.rock:active{transform:scale(.985)}
.linkbtn:active,.backlink:active,.rowlink:active,.tab:active{opacity:.5}
.tabbar button{transition:color .15s ease,transform .1s ease-out}
.tabbar button:active{transform:scale(.92)}
.tabbar button.active .icon{fill:currentColor;fill-opacity:.18}
.nav button:active{background:var(--fill2)}
.nav button.active:active{background:var(--blue)}
.table tr.data:active{background:var(--fill2)}

/* Hover solo con mouse o trackpad */
@media (hover:hover) and (pointer:fine){
  .nav button:not(.active):hover{background:var(--fill2)}
  .btn:hover{background:color-mix(in srgb,var(--fill2) 70%,var(--ink) 8%)}
  .btn.primary:hover{background:var(--blue-ink)}
  .filter:not(.active):hover{background:var(--card2)}
  .summary a:hover,.chart:hover{box-shadow:0 1px 2px rgba(0,0,0,.05),0 12px 32px rgba(0,0,0,.09)}
  .table tr.data:hover{background:var(--fill2)}
  .rowlink:hover{color:var(--blue)}
}

/* Materiales: la barra de pestañas es una capa translúcida con borde superior que capta la luz */
.tabbar{box-shadow:inset 0 .5px 0 var(--sep)}

/* Navegación: el detalle entra desde la derecha y sale por el mismo camino */
#root{view-transition-name:content}
::view-transition-old(root),::view-transition-new(root){animation:none}
::view-transition-group(content){animation:none}
::view-transition-old(content),::view-transition-new(content){height:100%;object-fit:none;object-position:top}
html[data-nav] ::view-transition-old(content){animation:vt-fade-out .16s ease-out both}
html[data-nav] ::view-transition-new(content){animation:vt-fade-in .2s ease-out both}
@keyframes vt-fade-out{to{opacity:0}}
@keyframes vt-fade-in{from{opacity:0}}
@media (max-width:760px){
  html[data-nav=push] ::view-transition-old(content){animation:vt-out-left .42s cubic-bezier(.32,.72,0,1) both}
  html[data-nav=push] ::view-transition-new(content){animation:vt-in-right .42s cubic-bezier(.32,.72,0,1) both}
  html[data-nav=pop] ::view-transition-old(content){animation:vt-out-right .42s cubic-bezier(.32,.72,0,1) both}
  html[data-nav=pop] ::view-transition-new(content){animation:vt-in-left .42s cubic-bezier(.32,.72,0,1) both}
  /* título compacto en la barra cuando el título grande ya pasó por debajo */
  .navtitle{display:block;position:absolute;left:50%;top:calc(50% + env(safe-area-inset-top) / 2);transform:translate(-50%,-50%);max-width:44%;
    font-size:1.0625rem;font-weight:600;letter-spacing:-.024em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;opacity:0;transition:opacity .2s ease;pointer-events:none}
  .top.titled .navtitle{opacity:1}
  .top.titled .stamp{opacity:0}
  .stamp{transition:opacity .2s ease}
  body{font-size:1.0625rem;letter-spacing:-.024em}
}
@keyframes vt-in-right{from{transform:translateX(100%)}}
@keyframes vt-out-left{to{transform:translateX(-28%);opacity:.5}}
@keyframes vt-out-right{to{transform:translateX(100%)}}
@keyframes vt-in-left{from{transform:translateX(-28%);opacity:.5}}

/* Accesibilidad: transparencia reducida y alto contraste */
@media (prefers-reduced-transparency:reduce){
  :root{--bar:var(--bg);--side:var(--bg)}
  .top.scrolled,.tabbar,.side,.toast{-webkit-backdrop-filter:none;backdrop-filter:none}
}
@media (prefers-contrast:more){
  :root{--sep:rgba(0,0,0,.45);--muted:#3a3a3c;--fill2:rgba(118,118,128,.24)}
  .card,.chart,.filter,.control,.detail-grid{outline:1px solid var(--sep)}
}
@media (prefers-contrast:more) and (prefers-color-scheme:dark){:root{--sep:rgba(255,255,255,.5);--muted:#d1d1d6}}
@media (prefers-reduced-motion:reduce){
  ::view-transition-old(content),::view-transition-new(content){animation:none !important}
  .btn:active,.filter:active,.summary a:active,.chart:active,.tabbar button:active{transform:none}
}

/* Filtro de área bajo el título (celular) y título compacto en lugar del sello de hora */
.areapick{display:none}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
@media (max-width:760px){
  .top label{display:none}
  .top > div:first-child{flex:1;min-width:0}
  .areapick{display:inline-flex;margin-top:12px}
  .areapick .select{background-color:var(--card);box-shadow:var(--shadow);max-width:none;font-weight:500;color:var(--blue)}
  .navtitle{position:static;transform:none;max-width:none;flex:1;min-width:0;text-align:left;display:none;opacity:1}
  .top.titled > div:first-child{display:none}
  .top.titled .navtitle{display:block}
}
