:root {
  --ink: #000f3f;
  --muted: #66708b;
  --paper: #f6f5ed;
  --card: #fffefa;
  --sheet: #fffefa;
  --radius: 16px;
  --sheet-bg-image: none;
  --line: #dfe1d8;
  --accent: #b6c85c;
  --accent-strong: #9dab4f;
  --danger: #a3463e;
  --warning: #b37a11;
  --success: #3f8c5b;
  --sidebar: #000f3f;
  --shadow: 0 14px 35px rgba(0, 15, 63, .06);
  --tusk-green: #b6c85c;
  --tusk-navy: #000f3f;
  --tusk-cream: #fffae5;
}

/* Calendario de cobranza en el panel general. */
.receivables-panel { margin-bottom: 19px; overflow: hidden; }
.receivables-panel .panel-head { align-items: center; }
.receivable-summary { display: flex; flex-wrap: wrap; gap: 10px; padding: 0 24px 17px; font-size: 13px; }
.receivable-summary > span { padding: 9px 13px; border-radius: 9px; background: rgba(0,15,63,.05); }
.receivable-summary strong { font-size: 17px; }
.receivable-summary b { font-weight: 850; }
.receivable-summary .receivable-overdue-summary { color: #a33232; background: #fff0ed; }
.receivable-layout { display: grid; grid-template-columns: minmax(450px,1.25fr) minmax(320px,1fr); gap: 22px; padding: 0 24px 20px; }
.receivable-calendar { display: grid; grid-template-columns: repeat(7,minmax(0,1fr)); gap: 5px; align-content: start; }
.receivable-weekday { padding: 4px; text-align: center; color: var(--muted); font-size: 11px; font-weight: 800; }
.receivable-day { min-width: 0; min-height: 76px; display: flex; flex-direction: column; gap: 2px; padding: 8px; border: 1px solid var(--line); border-radius: 9px; color: var(--ink); background: #fff; text-align: left; }
.receivable-day > span { font-size: 13px; font-weight: 800; }
.receivable-day b,.receivable-day small { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 10px; }
.receivable-day small { color: var(--muted); }
.receivable-day.has-invoices { border-color: #a8b76b; background: #f4f7e8; }
.receivable-day.is-scheduled { border-color: #dec48e; background: #fff8e8; }
.receivable-day.is-late { border-color: #d59087; color: #9b2929; background: #fff0ed; }
.receivable-day.is-late small { color: #9b2929; }
.receivable-day.is-today { box-shadow: inset 0 0 0 2px var(--tusk-navy); }
.receivable-day.is-selected { outline: 2px solid var(--tusk-navy); outline-offset: 1px; }
.receivable-day[role="button"],button.receivable-day { cursor: pointer; }
.receivable-list-title { min-height: 34px; display: flex; justify-content: space-between; align-items: center; gap: 10px; margin-bottom: 7px; }
.receivable-list-title h3 { font-size: 15px; }
.receivable-list { max-height: 495px; overflow-y: auto; }
.receivable-item { width: 100%; display: grid; grid-template-columns: 85px minmax(0,1fr) auto; gap: 12px; align-items: center; padding: 11px; border: 0; border-bottom: 1px solid var(--line); color: var(--ink); background: transparent; text-align: left; }
.receivable-item:hover { background: rgba(0,15,63,.04); }
.receivable-item.is-late { border-left: 3px solid #cb5148; color: #9b2929; background: #fff7f5; }
.receivable-item.is-scheduled { border-left: 3px solid #c89438; background: #fffaf0; }
.receivable-date { font-size: 11px; font-weight: 800; }
.receivable-detail { min-width: 0; }
.receivable-detail strong,.receivable-detail small,.receivable-amount strong,.receivable-amount small { display: block; }
.receivable-detail small { color: var(--muted); overflow-wrap: anywhere; font-size: 11px; }
.receivable-amount { text-align: right; white-space: nowrap; }
.receivable-amount small { color: var(--muted); font-size: 10px; }
.receivable-item.is-late .receivable-amount small { color: #9b2929; }
.receivable-billing { padding: 16px 24px 18px; border-top: 1px solid var(--line); border-bottom: 1px solid var(--line); background: rgba(182,200,92,.055); }
.receivable-billing h3 { margin-bottom: 3px; font-size: 15px; }
.receivable-billing h3 span { color: var(--muted); }
.receivable-section-note { margin: 0 0 9px; color: var(--muted); font-size: 11px; }
.receivable-prior { padding: 16px 24px 23px; border-top: 1px solid var(--line); }
.receivable-prior h3 { margin-bottom: 9px; font-size: 15px; }
.receivable-prior h3 span { color: #a33232; }
.receivable-prior-list { max-height: 290px; overflow-y: auto; }
.receivable-clear { color: var(--muted); font-size: 12px; }
@media (max-width: 1100px) { .receivable-layout { grid-template-columns: 1fr; }.receivable-day { min-height: 69px; } }
@media (max-width: 620px) { .receivable-summary { padding: 0 16px 13px; }.receivable-billing { padding: 14px 16px 16px; }.receivable-layout { padding: 0 16px 16px; gap: 14px; }.receivable-day { min-height: 53px; padding: 5px; }.receivable-day b,.receivable-day small { font-size: 8px; }.receivable-prior { padding: 14px 16px 18px; }.receivable-item { grid-template-columns: 72px minmax(0,1fr); gap: 6px; }.receivable-amount { grid-column: 2; text-align: left; } }

/* Correo desde oportunidades del CRM. */
.crm-mail-dialog { width: min(960px, calc(100vw - 24px)); }
.crm-mail-dialog .dialog-body { max-height: min(68vh, 740px); overflow-y: auto; }
.crm-mail-toolbar { display: flex; flex-wrap: wrap; gap: 8px; margin: 15px 0 10px; }
.crm-mail-toolbar input { flex: 1 1 250px; min-width: 0; padding: 9px 11px; border: 1px solid var(--line); border-radius: 8px; }
.crm-mail-opportunities { max-height: 340px; overflow-y: auto; margin-bottom: 20px; border: 1px solid var(--line); border-radius: 10px; }
.crm-mail-row { display: grid; grid-template-columns: minmax(190px, 1.2fr) minmax(190px, 1fr) minmax(160px, .75fr); gap: 10px; align-items: center; padding: 10px 12px; border-bottom: 1px solid var(--line); }
.crm-mail-row:last-child { border-bottom: 0; }
.crm-mail-row:nth-child(even) { background: rgba(0,15,63,.025); }
.crm-mail-row.needs-email { border-left: 3px solid #bd4c44; background: #fff5f2; }
.crm-mail-row label { min-width: 0; display: flex; align-items: flex-start; gap: 9px; cursor: pointer; }
.crm-mail-row label input { width: 18px; height: 18px; flex: none; }
.crm-mail-row label span { min-width: 0; }
.crm-mail-row strong,.crm-mail-row small { display: block; overflow-wrap: anywhere; }
.crm-mail-row small { color: var(--muted); font-size: 11px; }
.crm-mail-row select,.crm-mail-row input[type="email"] { min-width: 0; width: 100%; padding: 8px; border: 1px solid var(--line); border-radius: 8px; background: #fff; }
.crm-mail-compose { display: grid; gap: 10px; margin: 15px 0; }
.crm-mail-dialog .field { margin: 10px 0; }
.crm-mail-dialog textarea { width: 100%; }
@media (max-width: 750px) { .crm-mail-row { grid-template-columns: 1fr; gap: 7px; }.crm-mail-dialog .dialog-actions { flex-wrap: wrap; }.crm-mail-dialog .dialog-actions-right { flex-wrap: wrap; } }

* { box-sizing: border-box; }
html { min-height: 100%; background: var(--paper); }
img { display: block; max-width: 100%; height: auto; }
body {
  margin: 0;
  min-height: 100vh;
  color: var(--ink);
  background: radial-gradient(circle at 94% 0%, rgba(182, 200, 92, .19), transparent 28rem), var(--paper);
  font: 14px/1.45 Montserrat, "Avenir Next", Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
}
body.busy { cursor: progress; }
body.busy button { pointer-events: none; }
button, input, select, textarea { font: inherit; }
button { cursor: pointer; }
[hidden] { display: none !important; }

.login-screen {
  min-height: 100vh;
  min-height: 100dvh;
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(430px, .85fr);
  background: var(--tusk-navy);
  font-family: Montserrat, Arial, sans-serif;
}
.login-art {
  position: relative;
  min-width: 0;
  min-height: 100%;
  padding: clamp(32px, 4.5vw, 72px);
  display: flex;
  flex-direction: column;
  overflow: hidden;
  color: var(--tusk-cream);
  background:
    radial-gradient(circle at 78% 31%, rgba(182, 200, 92, .18), transparent 24rem),
    linear-gradient(145deg, rgba(255, 250, 229, .035), transparent 52%),
    var(--tusk-navy);
}
.login-art::before,
.login-art::after {
  content: "";
  position: absolute;
  pointer-events: none;
}
.login-art::before {
  width: 58vw;
  height: 58vw;
  right: -28vw;
  top: 12vh;
  border: 1px solid rgba(182, 200, 92, .2);
  border-radius: 50%;
}
.login-art::after {
  width: 1px;
  height: 145%;
  right: 27%;
  top: -25%;
  background: linear-gradient(transparent, rgba(182, 200, 92, .38), transparent);
  transform: rotate(38deg);
  transform-origin: center;
}
.login-art-top,
.login-art-footer,
.login-art-copy { position: relative; z-index: 2; }
.login-art-top,
.login-art-footer { display: flex; align-items: center; justify-content: space-between; gap: 24px; }
.login-art-logo {
  width: clamp(128px, 11vw, 178px);
  max-width: 178px;
  height: auto;
  flex: 0 0 auto;
}
.login-edition { color: rgba(255, 250, 229, .55); font-size: 10px; font-weight: 800; letter-spacing: .18em; text-transform: uppercase; }
.login-art-copy { max-width: 760px; margin: auto 0; padding: clamp(70px, 12vh, 150px) 0; }
.login-art-copy p { margin-bottom: 21px; color: var(--tusk-green); font-size: 11px; font-weight: 900; letter-spacing: .22em; text-transform: uppercase; }
.login-art-copy h2 { max-width: 790px; color: var(--tusk-cream); font-family: "Glacial Indifference", Montserrat, Arial, sans-serif; font-size: clamp(54px, 6vw, 96px); font-weight: 850; line-height: .92; letter-spacing: -.065em; }
.login-art-copy > span { display: block; max-width: 460px; margin-top: 29px; color: rgba(255, 250, 229, .68); font-size: 15px; line-height: 1.65; }
.login-monogram {
  position: absolute;
  z-index: 1;
  width: min(36vw, 480px);
  max-width: 480px;
  height: auto;
  right: clamp(-148px, -8vw, -74px);
  bottom: clamp(-150px, -12vh, -74px);
  border-radius: 32px;
  opacity: .14;
  mix-blend-mode: screen;
  transform: rotate(-3deg);
  user-select: none;
}
.login-art-footer { padding-top: 23px; border-top: 1px solid rgba(255, 250, 229, .16); }
.login-art-footer span { color: rgba(255, 250, 229, .55); font-size: 9px; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }
.login-art-footer span::before { content: ""; display: inline-block; width: 5px; height: 5px; margin-right: 8px; border-radius: 50%; background: var(--tusk-green); vertical-align: 1px; }
.login-card {
  position: relative;
  z-index: 3;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(34px, 6vw, 88px);
  color: var(--tusk-navy);
  background: var(--tusk-cream);
  box-shadow: -24px 0 70px rgba(0, 5, 30, .16);
}
.login-card-inner { width: min(100%, 440px); margin: auto; }
.login-brand { display: none; margin-bottom: 52px; padding: 0; }
.login-brand img { width: 150px; max-width: 150px; height: auto; }
.login-kicker { margin: 0 0 17px; color: #718139; font-size: 10px; font-weight: 900; letter-spacing: .2em; text-transform: uppercase; }
.login-card h1 { max-width: 430px; margin: 0 0 20px; color: var(--tusk-navy); font-family: "Glacial Indifference", Montserrat, Arial, sans-serif; font-size: clamp(48px, 4.6vw, 70px); font-weight: 850; line-height: .92; letter-spacing: -.065em; }
.login-copy { max-width: 405px; color: rgba(0, 15, 63, .62); font-size: 14px; line-height: 1.65; }
.login-form { width: 100%; margin-top: 38px; }
.login-form .field { margin-bottom: 16px; }
.login-form .field label { margin-bottom: 2px; color: rgba(0, 15, 63, .76); font-size: 10px; letter-spacing: .11em; text-transform: uppercase; }
.login-form input {
  min-height: 54px;
  padding: 13px 15px;
  border: 1px solid rgba(0, 15, 63, .18);
  border-radius: 5px;
  color: var(--tusk-navy);
  background: rgba(255, 255, 255, .64);
  box-shadow: none;
}
.login-form input::placeholder { color: rgba(0, 15, 63, .35); }
.login-form input:focus { border-color: var(--tusk-green); box-shadow: 0 0 0 3px rgba(182, 200, 92, .23); }
.login-button {
  width: 100%;
  min-height: 56px !important;
  margin-top: 4px;
  padding: 13px 17px;
  border-color: var(--tusk-green) !important;
  border-radius: 5px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  color: var(--tusk-navy) !important;
  background: var(--tusk-green) !important;
  box-shadow: 0 15px 34px rgba(81, 96, 22, .15);
  font-weight: 900;
}
.login-button:hover { border-color: #9cab4b !important; background: #c2d56a !important; transform: translateY(-2px); }
.login-button span:last-child { font-size: 21px; font-weight: 400; }
.login-secure { display: flex; align-items: center; gap: 11px; margin-top: 29px; padding-top: 20px; border-top: 1px solid rgba(0, 15, 63, .12); }
.login-secure-dot { width: 9px; height: 9px; flex: 0 0 auto; border-radius: 50%; background: var(--tusk-green); box-shadow: 0 0 0 5px rgba(182, 200, 92, .2); }
.login-secure p,
.login-secure strong,
.login-secure small { display: block; }
.login-secure strong { color: var(--tusk-navy); font-size: 11px; }
.login-secure small { margin-top: 2px; color: rgba(0, 15, 63, .48); font-size: 10px; }
.login-help { width: min(100%, 440px); margin: 48px auto 0; color: rgba(0, 15, 63, .42); font-size: 9px; font-weight: 800; letter-spacing: .13em; text-transform: uppercase; }

.app { min-height: 100vh; display: grid; grid-template-columns: 250px minmax(0, 1fr); background: var(--paper); }
.sidebar {
  position: sticky;
  top: 0;
  z-index: 10;
  height: 100vh;
  padding: 29px 18px 22px;
  display: flex;
  flex-direction: column;
  gap: 20px;
  color: var(--tusk-cream);
  background: radial-gradient(circle at 20% 0%, rgba(182, 200, 92, .16), transparent 18rem), var(--sidebar);
}
.brand { min-height: 72px; padding: 0 10px 7px; display: flex; align-items: flex-start; }
.brand img { width: 138px; max-width: 138px; height: auto; }
.nav-label { padding: 0 12px; color: rgba(255, 250, 229, .42); font-size: 10px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; }
.nav { display: grid; gap: 5px; overflow-y: auto; }
.nav button {
  width: 100%;
  min-height: 47px;
  padding: 9px 13px;
  border: 0;
  border-radius: 11px;
  display: flex;
  align-items: center;
  gap: 10px;
  color: rgba(255, 250, 229, .72);
  background: transparent;
  text-align: left;
}
.nav button:hover { color: var(--tusk-cream); background: rgba(255, 250, 229, .08); }
.nav button.active { color: var(--tusk-navy); background: var(--tusk-green); font-weight: 850; }
.nav-icon { width: 26px; height: 26px; border-radius: 8px; display: grid; place-items: center; flex: 0 0 auto; background: rgba(255, 250, 229, .08); font-size: 12px; }
.nav button.active .nav-icon { background: rgba(0, 15, 63, .09); }
.sidebar-account {
  margin-top: auto;
  padding: 12px;
  border: 1px solid rgba(255, 250, 229, .15);
  border-radius: 13px;
  display: grid;
  grid-template-columns: 8px minmax(0, 1fr);
  align-items: center;
  gap: 9px;
  background: rgba(255, 250, 229, .035);
}
.sidebar-account strong, .sidebar-account small { display: block; overflow: hidden; text-overflow: ellipsis; }
.sidebar-account strong { color: var(--tusk-cream); font-size: 10px; }
.sidebar-account small { color: rgba(255, 250, 229, .48); font-size: 10px; }
.online-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--tusk-green); box-shadow: 0 0 0 4px rgba(182, 200, 92, .11); }

.main {
  min-width: 0;
  padding: 33px clamp(24px, 3vw, 42px) 50px;
  background: radial-gradient(circle at 95% 0%, rgba(182, 200, 92, .19), transparent 28rem), var(--paper);
}
.topbar { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 28px; }
.topbar-title, .topbar-actions { display: flex; align-items: flex-start; gap: 10px; }
.topbar-actions { align-items: center; }
.eyebrow { margin: 0; color: #778632; font-size: 10px; font-weight: 900; letter-spacing: .17em; text-transform: uppercase; }
h1 { margin: 4px 0 6px; color: var(--tusk-navy); font-size: clamp(30px, 3vw, 43px); line-height: 1; letter-spacing: -.045em; }
h2 { margin: 0; color: var(--tusk-navy); font-size: 21px; letter-spacing: -.035em; }
h3 { margin: 0; font-size: 15px; }
p { margin: 0; }
.subtitle { max-width: 760px; color: var(--muted); }
.status-chip { padding: 9px 13px; border: 1px solid rgba(0, 15, 63, .1); border-radius: 999px; color: rgba(0, 15, 63, .62); background: rgba(255, 255, 255, .68); white-space: nowrap; font-size: 12px; }
.status-chip::before { content: ""; display: inline-block; width: 7px; height: 7px; margin-right: 7px; border-radius: 50%; background: var(--success); }
.mobile-menu { display: none; }

.toolbar { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 18px; }
.toolbar-actions, .search-wrap { display: flex; gap: 8px; flex-wrap: wrap; }
.btn {
  min-height: 40px;
  padding: 9px 13px;
  border: 1px solid rgba(0, 15, 63, .12);
  border-radius: 9px;
  color: var(--ink);
  background: rgba(255, 255, 255, .78);
  box-shadow: 0 2px 7px rgba(0, 15, 63, .02);
  font-weight: 800;
}
.btn:hover { border-color: rgba(0, 15, 63, .26); transform: translateY(-1px); }
.btn:disabled { opacity: .5; cursor: not-allowed; transform: none; }
.btn.primary { border-color: var(--tusk-green); color: var(--tusk-navy); background: var(--tusk-green); }
.btn.primary:hover { background: #c2d56a; }
.btn.dark { border-color: var(--tusk-navy); color: var(--tusk-cream); background: var(--tusk-navy); }
.btn.danger { border-color: #ebc2bd; color: var(--danger); background: #fff7f5; }
.btn.small { min-height: 32px; padding: 6px 9px; font-size: 12px; }
.search { width: min(330px, 70vw); }
.search, input, select, textarea {
  min-height: 42px;
  padding: 9px 11px;
  border: 1px solid rgba(0, 15, 63, .13);
  border-radius: 9px;
  color: var(--ink);
  background: rgba(255, 255, 255, .84);
  outline: 0;
}
input, select, textarea { width: 100%; }
.search:focus, input:focus, select:focus, textarea:focus { border-color: var(--tusk-green); box-shadow: 0 0 0 3px rgba(182, 200, 92, .23); }
textarea { min-height: 86px; resize: vertical; }

.cards { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 15px; margin-bottom: 19px; }
.metric {
  position: relative;
  min-height: 145px;
  padding: 22px;
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: rgba(255, 255, 255, .84);
  box-shadow: var(--shadow);
}
.metric.accent { border-color: #a8ba4b; background: var(--tusk-green); }
.metric.dark { border-color: var(--tusk-navy); color: var(--tusk-cream); background: var(--tusk-navy); }
.metric::after { content: ""; position: absolute; right: -27px; bottom: -32px; width: 82px; height: 82px; border-radius: 50%; background: rgba(123, 130, 112, .1); }
.metric-label { color: rgba(0, 15, 63, .55); font-size: 10px; font-weight: 900; text-transform: uppercase; letter-spacing: .1em; }
.metric.accent .metric-label, .metric.accent .metric-foot { color: rgba(0, 15, 63, .6); }
.metric.dark .metric-label, .metric.dark .metric-foot { color: rgba(255, 250, 229, .58); }
.metric-value { margin-top: 22px; font-size: clamp(25px, 2.25vw, 36px); font-weight: 900; letter-spacing: -.055em; }
.metric-foot { margin-top: 7px; color: var(--muted); font-size: 11px; }
.grid-2 { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(290px, .7fr); gap: 18px; }
.panel { border: 1px solid rgba(0, 15, 63, .1); border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); }
.panel-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 14px; padding: 23px 24px 13px; }
.panel-head p { margin-top: 3px; color: var(--muted); font-size: 12px; }
.panel-body { padding: 0 24px 23px; }
.sales-overview-panel .panel-head { align-items:center; }
.sales-overview-panel .panel-head p { max-width:420px; line-height:1.45; }
.sales-year-control { display:grid; gap:4px; flex:none; color:var(--muted); font-size:10px; font-weight:800; }
.sales-year-control select { min-width:90px; padding:7px 10px; border:1px solid var(--line); border-radius:8px; color:var(--ink); background:var(--card); font:inherit; font-size:13px; }
.sales-year-total { margin:2px 0 17px; font-size:13px; }
.sales-year-total strong { color:var(--tusk-navy); font-size:16px; }
.sales-month-grid { display:grid; grid-auto-flow:column; grid-template-columns:repeat(2,minmax(0,1fr)); grid-template-rows:repeat(6,auto); gap:9px 20px; }
.sales-month-row { min-width:0; display:grid; grid-template-columns:30px minmax(24px,1fr) 125px; align-items:center; gap:7px; }
.sales-month-name { color:var(--muted); font-size:11px; font-weight:800; text-transform:uppercase; }
.sales-month-track { height:12px; border-radius:9px; background:rgba(0,15,63,.07); overflow:hidden; }
.sales-month-track > span { display:block; height:100%; border-radius:9px; background:var(--tusk-navy); }
.sales-month-number { min-width:0; display:grid; text-align:right; line-height:1.2; }
.sales-month-number strong { font-size:10px; white-space:nowrap; }
.sales-month-number small { margin-top:2px; color:var(--muted); font-size:10px; }
.sales-overview-note { margin-top:17px; color:var(--muted); font-size:11px; line-height:1.5; }
.sales-overview-note button { padding:0; border:0; color:var(--tusk-navy); background:none; font:inherit; font-weight:800; text-decoration:underline; cursor:pointer; }
@media(max-width:1250px){.sales-month-grid{grid-auto-flow:row;grid-template-columns:1fr;grid-template-rows:none}}
.chart { height: 285px; display: flex; align-items: stretch; gap: 8px; padding-top: 15px; }
.chart-col { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: flex-end; align-items: center; gap: 7px; }
.bars { width: 100%; height: 220px; display: flex; align-items: flex-end; justify-content: center; gap: 3px; border-bottom: 1px solid var(--line); }
.bar { width: 22%; min-width: 4px; border-radius: 5px 5px 0 0; }
.bar.accrued { background: var(--tusk-navy); }
.bar.collected { background: var(--tusk-green); }
.bar.expenses { background: #d8d9d0; }
.h-0 { height: 0; }
.h-5 { height: 5%; }
.h-10 { height: 10%; }
.h-15 { height: 15%; }
.h-20 { height: 20%; }
.h-25 { height: 25%; }
.h-30 { height: 30%; }
.h-35 { height: 35%; }
.h-40 { height: 40%; }
.h-45 { height: 45%; }
.h-50 { height: 50%; }
.h-55 { height: 55%; }
.h-60 { height: 60%; }
.h-65 { height: 65%; }
.h-70 { height: 70%; }
.h-75 { height: 75%; }
.h-80 { height: 80%; }
.h-85 { height: 85%; }
.h-90 { height: 90%; }
.h-95 { height: 95%; }
.h-100 { height: 100%; }
.chart-label { color: var(--muted); font-size: 9px; }
.legend { display: flex; gap: 14px; color: var(--muted); font-size: 10px; }
.legend span::before { content: ""; display: inline-block; width: 8px; height: 8px; margin-right: 5px; border-radius: 2px; background: var(--ink); }
.legend span:nth-child(2)::before { background: var(--tusk-green); }
.legend span:nth-child(3)::before { background: #d8d9d0; }
.issue-list { display: grid; gap: 9px; }
.issue { padding: 11px; border: 1px solid #ead9b7; border-left: 4px solid var(--warning); border-radius: 10px; background: #fffaf0; }
.issue.error { border-color: #f0d1ce; border-left-color: var(--danger); background: #fff8f7; }
.issue strong { display: block; font-size: 12px; }
.issue p { margin-top: 3px; color: var(--muted); font-size: 11px; }
.empty { padding: 34px 16px; color: var(--muted); text-align: center; }
.issue-list > .empty { min-height: 260px; display: grid; place-items: center; align-content: center; gap: 12px; }
.issue-list > .empty::before { content: "✓"; width: 54px; height: 54px; border-radius: 50%; display: grid; place-items: center; color: var(--tusk-navy); background: rgba(182, 200, 92, .24); font-size: 21px; font-weight: 900; }

.table-card { border: 1px solid rgba(0, 15, 63, .1); border-radius: var(--radius); overflow: hidden; background: var(--card); box-shadow: var(--shadow); }
.table-scroll { overflow: auto; max-height: calc(100vh - 240px); }
table { width: 100%; border-collapse: separate; border-spacing: 0; white-space: nowrap; }
th { position: sticky; top: 0; z-index: 2; padding: 13px 14px; border-bottom: 1px solid rgba(0, 15, 63, .09); color: rgba(0, 15, 63, .55); background: #e9ecdf; text-align: left; font-size: 9px; letter-spacing: .09em; text-transform: uppercase; }
td { padding: 13px 14px; border-bottom: 1px solid rgba(0, 15, 63, .07); font-size: 11px; }
tbody tr:nth-child(even) { background: rgba(255, 250, 229, .3); }
tbody tr:hover { background: rgba(182, 200, 92, .1); }
tbody tr:last-child td { border-bottom: 0; }
td.wide { min-width: 220px; max-width: 330px; white-space: normal; }
.row-action { padding: 7px 9px; border: 0; border-radius: 8px; color: var(--tusk-navy); background: #edf0e5; font-weight: 800; }
.row-action:hover { background: var(--accent); }
.pill { display: inline-flex; align-items: center; padding: 4px 8px; border-radius: 999px; font-size: 10px; font-weight: 800; }
.pill.Activo, .pill.Sí { color: #335f3d; background: #e4efc2; }
.pill.Finalizada { color: #49633c; background: #e4efc2; }
.pill.Programada { color: #74580b; background: #f6edc8; }
.pill.No { color: #9c3128; background: #ffebe8; }
.table-foot { display: flex; justify-content: space-between; gap: 12px; padding: 12px 14px; border-top: 1px solid rgba(0, 15, 63, .08); color: var(--muted); background: rgba(255, 250, 229, .4); font-size: 10px; }
.page-actions { display: flex; align-items: center; gap: 8px; }
.result-positive { color: var(--success); font-weight: 800; }
.result-negative { color: var(--danger); font-weight: 800; }

.setup-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.setup-card { padding: 22px; border: 1px solid rgba(0, 15, 63, .1); border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); }
.setup-card.full { grid-column: 1 / -1; }
.setup-card > p { margin: 5px 0 16px; color: var(--muted); font-size: 12px; }

.appearance-colors { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.appearance-colors input[type="color"] { width: 100%; min-height: 48px; padding: 4px; border: 1px solid var(--line); border-radius: 10px; background: var(--card); }
.appearance-layout .toolbar-actions { margin-top: 18px; justify-content: flex-start; }
.appearance-preview { min-height: 280px; display: grid; grid-template-columns: 190px minmax(0, 1fr); overflow: hidden; border: 1px solid var(--line); border-radius: var(--radius); background: var(--paper); }
.appearance-preview-sidebar { padding: 24px 18px; display: flex; flex-direction: column; gap: 14px; color: var(--tusk-cream); background: var(--sidebar); }
.appearance-preview-sidebar strong { font-size: 28px; letter-spacing: -.06em; }
.appearance-preview-sidebar span { padding: 8px 10px; border-radius: 9px; background: rgba(255,255,255,.07); font-size: 11px; font-weight: 800; }
.appearance-preview-page { padding: 28px; display: grid; place-items: center; background: var(--paper); }
.appearance-preview-card { width: min(100%, 560px); min-height: 160px; padding: 26px; display: flex; flex-direction: column; justify-content: center; gap: 8px; border: 1px solid var(--line); border-radius: var(--radius); color: var(--ink); background-color: var(--sheet); background-image: var(--sheet-bg-image); background-size: cover; background-position: center; box-shadow: var(--shadow); }
.appearance-preview-card span { color: var(--accent-strong); font-size: 10px; font-weight: 900; letter-spacing: .16em; }
.appearance-preview-card strong { font-size: 26px; }
.appearance-preview-card small { color: var(--muted); }
.form-row { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 11px; }
.field { display: grid; gap: 6px; margin-bottom: 11px; }
.field label, label { color: rgba(0, 15, 63, .68); font-size: 10px; font-weight: 850; letter-spacing: .035em; }
.field small { color: var(--muted); font-size: 10px; }
.spaced-form { margin-top: 16px; }
.check-label { display: flex; align-items: center; gap: 8px; margin-bottom: 12px; }
.check-label input { width: auto; min-height: 0; }
.link-button { display: inline-flex; align-items: center; text-decoration: none; }
.field-list { display: grid; gap: 7px; margin-top: 13px; }
.field-item { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 11px 12px; border: 1px solid rgba(0, 15, 63, .09); border-radius: 9px; background: rgba(255, 250, 229, .42); }
.field-item small { color: var(--muted); }
.helper { padding: 12px 13px; border-radius: 10px; color: var(--tusk-navy); background: rgba(182, 200, 92, .25); font-size: 12px; }
.danger-note { color: #8b3129; background: #fff0ee; }
.form-error { min-height: 18px; color: var(--danger); font-size: 12px; }

dialog { width: min(840px, calc(100vw - 24px)); max-height: calc(100vh - 30px); padding: 0; border: 0; border-radius: 18px; color: var(--ink); background: #fffefa; box-shadow: 0 32px 95px rgba(0, 15, 63, .3); }
dialog::backdrop { background: rgba(0, 15, 63, .6); backdrop-filter: blur(5px); }
.dialog-head { position: sticky; top: 0; z-index: 3; display: flex; align-items: center; justify-content: space-between; gap: 15px; padding: 22px 26px; border-bottom: 1px solid rgba(0, 15, 63, .1); background: rgba(255, 254, 250, .98); }
.dialog-head h2 { margin-top: 4px; font-size: 27px; }
.dialog-close { width: 36px; height: 36px; border: 0; border-radius: 50%; color: var(--tusk-navy); background: #edf0e5; font-size: 19px; }
.dialog-body { padding: 24px 26px; }
.dialog-group { margin: 5px 0 18px; padding-top: 4px; }
.dialog-group-title { margin: 0 0 12px; padding-bottom: 8px; border-bottom: 1px solid rgba(0, 15, 63, .09); color: #778632; font-size: 10px; letter-spacing: .11em; text-transform: uppercase; }
.dialog-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 12px; }
.dialog-actions { position: sticky; bottom: 0; display: flex; justify-content: space-between; gap: 10px; padding: 15px 26px; border-top: 1px solid rgba(0, 15, 63, .1); background: rgba(248, 247, 240, .98); }
.dialog-actions-right { display: flex; gap: 8px; margin-left: auto; }
.import-dialog { width: min(650px, calc(100vw - 24px)); }
.drop-zone { padding: 28px; border: 1px dashed rgba(0, 15, 63, .32); border-radius: 14px; background: rgba(255, 250, 229, .46); text-align: center; }
.drop-zone strong { display: block; font-size: 17px; }
.drop-zone p { margin: 5px 0 18px; color: var(--muted); font-size: 12px; }
.drop-zone input { padding: 10px; background: #fff; }
.import-summary { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 14px 0 18px; }
.import-count { padding: 15px; border: 1px solid rgba(0, 15, 63, .1); border-radius: 12px; background: rgba(255, 250, 229, .46); }
.import-count strong { display: block; margin-top: 5px; font-size: 25px; }
.toast { position: fixed; right: 24px; bottom: 24px; z-index: 100; max-width: 360px; padding: 12px 15px; border-radius: 11px; color: var(--tusk-cream); background: var(--tusk-navy); box-shadow: 0 15px 40px rgba(0, 15, 63, .24); opacity: 0; transform: translateY(14px); pointer-events: none; transition: .2s; }
.toast.show { opacity: 1; transform: translateY(0); }

.nav-separator { margin: 7px 11px 4px; padding-top: 10px; border-top: 1px solid rgba(255, 250, 229, .1); }
.nav-separator span { color: rgba(255, 250, 229, .38); font-size: 8px; font-weight: 850; letter-spacing: .14em; text-transform: uppercase; }
.nav-sub { margin: -2px 0 3px 22px; padding-left: 8px; border-left: 1px solid rgba(182, 200, 92, .26); display: grid; gap: 1px; }
.nav-sub button { min-height: 33px; padding: 4px 10px; border-radius: 8px; font-size: 11px; }
.nav-sub .nav-icon { width: 14px; height: 14px; color: var(--tusk-green); background: transparent; font-size: 14px; }
.nav-sub button.active { color: var(--tusk-cream); background: rgba(255, 250, 229, .1); }
.crm-summary { color: var(--muted); font-size: 12px; }
.crm-layout { display: grid; grid-template-columns: minmax(0, 1fr) 310px; gap: 18px; }
.pipeline-panel { min-width: 0; overflow: hidden; }
.pipeline-scroll { padding: 0 18px 20px; overflow-x: auto; }
.pipeline-board { min-width: 1220px; display: grid; grid-template-columns: repeat(7, minmax(160px, 1fr)); gap: 9px; }
.pipeline-column { min-height: 390px; padding: 10px; border: 1px solid rgba(0, 15, 63, .08); border-radius: 12px; display: flex; flex-direction: column; background: rgba(246, 245, 237, .7); }
.pipeline-column > header { min-height: 50px; padding: 2px 3px 9px; display: grid; align-content: start; border-bottom: 1px solid rgba(0, 15, 63, .08); }
.pipeline-column > header strong { font-size: 9px; letter-spacing: .09em; text-transform: uppercase; }
.pipeline-column > header span { margin-top: 3px; color: var(--muted); font-size: 9px; }
.pipeline-column > div { display: grid; gap: 7px; padding-top: 9px; }
.pipeline-card { width: 100%; padding: 10px; border: 1px solid rgba(0, 15, 63, .09); border-radius: 9px; display: grid; gap: 3px; color: var(--tusk-navy); background: #fff; text-align: left; }
.pipeline-card:hover { border-color: var(--tusk-green); transform: translateY(-1px); }
.pipeline-card strong { font-size: 10px; line-height: 1.3; }
.pipeline-card span,.pipeline-card small { overflow: hidden; color: var(--muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.pipeline-card b { margin-top: 5px; font-size: 10px; }
.pipeline-empty { padding: 25px 4px; color: var(--muted); font-size: 9px; text-align: center; }
.pipeline-add { margin-top: auto; padding: 9px 4px 2px; border: 0; color: #718139; background: transparent; font-size: 9px; font-weight: 800; }
.activities-panel { align-self: start; }
.activities-panel .panel-head { align-items: center; padding-bottom: 16px; }
.activity-list { display: grid; padding: 0 18px 18px; }
.activity-item { padding: 12px 0; border: 0; border-bottom: 1px solid rgba(0, 15, 63, .07); display: grid; grid-template-columns: 14px minmax(0, 1fr); gap: 10px; color: var(--tusk-navy); background: transparent; text-align: left; }
.activity-item:last-child { border-bottom: 0; }
.activity-item > span:last-child { min-width: 0; display: grid; gap: 1px; }
.activity-item strong { color: #718139; font-size: 8px; letter-spacing: .06em; text-transform: uppercase; }
.activity-item b { overflow: hidden; font-size: 10px; text-overflow: ellipsis; white-space: nowrap; }
.activity-item small { overflow: hidden; color: var(--muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }
.activity-item em { margin-top: 3px; color: var(--muted); font-size: 8px; font-style: normal; font-weight: 800; }
.activity-signal,.history-marker { width: 10px; height: 10px; margin-top: 3px; border-radius: 50%; box-shadow: 0 0 0 4px rgba(0, 15, 63, .04); }
.urgency-green .activity-signal,.history-marker.urgency-green { background: var(--tusk-green); }
.urgency-yellow .activity-signal,.history-marker.urgency-yellow { background: #f0c84b; }
.urgency-red .activity-signal,.history-marker.urgency-red { background: #d85151; }
.urgency-complete .activity-signal,.history-marker.urgency-complete { background: #9ba2b3; }
.table-urgency { display: inline-flex; align-items: center; gap: 6px; min-width: 94px; color: var(--muted); font-size: 8px; font-weight: 800; }
.table-urgency i { width: 9px; height: 9px; border-radius: 50%; background: #9ba2b3; box-shadow: 0 0 0 3px rgba(0, 15, 63, .04); }
.table-urgency.urgency-green i { background: var(--tusk-green); }
.table-urgency.urgency-yellow i { background: #f0c84b; }
.table-urgency.urgency-red i { background: #d85151; }
.activity-icon { width: 30px; height: 30px; border-radius: 50%; display: grid; place-items: center; background: rgba(182, 200, 92, .18); font-weight: 900; }
.empty.compact { min-height: 90px; padding: 24px 8px; }
.opportunity-helper { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.crm-opportunity-list { display: grid; padding: 0 18px 18px; }
.crm-opportunity-row { padding: 13px 0; border: 0; border-bottom: 1px solid rgba(0, 15, 63, .07); display: flex; align-items: center; justify-content: space-between; gap: 14px; color: var(--tusk-navy); background: transparent; text-align: left; }
.crm-opportunity-row:last-child { border-bottom: 0; }
.crm-opportunity-row > span { min-width: 0; display: grid; gap: 3px; }
.crm-opportunity-row > span:last-child { flex: 0 0 auto; text-align: right; }
.crm-opportunity-row strong,.crm-opportunity-row b { font-size: 11px; }
.crm-opportunity-row small { overflow: hidden; color: var(--muted); font-size: 9px; text-overflow: ellipsis; white-space: nowrap; }
.multi-options { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 7px; padding: 10px; border: 1px solid rgba(0, 15, 63, .13); border-radius: 9px; background: #fff; }
.multi-options label { display: flex; align-items: center; gap: 7px; color: var(--tusk-navy); font-size: 10px; font-weight: 700; }
.multi-options input { width: 15px; height: 15px; accent-color: var(--tusk-green); }
.client-stage { margin: 4px 0 18px; padding: 13px 15px; border-left: 4px solid var(--tusk-green); border-radius: 8px; display: grid; gap: 3px; background: rgba(182, 200, 92, .13); }
.client-stage strong { color: #718139; font-size: 9px; letter-spacing: .08em; text-transform: uppercase; }
.client-stage span { color: var(--tusk-navy); font-size: 11px; font-weight: 800; }
.opportunity-history { margin: 18px 0; padding: 16px; border: 1px solid rgba(0, 15, 63, .1); border-radius: 13px; background: rgba(255, 250, 229, .45); }
.opportunity-history > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.opportunity-history h3 { margin: 0; color: var(--tusk-navy); font-size: 13px; }
.opportunity-history p { margin: 3px 0 0; color: var(--muted); font-size: 9px; }
.history-list { display: grid; }
.history-item { padding: 10px 0; border: 0; border-bottom: 1px solid rgba(0, 15, 63, .07); display: grid; grid-template-columns: 12px minmax(0, 1fr); gap: 9px; color: var(--tusk-navy); background: transparent; text-align: left; }
.history-item:last-child { border-bottom: 0; }
.history-item > span:last-child { min-width: 0; display: grid; gap: 2px; }
.history-item strong { color: #718139; font-size: 8px; letter-spacing: .05em; text-transform: uppercase; }
.history-item b { font-size: 10px; }
.history-item small { overflow: hidden; color: var(--muted); font-size: 8px; text-overflow: ellipsis; white-space: nowrap; }

.gallery-filters { display: grid; grid-template-columns:minmax(230px, 1.7fr) repeat(4, minmax(130px, .65fr)); gap: 10px; margin-bottom: 18px; }
.site-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 15px; }
.site-card { overflow: hidden; border: 1px solid rgba(0, 15, 63, .1); border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); }
.site-photo { position: relative; width: 100%; aspect-ratio: 16 / 8.6; padding: 0; overflow: hidden; border: 0; display: block; background: var(--tusk-navy); }
.site-photo > img { width: 100%; height: 100%; object-fit: cover; transition: transform .25s; }
.site-card:hover .site-photo > img { transform: scale(1.025); }
.site-placeholder { width: 100%; height: 100%; display: grid; place-content: center; gap: 5px; color: var(--tusk-cream); background: radial-gradient(circle at 80% 15%, rgba(182, 200, 92, .2), transparent 11rem), var(--tusk-navy); text-align: center; }
.site-placeholder span { font-size: 36px; font-weight: 900; letter-spacing: -.08em; }
.site-placeholder small { color: rgba(255, 250, 229, .55); font-size: 9px; }
.site-status { display: inline-flex; padding: 5px 9px; border: 1px solid rgba(0, 15, 63, .1); border-radius: 999px; color: var(--tusk-navy); background: rgba(255, 250, 229, .9); font-size: 9px; font-weight: 850; }
.site-status.available { color: #456110; background: #f4f8e4; }
.site-photo .site-status { position: absolute; right: 11px; bottom: 11px; }
.site-card-body { padding: 14px 16px 16px; }
.site-card-body > p { color: var(--tusk-navy); font-size: 15px; font-weight: 900; letter-spacing: -.02em; }
.site-card-body h2 { margin-top: 2px; font-size: 14px; }
.site-card-body > span { display: block; min-height: 31px; margin-top: 3px; color: var(--muted); font-size: 10px; }
.site-card-body footer { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-top: 10px; }
.site-card-body footer strong { color: #718139; font-size: 12px; }
.gallery-empty { grid-column: 1 / -1; min-height: 280px; border: 1px solid rgba(0, 15, 63, .1); border-radius: var(--radius); background: var(--card); }
.gallery-foot { margin-top: 15px; border: 1px solid rgba(0, 15, 63, .08); border-radius: 10px; }

.site-detail-toolbar { margin-top: -8px; }
.site-detail-grid { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(390px, .85fr); gap: 18px; padding: 16px; border-radius: var(--radius); background-color: var(--sheet); background-image: var(--sheet-bg-image); background-size: cover; background-position: center; background-repeat: no-repeat; }
.site-gallery-card,.site-info-card,.site-map-card { padding: 14px; border: 1px solid rgba(0, 15, 63, .1); border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); }
.site-main-photo { aspect-ratio: 16 / 10; overflow: hidden; border-radius: 12px; background: var(--tusk-navy); }
.site-main-photo > img, .site-main-photo > video { width: 100%; height: 100%; object-fit: cover; display: block; }
.site-main-photo > video { background: #000; }
.site-thumbnails { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-top: 9px; }
.site-thumb { position: relative; aspect-ratio: 16 / 10; overflow: hidden; border: 2px solid transparent; border-radius: 9px; background: #e8e9e0; }
.site-thumb.active { border-color: var(--tusk-green); }
.site-thumb > button:first-child { width: 100%; height: 100%; padding: 0; border: 0; }
.site-thumb img { width: 100%; height: 100%; object-fit: cover; }
.video-thumb { width: 100%; height: 100%; display: grid; place-content: center; gap: 2px; background: var(--tusk-navy); color: #fff; text-align: center; }
.video-thumb > span { font-size: 20px; line-height: 1; }
.video-thumb small { font-size: 8px; letter-spacing: .04em; text-transform: uppercase; }
.thumb-delete { position: absolute; top: 3px; right: 3px; width: 22px; height: 22px; padding: 0; border: 0; border-radius: 50%; color: #fff; background: rgba(0, 15, 63, .78); line-height: 1; }
.photo-upload { margin-top: 12px; padding-top: 12px; border-top: 1px solid rgba(0, 15, 63, .08); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.photo-upload label { display: inline-flex; align-items: center; }
.photo-upload small { flex-basis: 100%; color: var(--muted); font-size: 9px; }
.upload-status { font-weight: 700; color: var(--tusk-navy) !important; }
.site-detail-side { display: grid; align-content: start; gap: 16px; }
.site-info-card { padding: 22px; }
.site-info-card > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 15px; }
.site-info-row { padding: 7px 0; border-bottom: 1px solid rgba(0, 15, 63, .07); display: grid; grid-template-columns: 125px minmax(0, 1fr); gap: 13px; }
.site-info-row span { color: var(--muted); font-size: 10px; }
.site-info-row strong { font-size: 10px; font-weight: 650; }
.site-rate { margin-top: 15px; padding: 15px; border: 1px solid rgba(113, 129, 57, .2); border-radius: 10px; display: flex; align-items: center; justify-content: space-between; gap: 10px; color: #526616; background: rgba(182, 200, 92, .2); }
.site-rate span,.site-rate strong { font-size: 13px; font-weight: 900; }
.site-map-card { padding: 17px; }
.site-map-card h2 { margin-bottom: 12px; font-size: 17px; }
.site-map-card iframe { width: 100%; height: 235px; border: 0; border-radius: 10px; background: #e6e8dd; }
.site-map-card footer { margin-top: 8px; display: flex; align-items: center; justify-content: space-between; gap: 9px; color: var(--muted); font-size: 9px; }
.map-coordinate-link { color: var(--navy); font-weight: 750; text-decoration: underline; text-underline-offset: 2px; }
.map-coordinate-link:hover { opacity: .72; }
.empty-map { min-height: 170px; }.empty-map p { color: var(--muted); }
.site-description { margin-top: 17px; }.site-description .panel-head p { max-width: 900px; line-height: 1.6; }
.site-availability { margin-top: 17px; }.reservation-list { display: grid; }.reservation-row { width: 100%; padding: 11px 0; border: 0; border-bottom: 1px solid rgba(0, 15, 63, .08); display: grid; grid-template-columns: minmax(210px, 1fr) minmax(210px, .7fr) auto; align-items: center; gap: 14px; color: var(--tusk-navy); background: transparent; text-align: left; }.reservation-row:last-child { border-bottom: 0; }.reservation-row > span:first-child { display: grid; }.reservation-row small { color: var(--muted); font-size: 9px; }.reservation-row > span:nth-child(2) { color: var(--muted); font-size: 10px; }
.share-management { margin-top: 17px; }.share-management .panel-head { align-items: center; }.share-item { padding: 11px 0; border-bottom: 1px solid rgba(0, 15, 63, .08); display: flex; align-items: center; justify-content: space-between; gap: 15px; }.share-item:last-child { border-bottom: 0; }.share-item p,.share-item small { display: block; color: var(--muted); font-size: 9px; }.share-item small { max-width: 650px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }.share-item > div:last-child { display: flex; gap: 6px; }.site-bottom-actions { margin-top: 15px; display: flex; justify-content: flex-end; }
.share-dialog { width: min(590px, calc(100vw - 24px)); }.share-intro { margin-bottom: 18px; color: var(--muted); }.share-options { margin: 13px 0; padding: 14px; border-radius: 11px; background: rgba(255, 250, 229, .6); }.share-options .check-label { margin: 7px 0; }.copy-link { margin-top: 11px; display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 7px; }

@media (max-width: 1050px) {
  .cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .grid-2 { grid-template-columns: 1fr; }
  .login-screen { grid-template-columns: minmax(0, 1fr) minmax(390px, .9fr); }
  .login-art { padding: 38px; }
  .login-art-copy h2 { font-size: clamp(48px, 6vw, 68px); }
  .login-art-footer span:nth-child(2) { display: none; }
  .site-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .crm-layout,.site-detail-grid { grid-template-columns: 1fr; }
}
@media (max-width: 760px) {
  .login-screen { display: block; background: var(--tusk-cream); }
  .login-card { min-height: 100vh; min-height: 100dvh; padding: 30px 22px 24px; box-shadow: none; }
  .login-card-inner { margin: 0 auto auto; }
  .login-brand { display: block; margin-bottom: clamp(60px, 13vh, 110px); }
  .login-card h1 { font-size: clamp(46px, 14vw, 64px); }
  .login-form { margin-top: 30px; }
  .login-help { margin-top: 35px; }
  .login-art { display: none; }
  .app { display: block; }
  .sidebar { position: fixed; left: -270px; width: 250px; transition: left .2s; box-shadow: 10px 0 35px rgba(0, 15, 63, .28); }
  body.menu-open .sidebar { left: 0; }
  .main { padding: 18px 14px 40px; }
  .mobile-menu { width: 42px; height: 42px; border: 1px solid rgba(0, 15, 63, .12); border-radius: 10px; display: inline-grid; place-items: center; flex: 0 0 auto; color: var(--tusk-navy); background: rgba(255, 255, 255, .84); }
  .status-chip { display: none; }
  .topbar { gap: 8px; }
  .topbar-actions { align-self: flex-start; }
  .cards, .setup-grid, .form-row, .dialog-grid { grid-template-columns: 1fr; }
  .setup-card.full { grid-column: auto; }
  .cards { gap: 10px; }
  .metric { min-height: 118px; }
  .chart { gap: 3px; }
  .chart-label { writing-mode: vertical-rl; height: 34px; }
  .toolbar { align-items: stretch; }
  .toolbar-actions { width: 100%; }
  .toolbar-actions .btn { flex: 1; }
  .search { width: 100%; }
  .search-wrap { width: 100%; }
  .import-summary { grid-template-columns: 1fr; }
  .dialog-actions { flex-wrap: wrap; }
  .dialog-actions-right { width: 100%; }
  .dialog-actions-right .btn { flex: 1; }
  .gallery-filters,.site-grid { grid-template-columns: 1fr; }
  .site-detail-toolbar .toolbar-actions { width: 100%; }
  .site-info-row { grid-template-columns: 105px minmax(0, 1fr); }
  .share-item { align-items: flex-start; flex-direction: column; }
  .share-item > div:last-child { width: 100%; }
  .share-item > div:last-child .btn { flex: 1; }
  .copy-link { grid-template-columns: 1fr; }
  .reservation-row { grid-template-columns: 1fr; gap: 5px; }
}
.print-commercial-availability { display: none; }

@media print {
  @page { size: A4 landscape; margin: 7mm; }
  * { -webkit-print-color-adjust: exact !important; print-color-adjust: exact !important; box-sizing: border-box; }
  html, body { width: 100%; min-height: 0; background: #fff !important; }
  body { margin: 0 !important; }
  .sidebar, .topbar-actions, .toolbar, .mobile-menu { display: none !important; }
  .app { display: block !important; }
  .main { padding: 0 !important; min-width: 0; }
  .topbar { margin: 0 0 3mm !important; padding: 0 0 2.5mm !important; border-bottom: 1px solid rgba(0,15,63,.15); align-items: flex-start; }
  .topbar-title { display: block !important; }
  .topbar-title .eyebrow { margin: 0 0 1mm; font-size: 7pt; letter-spacing: .14em; }
  .topbar-title h1 { margin: 0; font-size: 17pt; line-height: 1.05; }
  .topbar-title .subtitle { margin: 1mm 0 0; font-size: 8pt; line-height: 1.2; }
  .panel, .table-card, .metric { box-shadow: none; }
  .table-scroll { max-height: none; overflow: visible; }
  .photo-upload,.share-management,.site-bottom-actions,.site-detail-toolbar,.site-availability,.site-block-panel,.site-thumbnails,.print-private,.internal-inventory-model { display: none !important; }
  .print-commercial-availability { display: flex !important; }
  .site-detail-grid {
    display: grid !important;
    grid-template-columns: minmax(0, 1.22fr) minmax(0, .78fr) !important;
    gap: 3mm !important;
    padding: 3mm !important;
    border-radius: 3mm !important;
    min-height: 0 !important;
    break-inside: avoid-page;
    page-break-inside: avoid;
  }
  .site-gallery-card,.site-info-card,.site-map-card {
    padding: 3mm !important;
    border-radius: 2.5mm !important;
    box-shadow: none !important;
    break-inside: avoid-page;
    page-break-inside: avoid;
  }
  .site-main-photo {
    height: 112mm !important;
    max-height: 112mm !important;
    aspect-ratio: auto !important;
    border-radius: 2.5mm !important;
  }
  .site-main-photo > img, .site-main-photo > video { object-fit: cover !important; }
  .site-detail-side { gap: 2.5mm !important; }
  .site-info-card { padding: 3.5mm !important; }
  .site-info-card > header { margin-bottom: 2mm !important; gap: 2mm; }
  .site-info-card > header h2 { font-size: 11pt !important; }
  .site-status { font-size: 7pt !important; padding: 1.2mm 2mm !important; }
  .site-info-row {
    grid-template-columns: 31mm minmax(0, 1fr) !important;
    gap: 2mm !important;
    padding: 1.35mm 0 !important;
  }
  .site-info-row span, .site-info-row strong { font-size: 7.4pt !important; line-height: 1.15; }
  .site-rate { margin-top: 2.5mm !important; padding: 2.5mm !important; border-radius: 2mm !important; }
  .site-rate span,.site-rate strong { font-size: 8pt !important; }
  .site-map-card { padding: 3mm !important; }
  .site-map-card h2 { margin: 0 0 2mm !important; font-size: 10pt !important; }
  .site-map-card iframe { height: 43mm !important; border-radius: 2mm !important; }
  .site-map-card footer { margin-top: 1.5mm !important; font-size: 6.8pt !important; }
  .site-map-card footer .btn { display: none !important; }
  .site-description {
    margin-top: 3mm !important;
    padding: 0 !important;
    box-shadow: none !important;
    border: 0 !important;
    break-inside: avoid-page;
    page-break-inside: avoid;
  }
  .site-description .panel-head { padding: 2.5mm 3mm !important; }
  .site-description .panel-head h2 { font-size: 9.5pt !important; }
  .site-description .panel-head p {
    margin-top: 1mm !important;
    font-size: 7.2pt !important;
    line-height: 1.3 !important;
    max-height: 18mm;
    overflow: hidden;
  }
}

/* v8.2 - editor de tablas y columnas */
.field-item-actions { display:flex; align-items:center; gap:8px; flex-wrap:wrap; justify-content:flex-end; }
.setup-divider { border:0; border-top:1px solid rgba(0,15,63,.1); margin:24px 0; }
.field-check-stack { display:flex; flex-direction:column; justify-content:center; gap:10px; padding-top:20px; }
.field-dialog { width:min(620px, calc(100vw - 24px)); }

/* v9.1 · importes MXN y ayudas de cálculo OOH */
.money-input { display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; border: 1px solid rgba(0, 15, 63, .16); border-radius: 9px; background: #fff; overflow: hidden; }
.money-input:focus-within { border-color: rgba(0, 15, 63, .48); box-shadow: 0 0 0 3px rgba(0, 15, 63, .06); }
.money-input input { min-width: 0; border: 0 !important; border-radius: 0 !important; box-shadow: none !important; background: transparent !important; }
.money-prefix, .money-suffix { color: var(--muted); font-size: 11px; font-weight: 800; white-space: nowrap; }
.money-prefix { padding-left: 10px; }
.money-suffix { padding-right: 10px; }
.quick-rate-actions { display: flex; flex-wrap: wrap; gap: 7px; margin-top: 10px; }
#siteSupplierPreview span { color: var(--muted); }

@media (max-width: 720px) { .appearance-colors { grid-template-columns: 1fr; } .appearance-preview { grid-template-columns: 1fr; } .appearance-preview-sidebar { display: none; } }


/* v9.2D · Conceptos dentro de la ficha de oportunidad */
.opportunity-concepts { margin: 18px 0; padding: 16px; border: 1px solid rgba(0, 15, 63, .1); border-radius: 13px; background: rgba(245, 248, 255, .72); }
.opportunity-concepts > header { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.opportunity-concepts h3 { margin: 0; color: var(--tusk-navy); font-size: 13px; }
.opportunity-concepts p { margin: 3px 0 0; color: var(--muted); font-size: 9px; }
.opportunity-concept-list { display: grid; gap: 6px; }
.opportunity-concept-item { width: 100%; border: 1px solid rgba(0, 15, 63, .08); background: white; border-radius: 10px; padding: 10px 12px; display: flex; align-items: center; justify-content: space-between; gap: 12px; text-align: left; cursor: pointer; }
.opportunity-concept-item span:first-child { display: grid; gap: 2px; min-width: 0; }
.opportunity-concept-item strong { color: var(--tusk-navy); font-size: 9px; }
.opportunity-concept-item b { font-size: 11px; font-weight: 700; }
.opportunity-concept-item small { color: var(--muted); font-size: 8px; }
.opportunity-concept-amount { white-space: nowrap; font-weight: 800; color: var(--tusk-navy); }
.opportunity-concepts footer { margin-top: 10px; padding-top: 10px; border-top: 1px solid rgba(0, 15, 63, .1); display: flex; justify-content: space-between; align-items: center; }
.opportunity-concepts footer span { color: var(--muted); font-size: 9px; text-transform: uppercase; letter-spacing: .08em; }
.opportunity-concepts footer strong { color: var(--tusk-navy); font-size: 14px; }

/* v9.2J · Facturación programada */
.invoice-schedule-dialog { width: min(980px, calc(100vw - 28px)); }
.invoice-schedule-summary { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px; margin: 0 0 14px; }
.invoice-schedule-summary > div { padding: 12px 14px; border: 1px solid rgba(0, 15, 63, .12); border-radius: 12px; background: rgba(182, 200, 92, .08); }
.invoice-schedule-summary span { display: block; color: var(--muted); font-size: 11px; font-weight: 800; text-transform: uppercase; letter-spacing: .05em; }
.invoice-schedule-summary strong { display: block; margin-top: 4px; font-size: 18px; color: var(--ink); }
.invoice-schedule-rows { display: grid; gap: 9px; margin-top: 14px; }
.invoice-schedule-row { display: grid; grid-template-columns: 42px minmax(170px, .9fr) minmax(210px, 1fr) minmax(150px, .7fr); gap: 10px; align-items: end; padding: 10px; border: 1px solid rgba(0, 15, 63, .1); border-radius: 12px; background: rgba(255,255,255,.55); }
.invoice-schedule-index { display: grid; place-items: center; width: 32px; height: 32px; border-radius: 999px; background: var(--tusk-navy); color: white; font-weight: 900; align-self: center; }
.invoice-schedule-due { align-self: center; color: var(--muted); font-size: 12px; font-weight: 700; }
.invoice-schedule-row .money-input > span { padding-left: 10px; color: var(--muted); font-weight: 800; }
.invoice-schedule-row .money-input > strong { padding-right: 10px; color: var(--muted); font-size: 11px; }
@media (max-width: 760px) {
  .invoice-schedule-summary { grid-template-columns: 1fr; }
  .invoice-schedule-row { grid-template-columns: 36px 1fr; }
  .invoice-schedule-row .field, .invoice-schedule-due { grid-column: 2; }
}

/* v9.2N · filtros avanzados de Facturas */
.invoice-filter-panel { margin: -4px 0 18px; padding: 16px; border: 1px solid rgba(0, 15, 63, .1); border-radius: var(--radius); background: var(--card); box-shadow: var(--shadow); }
.invoice-filter-grid { display: grid; grid-template-columns: repeat(3, minmax(170px, 1fr)); gap: 12px; }
.invoice-filter-grid .field { margin: 0; }
.invoice-filter-grid label { font-size: .78rem; }
.invoice-filter-grid input, .invoice-filter-grid select { min-height: 42px; }
.invoice-filter-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px; padding-top: 12px; border-top: 1px solid rgba(0, 15, 63, .08); font-size: .88rem; color: var(--muted); }
.table-sort { appearance: none; border: 0; padding: 0; background: transparent; color: inherit; font: inherit; font-weight: inherit; text-align: left; cursor: pointer; white-space: nowrap; }
.table-sort:hover { text-decoration: underline; text-underline-offset: 3px; }
@media (max-width: 960px) { .invoice-filter-grid { grid-template-columns: repeat(2, minmax(150px, 1fr)); } }
@media (max-width: 640px) { .invoice-filter-grid { grid-template-columns: 1fr; } .invoice-filter-footer { align-items: stretch; flex-direction: column; } }
@media print { .invoice-filter-panel { display: none !important; } }


/* v9.2O · selección y propuestas de sitios */
.site-card { position: relative; }
.site-card.selected-for-proposal { outline: 2px solid var(--tusk-green); outline-offset: 2px; }
.site-proposal-check { position:absolute; z-index:4; top:10px; left:10px; min-height:30px; padding:6px 9px; border:1px solid rgba(0,15,63,.1); border-radius:999px; display:flex; align-items:center; gap:6px; color:var(--tusk-navy); background:rgba(255,250,229,.94); box-shadow:0 5px 15px rgba(0,15,63,.12); font-size:9px; font-weight:850; cursor:pointer; }
.site-proposal-check input { width:14px; height:14px; margin:0; accent-color:var(--tusk-navy); }
.site-card-footer { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:10px; }
.site-card-footer strong { color:#718139; font-size:12px; }
.site-proposals-panel { margin-top:18px; }
.proposal-dialog { width:min(760px,calc(100vw - 24px)); }
.proposal-selection-summary { margin-bottom:16px; padding:14px; border:1px solid rgba(0,15,63,.08); border-radius:11px; background:rgba(182,200,92,.11); }
.proposal-selection-summary > strong { display:block; margin-bottom:8px; color:var(--tusk-navy); font-size:11px; }
.proposal-order-field { margin:8px 0 10px; }
.proposal-site-order-list { display:grid; gap:6px; max-height:250px; overflow:auto; }
.proposal-site-order-row { display:grid; grid-template-columns:28px minmax(0,1fr) auto; gap:8px; align-items:center; padding:7px 8px; border:1px solid rgba(0,15,63,.08); border-radius:9px; background:rgba(255,255,255,.72); }
.proposal-site-order-row > b { width:24px; height:24px; border-radius:999px; display:grid; place-items:center; color:#526616; background:rgba(182,200,92,.22); font-size:10px; }
.proposal-site-order-row span { min-width:0; display:grid; gap:1px; }
.proposal-site-order-row strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--tusk-navy); font-size:10px; }
.proposal-site-order-row small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:#68718a; font-size:9px; }
.proposal-order-actions { display:flex; gap:4px; }
.proposal-order-actions button { width:30px; height:28px; padding:0; border:1px solid rgba(0,15,63,.12); border-radius:7px; color:var(--tusk-navy); background:#fff; font-weight:900; cursor:pointer; }
.proposal-order-actions button:disabled { opacity:.32; cursor:default; }
.proposal-open-link { margin-top:10px; display:inline-flex; text-decoration:none; }
.proposal-list-item > div:last-child { flex-wrap:wrap; justify-content:flex-end; }
@media(max-width:760px){.proposal-list-item{align-items:flex-start;flex-direction:column}.proposal-list-item>div:last-child{width:100%;justify-content:flex-start}}

/* v9.2P · Fondo configurable de propuestas */
.proposal-background-options { margin:16px 0; padding:14px; border:1px solid rgba(0,15,63,.09); border-radius:12px; background:rgba(0,15,63,.025); }
.proposal-background-options > strong { display:block; margin-bottom:10px; color:var(--tusk-navy); font-size:11px; }
.proposal-background-options .field { margin-bottom:10px; }
.proposal-background-options input[type="range"] { width:100%; }
.proposal-background-note { display:block; color:#68718a; line-height:1.45; }

/* Apariencia avanzada y marca de la ficha técnica */
.site-detail-grid { color: var(--sheet-text, var(--ink)); }
.site-detail-grid .site-gallery-card, .site-detail-grid .site-info-card, .site-detail-grid .site-map-card { background: var(--sheet-card, var(--card)); }
.site-detail-grid .site-info-row span, .site-detail-grid .site-rate span { color: var(--muted); }
.site-brand { grid-column: 1 / -1; display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 4px 6px; color: var(--title-color, var(--ink)); font-size: 11px; font-weight: 700; letter-spacing: .08em; }
.site-brand img { width: 134px; max-height: 54px; object-fit: contain; object-position: left center; }
#appShell h1, #appShell h2, #appShell h3 { color: var(--title-color, var(--ink)); }
#appShell .btn.primary, #appShell .btn.dark { background: var(--button-color, var(--tusk-navy)); color: var(--button-text, #fff); }
#appShell .sidebar { color: var(--sidebar-text, #fffae5); }
#appShell .sidebar a, #appShell .sidebar button { color: inherit; }
@media print { .site-brand { break-inside: avoid; } .site-brand img { max-height: 13mm; width: 38mm; } }
#appShell .nav button:not(.active), #appShell .nav-label, #appShell .sidebar-account strong, #appShell .sidebar-account small { color: var(--sidebar-text, #fffae5); }
#appShell .nav button.active { color: var(--button-text, #fff); background: var(--button-color, var(--tusk-navy)); }
/* Evidencias mensuales y enlace de campaña */
.campaign-dialog { width:min(960px,calc(100% - 28px)); max-width:960px; }
.campaign-dialog .dialog-body { max-height:min(70vh,760px); overflow:auto; }
#campaignUploadStatus:empty { display:none; }
#campaignUploadStatus:not(:empty) { margin:10px 0; padding:9px 12px; border-radius:8px; background:var(--card); border:1px solid var(--line); }
#campaignTabReview [data-action="refresh-campaign"] { margin-bottom:10px; }
.campaign-upload-form { display:grid; grid-template-columns:1fr 1fr; gap:14px; padding:17px; background:var(--card); border:1px solid var(--line); border-radius:var(--radius); }
.campaign-upload-form .field:nth-child(3),.campaign-upload-form .field:nth-child(4),.campaign-upload-form .check-label { grid-column:1/-1; }
.campaign-upload-form .btn { justify-self:start; }
.campaign-admin-section { margin-top:25px; }.campaign-admin-section h3 { margin:0 0 12px; }
.campaign-visible-sites { margin:7px 0 14px; padding-left:22px; max-height:150px; overflow:auto; }
.campaign-visible-sites li { margin:4px 0; }
.campaign-optional-row { display:flex; align-items:center; gap:10px; padding:9px 12px; margin:6px 0; border:1px solid var(--line); border-radius:9px; cursor:pointer; }
.campaign-optional-row input { width:18px; height:18px; flex:none; }
#campaignOptionalForm .btn,#campaignSiteForm .btn { margin-top:8px; }
.campaign-evidence-count { display:block; color:var(--muted); font-size:12px; margin-top:2px; }
#campaignOptionalForm { margin-top:20px; }
.campaign-reassign { display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-top:10px; }
.campaign-reassign select { max-width:100%; min-width:min(280px,100%); flex:1; }
.campaign-evidence-row { display:grid; grid-template-columns:120px minmax(0,1fr) auto; gap:16px; align-items:center; padding:12px 0; border-bottom:1px solid var(--line); }
.campaign-evidence-media img,.campaign-evidence-media video { width:120px; height:82px; object-fit:cover; border-radius:8px; background:var(--sidebar); }
.campaign-evidence-row p { margin:5px 0; overflow-wrap:anywhere; }.campaign-evidence-row small { color:var(--muted); }.campaign-evidence-actions,.campaign-link-row { display:flex; flex-wrap:wrap; gap:7px; align-items:center; }
.campaign-link-row { margin-top:12px; }.campaign-link-row input { flex:1; min-width:210px; }
.links-filters,.links-actions,.links-pages,.link-inventory-actions { display:flex; gap:9px; flex-wrap:wrap; align-items:center; }
.links-filters { margin-bottom:14px; }.links-filters input { flex:1 1 260px; }.links-filters select { min-width:150px; }
.links-actions { margin-bottom:8px; }.links-panel .helper { margin:7px 0 16px; }
.link-inventory-row { display:grid; grid-template-columns:26px minmax(0,1fr) auto; align-items:center; gap:13px; padding:15px 0; border-bottom:1px solid var(--line); }
.link-inventory-choice input { width:19px; height:19px; }.link-inventory-info { min-width:0; }
.link-inventory-info strong { display:block; overflow-wrap:anywhere; }.link-inventory-info p { margin:5px 0; color:var(--muted); }.link-inventory-info small { display:block; color:var(--muted); overflow-wrap:anywhere; }
.links-pages { justify-content:space-between; margin-top:17px; color:var(--muted); }.links-pages > div { display:flex; gap:7px; }
.sr-only { position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0; }
@media(max-width:700px){.link-inventory-row{grid-template-columns:26px minmax(0,1fr)}.link-inventory-actions{grid-column:2}}
@media(max-width:700px){.campaign-upload-form,.campaign-evidence-row{grid-template-columns:1fr}.campaign-upload-form .field:nth-child(3),.campaign-upload-form .field:nth-child(4),.campaign-upload-form .check-label{grid-column:auto}}

/* Panel administrativo: densidad ajustable y evidencias organizadas por tarea. */
@media screen {
  .nav-sub:not(.open) { display:none; }
  .campaign-tabs { position:sticky; top:0; z-index:2; display:flex; gap:6px; margin:-4px 0 15px; padding:5px; border:1px solid var(--line); border-radius:11px; background:var(--paper); }
  .campaign-tabs button { flex:1; min-height:38px; padding:7px 10px; border:0; border-radius:8px; color:var(--muted); background:transparent; font-weight:800; }
  .campaign-tabs button[aria-selected="true"] { color:var(--tusk-cream); background:var(--tusk-navy); }
  .campaign-tab-panel > h3 { margin-bottom:4px; }
  .campaign-tab-intro { margin:0 0 13px; color:var(--muted); }
  .campaign-tab-panel .campaign-admin-section:first-child { margin-top:0; }
  .density-toggle { white-space:nowrap; }
  body.erp-compact .app { grid-template-columns:220px minmax(0,1fr); }
  body.erp-compact .sidebar { padding:18px 12px 14px; gap:10px; }
  body.erp-compact .brand { min-height:52px; padding:0 8px; }
  body.erp-compact .brand img { width:120px; }
  body.erp-compact .nav { gap:2px; }
  body.erp-compact .nav button { min-height:37px; padding:6px 9px; gap:8px; border-radius:8px; }
  body.erp-compact .nav-icon { width:23px; height:23px; }
  body.erp-compact .nav-sub { margin-left:19px; }
  body.erp-compact .nav-sub button { min-height:29px; padding:3px 8px; }
  body.erp-compact .nav-separator { margin:3px 8px 2px; padding-top:7px; }
  body.erp-compact .sidebar-account { padding:9px; }
  body.erp-compact .main { padding:21px clamp(16px,2vw,28px) 34px; }
  body.erp-compact .topbar { margin-bottom:17px; gap:12px; }
  body.erp-compact .topbar h1 { font-size:clamp(26px,2.5vw,35px); }
  body.erp-compact .panel-head h2 { font-size:18px; }
  body.erp-compact .toolbar { margin-bottom:11px; gap:8px; }
  body.erp-compact .app .btn,body.erp-compact dialog .btn { min-height:36px; padding:7px 11px; }
  body.erp-compact .app .btn.small,body.erp-compact dialog .btn.small { min-height:30px; padding:5px 8px; }
  body.erp-compact .app input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),body.erp-compact dialog input:not([type="checkbox"]):not([type="radio"]):not([type="color"]):not([type="range"]),body.erp-compact .app select,body.erp-compact dialog select,body.erp-compact .app textarea,body.erp-compact dialog textarea { min-height:37px; padding:7px 9px; }
  body.erp-compact .cards { gap:10px; margin-bottom:12px; }
  body.erp-compact .metric { min-height:108px; padding:15px 17px; }
  body.erp-compact .metric-value { margin-top:9px; font-size:clamp(24px,2vw,31px); }
  body.erp-compact .metric-foot { margin-top:3px; }
  body.erp-compact .grid-2,body.erp-compact .crm-layout { gap:12px; }
  body.erp-compact .panel-head { padding:16px 18px 9px; }
  body.erp-compact .panel-body { padding:0 18px 17px; }
  body.erp-compact .chart { height:236px; }
  body.erp-compact .bars { height:174px; }
  body.erp-compact .table-scroll { max-height:calc(100vh - 190px); }
  body.erp-compact th,body.erp-compact td { padding:9px 11px; }
  body.erp-compact td { font-size:12px; }
  body.erp-compact .table-foot { padding:9px 11px; }
  body.erp-compact .site-grid { grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; }
  body.erp-compact .site-card-body { padding:11px 12px 12px; }
  body.erp-compact .site-card-body > span { min-height:27px; }
  body.erp-compact .site-detail-grid { gap:12px; padding:12px; }
  body.erp-compact .site-detail-side { gap:12px; }
  body.erp-compact .site-info-card { padding:15px; }
  body.erp-compact .site-info-row { padding:5px 0; }
  body.erp-compact .setup-grid { gap:12px; }
  body.erp-compact .setup-card { padding:16px; }
  body.erp-compact .empty.compact { min-height:65px; padding:16px 8px; }
  body.erp-compact dialog { max-height:calc(100vh - 18px); }
  body.erp-compact .dialog-head { padding:15px 21px; }
  body.erp-compact .dialog-head h2 { font-size:22px; }
  body.erp-compact .dialog-body { padding:17px 21px; }
  body.erp-compact .dialog-actions { padding:10px 21px; }
  body.erp-compact .app .field,body.erp-compact dialog .field { gap:4px; margin-bottom:8px; }
  body.erp-compact .dialog-group { margin:3px 0 12px; }
  body.erp-compact .dialog-group-title { margin-bottom:8px; padding-bottom:5px; }
  body.erp-compact .campaign-dialog .dialog-body { max-height:75vh; }
  body.erp-compact .campaign-upload-form { gap:9px; padding:12px; }
  body.erp-compact .campaign-admin-section { margin-top:15px; }
  body.erp-compact .campaign-admin-section h3 { margin-bottom:6px; }
  body.erp-compact .campaign-visible-sites { margin:5px 0 9px; max-height:115px; }
  body.erp-compact .campaign-optional-row { margin:4px 0; padding:7px 10px; }
  body.erp-compact .campaign-evidence-row { grid-template-columns:96px minmax(0,1fr) auto; gap:11px; padding:9px 0; }
  body.erp-compact .campaign-evidence-media img,body.erp-compact .campaign-evidence-media video { width:96px; height:68px; }
  body.erp-compact .link-inventory-row { padding:10px 0; }
}
@media screen and (max-width:1350px) { body.erp-compact .site-grid { grid-template-columns:repeat(3,minmax(0,1fr)); } }
@media screen and (max-width:1050px) { body.erp-compact .site-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media screen and (max-width:760px) {
  body.erp-compact .app { display:block; }
  body.erp-compact .sidebar { width:220px; left:-240px; }
  body.erp-compact.menu-open .sidebar { left:0; }
  body.erp-compact .main { padding:15px 13px 28px; }
  body.erp-compact .site-grid { grid-template-columns:1fr; }
  body.erp-compact .campaign-evidence-row { grid-template-columns:1fr; }
  .campaign-tabs { position:static; flex-wrap:wrap; }
  .campaign-tabs button { flex:1 1 130px; }
  .topbar-title { min-width:0; }
  .topbar-actions { gap:5px; }
  .density-toggle { font-size:10px; padding:5px !important; }
}

/* Q20 / Q21 · Centro de operaciones + ficha 360° */
.dashboard-toolbar { align-items:center; }
.quick-create { display:flex; align-items:center; gap:7px; flex-wrap:wrap; color:var(--muted); font-size:12px; }
.quick-create strong { color:var(--tusk-navy); margin-right:2px; }
.dashboard-current-metrics { grid-template-columns:repeat(5,minmax(0,1fr)); }
.operations-center { margin-bottom:14px; overflow:hidden; }
.operations-center .panel-head { align-items:flex-start; }
.ops-today { padding:8px 11px; border:1px solid rgba(0,15,63,.12); border-radius:10px; font-size:12px; font-weight:800; color:var(--tusk-navy); background:rgba(255,255,255,.64); white-space:nowrap; }
.ops-summary { display:grid; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:1px; border-top:1px solid rgba(0,15,63,.08); border-bottom:1px solid rgba(0,15,63,.08); background:rgba(0,15,63,.08); }
.ops-summary button { border:0; background:var(--card); min-height:72px; padding:12px 14px; text-align:left; cursor:pointer; color:var(--tusk-navy); }
.ops-summary button:hover { background:rgba(182,200,92,.12); }
.ops-summary button.danger strong { color:#a92d31; }
.ops-summary strong { display:block; font-size:23px; line-height:1; }
.ops-summary span { display:block; margin-top:5px; font-size:11px; color:var(--muted); }
.ops-grid { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:0; }
.ops-column { min-width:0; padding:13px; border-right:1px solid rgba(0,15,63,.08); }
.ops-column:last-child { border-right:0; }
.ops-column-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:7px; }
.ops-column-head h3 { margin:0; font-size:14px; color:var(--tusk-navy); }
.ops-column-head button { border:0; background:transparent; color:var(--muted); font-size:10px; cursor:pointer; padding:3px 0; }
.ops-column-head button:hover { color:var(--tusk-navy); text-decoration:underline; }
.ops-task { width:100%; display:grid; grid-template-columns:8px minmax(0,1fr) auto; gap:9px; align-items:center; border:0; border-top:1px solid rgba(0,15,63,.07); background:transparent; padding:9px 0; text-align:left; cursor:pointer; color:inherit; }
.ops-task:first-of-type { border-top:0; }
.ops-task:hover .ops-task-copy strong { text-decoration:underline; }
.ops-task-signal { width:7px; height:34px; border-radius:5px; background:#b6c85c; }
.ops-task.warning .ops-task-signal { background:#d69d32; }
.ops-task.danger .ops-task-signal { background:#b84242; }
.ops-task-copy { min-width:0; display:block; }
.ops-task-copy small,.ops-task-copy em { display:block; font-style:normal; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ops-task-copy small { color:var(--muted); font-size:9px; text-transform:uppercase; letter-spacing:.05em; }
.ops-task-copy strong { display:block; margin:2px 0; color:var(--tusk-navy); font-size:11px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ops-task-copy em { color:var(--muted); font-size:9px; }
.ops-task > b { color:var(--tusk-navy); font-size:10px; white-space:nowrap; }
.ops-clear { min-height:66px !important; font-size:11px; }
.row-actions { display:flex; gap:5px; flex-wrap:wrap; }
.row-action.primary { color:var(--tusk-navy); font-weight:800; }
.sale360-toolbar { position:sticky; top:0; z-index:5; background:var(--page); padding:5px 0 8px; }
.sale360-metrics { grid-template-columns:repeat(5,minmax(0,1fr)); }
.sale360-grid { display:grid; grid-template-columns:minmax(0,1.25fr) minmax(320px,.75fr); gap:14px; margin-bottom:14px; }
.sale360-summary .panel-body { display:grid; gap:14px; }
.sale360-status { display:inline-flex; align-items:center; min-height:30px; padding:5px 10px; border-radius:999px; background:rgba(182,200,92,.18); color:var(--tusk-navy); font-size:11px; font-weight:800; }
.sale360-info { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
.sale360-info span { padding:10px; border:1px solid rgba(0,15,63,.08); border-radius:10px; background:rgba(255,255,255,.45); }
.sale360-info small { display:block; color:var(--muted); font-size:9px; text-transform:uppercase; letter-spacing:.04em; }
.sale360-info strong { display:block; margin-top:3px; color:var(--tusk-navy); font-size:12px; overflow-wrap:anywhere; }
.sale360-campaign-progress,.sale360-progress { display:grid; gap:6px; }
.sale360-campaign-progress > div:first-child,.sale360-progress > div:first-child { display:flex; justify-content:space-between; gap:12px; font-size:11px; color:var(--muted); }
.sale360-progress > div:first-child strong,.sale360-campaign-progress > div:first-child strong { color:var(--tusk-navy); }
.sale360-progress-track { height:8px; overflow:hidden; border-radius:999px; background:rgba(0,15,63,.08); }
.sale360-progress-track i { display:block; height:100%; min-width:0; border-radius:inherit; background:linear-gradient(90deg,var(--tusk-navy),var(--tusk-lime)); }
.sale360-progress small { color:var(--muted); font-size:9px; }
.sale360-sites { display:grid; gap:7px; }
.sale360-site { width:100%; display:flex; align-items:center; justify-content:space-between; gap:10px; border:1px solid rgba(0,15,63,.09); border-radius:10px; padding:10px 12px; background:rgba(255,255,255,.5); text-align:left; cursor:pointer; }
.sale360-site:hover { border-color:rgba(0,15,63,.24); }
.sale360-site span { min-width:0; }
.sale360-site strong,.sale360-site small { display:block; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sale360-site strong { color:var(--tusk-navy); font-size:12px; }
.sale360-site small,.sale360-site em { color:var(--muted); font-size:9px; font-style:normal; }
.sale360-section { margin-bottom:14px; }
.sale360-section table small { display:block; margin-top:2px; color:var(--muted); font-size:9px; }
.sale360-link { border:0; padding:0; background:transparent; color:var(--tusk-navy); font-weight:800; cursor:pointer; text-align:left; }
.sale360-link:hover { text-decoration:underline; }
.sale360-subsection { padding:12px 18px 18px; border-top:1px solid rgba(0,15,63,.08); }
.sale360-subsection h3 { margin:0 0 7px; color:var(--tusk-navy); font-size:13px; }
.sale360-event { width:100%; display:flex; justify-content:space-between; gap:12px; padding:8px 0; border:0; border-top:1px solid rgba(0,15,63,.06); background:transparent; cursor:pointer; text-align:left; }
.sale360-event:first-of-type { border-top:0; }
.sale360-event strong,.sale360-event small { display:block; }
.sale360-event strong { color:var(--tusk-navy); font-size:11px; }
.sale360-event small { color:var(--muted); font-size:9px; }
.sale360-event b { color:var(--tusk-navy); font-size:11px; }

@media screen and (max-width:1450px) {
  .ops-grid { grid-template-columns:repeat(3,minmax(0,1fr)); }
  .ops-column { border-bottom:1px solid rgba(0,15,63,.08); }
  .dashboard-current-metrics,.sale360-metrics { grid-template-columns:repeat(3,minmax(0,1fr)); }
}
@media screen and (max-width:1050px) {
  .ops-summary { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .ops-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .sale360-grid { grid-template-columns:1fr; }
  .sale360-info { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media screen and (max-width:700px) {
  .dashboard-current-metrics,.sale360-metrics,.ops-summary,.ops-grid { grid-template-columns:1fr; }
  .ops-column { border-right:0; }
  .sale360-info { grid-template-columns:1fr; }
  .sale360-toolbar { position:static; }
}

/* Q20.1 · Interfaz limpia y contenido progresivo */
.compact-head { padding-bottom:12px; }
.dashboard-view-label { display:flex; flex-direction:column; gap:2px; min-width:0; }
.dashboard-view-label strong { color:var(--tusk-navy); font-size:13px; }
.dashboard-view-label span { color:var(--muted); font-size:10px; }

.action-menu { position:relative; }
.action-menu > summary { list-style:none; cursor:pointer; user-select:none; display:inline-flex; align-items:center; gap:6px; }
.action-menu > summary::-webkit-details-marker { display:none; }
.action-menu[open] > summary { box-shadow:0 0 0 2px rgba(0,15,63,.08); }
.action-menu-popover { position:absolute; right:0; top:calc(100% + 7px); z-index:40; min-width:210px; padding:7px; border:1px solid rgba(0,15,63,.12); border-radius:12px; background:var(--card); box-shadow:0 18px 48px rgba(0,15,63,.18); display:grid; gap:3px; }
.action-menu-popover button { width:100%; border:0; border-radius:8px; background:transparent; color:var(--tusk-navy); padding:9px 10px; text-align:left; font:inherit; font-size:11px; cursor:pointer; }
.action-menu-popover button:hover { background:rgba(182,200,92,.14); }
.action-menu-popover button:disabled { opacity:.45; cursor:not-allowed; }
.action-menu-popover .danger { color:#a92d31; }

.ops-accordion { display:grid; }
.ops-disclosure { border-top:1px solid rgba(0,15,63,.08); }
.ops-disclosure:first-child { border-top:0; }
.ops-disclosure > summary { list-style:none; min-height:54px; padding:10px 15px; display:flex; align-items:center; justify-content:space-between; gap:14px; cursor:pointer; user-select:none; }
.ops-disclosure > summary::-webkit-details-marker { display:none; }
.ops-disclosure > summary:hover { background:rgba(182,200,92,.08); }
.ops-disclosure > summary > span { min-width:0; display:grid; grid-template-columns:auto auto 1fr; align-items:center; gap:8px; }
.ops-disclosure > summary strong { color:var(--tusk-navy); font-size:12px; }
.ops-disclosure > summary small { color:var(--muted); font-size:10px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.ops-disclosure > summary > b { min-width:28px; height:28px; display:grid; place-items:center; border-radius:999px; background:rgba(0,15,63,.07); color:var(--tusk-navy); font-size:11px; }
.ops-disclosure[open] > summary { background:rgba(0,15,63,.025); }
.ops-disclosure[open] > summary > b { background:var(--tusk-navy); color:var(--tusk-cream); }
.ops-dot { width:8px; height:8px; border-radius:999px; background:var(--tusk-lime); }
.ops-disclosure.is-warning .ops-dot { background:#d69d32; }
.ops-disclosure.is-danger .ops-dot { background:#b84242; }
.ops-disclosure-body { padding:0 15px 13px 31px; }
.ops-list { border:1px solid rgba(0,15,63,.07); border-radius:10px; padding:0 10px; background:rgba(255,255,255,.38); }
.ops-open-module { width:100%; border:0; background:transparent; color:var(--tusk-navy); font-size:10px; font-weight:800; padding:10px 2px 0; text-align:right; cursor:pointer; }
.ops-open-module:hover { text-decoration:underline; }

.dashboard-disclosure { border-top:1px solid rgba(0,15,63,.08); }
.dashboard-disclosure > summary,.dashboard-secondary > summary,.sale360-disclosure > summary,.sale360-compact-panel > summary { list-style:none; cursor:pointer; user-select:none; }
.dashboard-disclosure > summary::-webkit-details-marker,.dashboard-secondary > summary::-webkit-details-marker,.sale360-disclosure > summary::-webkit-details-marker,.sale360-compact-panel > summary::-webkit-details-marker { display:none; }
.dashboard-disclosure > summary { min-height:56px; padding:10px 16px; display:flex; align-items:center; justify-content:space-between; gap:12px; }
.dashboard-disclosure > summary:hover { background:rgba(182,200,92,.08); }
.dashboard-disclosure > summary span:first-child { min-width:0; }
.dashboard-disclosure > summary strong,.dashboard-disclosure > summary small { display:block; }
.dashboard-disclosure > summary strong { color:var(--tusk-navy); font-size:12px; }
.dashboard-disclosure > summary small { margin-top:2px; color:var(--muted); font-size:10px; }
.disclosure-badges { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.disclosure-badges b { padding:5px 8px; border-radius:999px; background:rgba(0,15,63,.07); color:var(--tusk-navy); font-size:9px; white-space:nowrap; }
.disclosure-badges b.danger { background:rgba(184,66,66,.12); color:#9f3034; }
.dashboard-disclosure-body { border-top:1px solid rgba(0,15,63,.07); }

.dashboard-secondary-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px; }
.dashboard-secondary { overflow:visible; }
.dashboard-secondary > summary { min-height:72px; padding:14px 17px; display:flex; align-items:center; justify-content:space-between; gap:14px; }
.dashboard-secondary > summary:hover { background:rgba(182,200,92,.07); }
.dashboard-secondary > summary span { min-width:0; }
.dashboard-secondary > summary small,.dashboard-secondary > summary strong,.dashboard-secondary > summary em { display:block; }
.dashboard-secondary > summary small { color:var(--muted); font-size:9px; text-transform:uppercase; letter-spacing:.05em; }
.dashboard-secondary > summary strong { margin:2px 0; color:var(--tusk-navy); font-size:14px; }
.dashboard-secondary > summary em { color:var(--muted); font-size:10px; font-style:normal; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.dashboard-secondary > summary > b { color:var(--tusk-navy); font-size:11px; }
.dashboard-secondary[open] > summary { border-bottom:1px solid rgba(0,15,63,.08); }
.dashboard-secondary-body { padding:14px 17px 17px; }
.secondary-toolbar { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:10px; }
.secondary-toolbar p { margin:0; color:var(--muted); font-size:10px; }

.sale360-toolbar-actions { align-items:center; }
.sale360-compact-panel { align-self:start; overflow:visible; }
.sale360-compact-panel > summary { min-height:76px; padding:14px 17px; display:flex; justify-content:space-between; align-items:center; gap:12px; }
.sale360-compact-panel > summary:hover { background:rgba(182,200,92,.08); }
.sale360-compact-panel > summary small,.sale360-compact-panel > summary strong { display:block; }
.sale360-compact-panel > summary small { color:var(--muted); font-size:9px; text-transform:uppercase; letter-spacing:.04em; }
.sale360-compact-panel > summary strong { margin-top:4px; color:var(--tusk-navy); font-size:13px; }
.sale360-compact-panel > summary > b { min-width:30px; height:30px; display:grid; place-items:center; border-radius:999px; background:rgba(0,15,63,.07); color:var(--tusk-navy); font-size:11px; }
.sale360-compact-panel[open] > summary { border-bottom:1px solid rgba(0,15,63,.08); }

.sale360-accordion { display:grid; gap:10px; margin-bottom:14px; }
.sale360-disclosure { overflow:visible; margin:0; }
.sale360-disclosure > summary { min-height:72px; padding:12px 17px; display:flex; align-items:center; justify-content:space-between; gap:14px; }
.sale360-disclosure > summary:hover { background:rgba(182,200,92,.08); }
.sale360-disclosure > summary span { min-width:0; }
.sale360-disclosure > summary small,.sale360-disclosure > summary strong,.sale360-disclosure > summary em { display:block; }
.sale360-disclosure > summary small { color:var(--muted); font-size:9px; text-transform:uppercase; letter-spacing:.05em; }
.sale360-disclosure > summary strong { margin:2px 0; color:var(--tusk-navy); font-size:13px; }
.sale360-disclosure > summary em { color:var(--muted); font-size:10px; font-style:normal; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.sale360-disclosure > summary > b { min-width:30px; height:30px; display:grid; place-items:center; border-radius:999px; background:rgba(0,15,63,.07); color:var(--tusk-navy); font-size:11px; }
.sale360-disclosure[open] > summary { border-bottom:1px solid rgba(0,15,63,.08); }
.sale360-disclosure-body { padding:0 0 4px; }
.sale360-section-actions { display:flex; justify-content:flex-end; padding:10px 16px 0; }

@media screen and (max-width:1050px) {
  .dashboard-secondary-grid { grid-template-columns:1fr; }
}
@media screen and (max-width:700px) {
  .dashboard-view-label span { display:none; }
  .action-menu-popover { position:fixed; left:14px; right:14px; top:auto; bottom:14px; min-width:0; }
  .ops-disclosure > summary > span { grid-template-columns:auto 1fr; }
  .ops-disclosure > summary small { grid-column:2; }
  .disclosure-badges { display:none; }
  .secondary-toolbar { align-items:flex-start; flex-direction:column; }
}

/* Q22 · Automatizaciones y recordatorios */
.ops-today small { display:block; margin-top:3px; color:var(--muted); font-size:9px; font-weight:700; }
.ops-automation-note { margin:10px 0 0; padding:9px 11px; border-radius:10px; background:rgba(0,15,63,.035); color:var(--muted); font-size:10px; line-height:1.45; }
.ops-automation-note strong { color:var(--tusk-navy); }
.sale360-automation-hint { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:9px 10px; border:1px dashed rgba(0,15,63,.16); border-radius:10px; background:rgba(182,200,92,.07); }
.sale360-automation-hint span { min-width:0; }
.sale360-automation-hint small,.sale360-automation-hint strong { display:block; }
.sale360-automation-hint small { color:var(--muted); font-size:9px; text-transform:uppercase; letter-spacing:.04em; }
.sale360-automation-hint strong { margin-top:2px; color:var(--tusk-navy); font-size:11px; }

/* Q23 · Inventario por fechas + selección de fotos en propuestas */
.inventory-filters { grid-template-columns:minmax(220px,1.5fr) repeat(4,minmax(120px,.65fr)) repeat(2,minmax(132px,.58fr)) minmax(170px,.7fr) auto; align-items:end; }
.inventory-date-filter { display:grid; gap:4px; }
.inventory-date-filter span { color:var(--muted); font-size:9px; font-weight:800; text-transform:uppercase; letter-spacing:.06em; }
.inventory-date-filter input { width:100%; min-height:40px; }
.site-status.availability-available { color:#315c19; background:#eff8df; border-color:rgba(74,118,34,.2); }
.site-status.availability-partial { color:#715a00; background:#fff6cf; border-color:rgba(157,124,0,.18); }
.site-status.availability-occupied { color:#8d2730; background:#fff0f1; border-color:rgba(150,44,55,.18); }
.site-status.availability-unknown { color:#5f6675; background:#f0f1f4; }
.availability-range-note { color:#6b7587!important; font-size:8px!important; }
.inventory-calendar-panel { margin-bottom:18px; }
.inventory-calendar-panel > summary { cursor:pointer; padding:13px 16px; display:flex; align-items:center; justify-content:space-between; gap:14px; }
.inventory-calendar-panel > summary > span { display:grid; gap:2px; }
.inventory-calendar-panel > summary small { color:#748132; font-size:8px; font-weight:900; text-transform:uppercase; letter-spacing:.1em; }
.inventory-calendar-panel > summary strong { font-size:13px; }
.inventory-calendar-panel > summary em { color:var(--muted); font-size:9px; font-style:normal; }
.availability-timeline { padding:0 16px 16px; overflow:auto; }
.availability-timeline-head,.availability-timeline-row { min-width:760px; display:grid; grid-template-columns:minmax(210px,1.2fr) repeat(6,minmax(78px,.5fr)); gap:6px; align-items:center; }
.availability-timeline-head { padding:7px 0; color:var(--muted); font-size:8px; font-weight:850; text-transform:uppercase; }
.availability-timeline-row { padding:6px 0; border-top:1px solid rgba(0,15,63,.06); }
.availability-timeline-row > span { min-width:0; display:grid; gap:1px; }
.availability-timeline-row strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:9px; }
.availability-timeline-row small { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--muted); font-size:8px; }
.availability-cell { padding:6px 4px; border-radius:7px; text-align:center; font-size:8px; }
.availability-cell.available { color:#315c19; background:#eff8df; }
.availability-cell.partial { color:#715a00; background:#fff6cf; }
.availability-cell.occupied { color:#8d2730; background:#fff0f1; }
.availability-cell.unknown { color:#5f6675; background:#f0f1f4; }
.proposal-photo-options { margin:0 0 16px; padding:14px; border:1px solid rgba(0,15,63,.08); border-radius:11px; background:#fbfbf6; }
.proposal-photo-picker { margin-top:10px; display:grid; gap:8px; max-height:360px; overflow:auto; }
.proposal-photo-site { border:1px solid rgba(0,15,63,.08); border-radius:10px; background:#fff; overflow:hidden; }
.proposal-photo-site > summary { cursor:pointer; padding:9px 10px; display:flex; justify-content:space-between; align-items:center; gap:10px; }
.proposal-photo-site > summary span { display:grid; gap:1px; min-width:0; }
.proposal-photo-site > summary strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:10px; }
.proposal-photo-site > summary small { color:var(--muted); font-size:8px; }
.proposal-photo-site > summary b { min-width:24px; height:24px; padding:0 6px; border-radius:999px; display:grid; place-items:center; color:#526616; background:rgba(182,200,92,.2); font-size:9px; }
.proposal-photo-grid { padding:10px; border-top:1px solid rgba(0,15,63,.06); display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:8px; }
.proposal-photo-choice { border:1px solid rgba(0,15,63,.08); border-radius:9px; overflow:hidden; background:#f7f7f2; }
.proposal-photo-choice.is-selected { border-color:rgba(116,129,50,.35); box-shadow:0 0 0 2px rgba(182,200,92,.12) inset; }
.proposal-photo-thumb { display:block; aspect-ratio:16/9; overflow:hidden; background:#eef0e9; }
.proposal-photo-thumb img { width:100%; height:100%; object-fit:cover; }
.proposal-photo-controls { padding:7px; display:grid; gap:5px; font-size:8px; }
.proposal-photo-controls > span { display:flex; gap:5px; align-items:center; }
@media(max-width:1100px){.inventory-filters{grid-template-columns:repeat(4,minmax(150px,1fr))}.inventory-filters #siteSearch{grid-column:1/-1}}
@media(max-width:700px){.inventory-filters{grid-template-columns:1fr}.inventory-filters #siteSearch{grid-column:auto}.proposal-photo-grid{grid-template-columns:1fr 1fr}}

/* Q23.1 · Galería más limpia */
.inventory-filter-bar { display:grid; grid-template-columns:minmax(300px,1.7fr) minmax(190px,.75fr) auto auto; gap:10px; align-items:start; margin-bottom:18px; }
.inventory-more-filters { position:relative; min-width:150px; }
.inventory-more-filters > summary { min-height:42px; display:flex; align-items:center; justify-content:center; gap:7px; padding:0 14px; border:1px solid rgba(0,15,63,.12); border-radius:10px; background:#fff; color:var(--navy); font-weight:850; cursor:pointer; list-style:none; white-space:nowrap; }
.inventory-more-filters > summary::-webkit-details-marker { display:none; }
.inventory-more-filters > summary b { min-width:20px; height:20px; display:inline-grid; place-items:center; border-radius:999px; background:rgba(135,164,50,.16); color:var(--olive); font-size:9px; }
.inventory-more-filters[open] > summary { border-color:rgba(135,164,50,.45); box-shadow:0 0 0 3px rgba(135,164,50,.08); }
.inventory-more-grid { position:absolute; right:0; z-index:30; width:min(720px,calc(100vw - 60px)); margin-top:8px; padding:14px; display:grid; grid-template-columns:repeat(3,minmax(150px,1fr)); gap:10px; background:#fff; border:1px solid rgba(0,15,63,.1); border-radius:14px; box-shadow:0 16px 36px rgba(0,15,63,.13); }
.inventory-more-grid .inventory-date-filter { min-width:0; }
.inventory-filter-bar > .btn.ghost { min-height:42px; }
.inventory-calendar-panel .availability-timeline { max-height:560px; overflow:auto; }
.inventory-calendar-panel .availability-timeline-head { position:sticky; top:0; z-index:2; background:var(--surface,#fff); }
@media(max-width:900px){.inventory-filter-bar{grid-template-columns:1fr 1fr}.inventory-filter-bar #siteSearch{grid-column:1/-1}.inventory-more-grid{position:fixed;left:20px;right:20px;top:120px;width:auto;grid-template-columns:1fr 1fr;max-height:70vh;overflow:auto}}
@media(max-width:620px){.inventory-filter-bar{grid-template-columns:1fr}.inventory-filter-bar #siteSearch{grid-column:auto}.inventory-more-grid{grid-template-columns:1fr}}

/* Q24 · gestión comercial de propuestas */
.proposal-commercial-options { margin:14px 0; border:1px solid rgba(0,15,63,.09); border-radius:12px; background:rgba(0,15,63,.02); }
.proposal-commercial-options > summary { padding:12px 14px; color:var(--tusk-navy); font-size:11px; font-weight:850; cursor:pointer; }
.proposal-commercial-options-body { padding:0 14px 14px; }
.proposal-client-actions { margin-top:4px; }
.proposal-list-title { display:flex; align-items:center; gap:8px; }
.proposal-version { display:inline-flex; min-width:28px; height:22px; padding:0 7px; border-radius:999px; align-items:center; justify-content:center; color:#526616; background:rgba(182,200,92,.18); font-size:9px; font-weight:900; }
.proposal-status-select { min-height:34px; max-width:145px; border:1px solid rgba(0,15,63,.12); border-radius:8px; padding:0 8px; color:var(--tusk-navy); background:#fff; font-size:9px; font-weight:800; }
.opportunity-proposals-block { margin-top:12px; }
.opportunity-proposal-row { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:9px 10px; border-bottom:1px solid rgba(0,15,63,.07); }
.opportunity-proposal-row:last-child { border-bottom:0; }
.opportunity-proposal-row > span:first-child { min-width:0; display:grid; gap:2px; }
.opportunity-proposal-row strong { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; color:var(--tusk-navy); font-size:10px; }
.opportunity-proposal-row small { color:#68718a; font-size:9px; }
.opportunity-proposal-row > span:last-child { display:flex; gap:6px; }
@media(max-width:760px){.opportunity-proposal-row{align-items:flex-start;flex-direction:column}.proposal-status-select{max-width:none}}
.proposal-kpi-row { margin-bottom:12px; display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:8px; }
.proposal-kpi-row > div { padding:10px 12px; border:1px solid rgba(0,15,63,.07); border-radius:10px; display:grid; gap:2px; background:rgba(255,255,255,.72); }
.proposal-kpi-row span { color:#68718a; font-size:8px; font-weight:800; text-transform:uppercase; letter-spacing:.05em; }
.proposal-kpi-row strong { color:var(--tusk-navy); font-size:16px; }
@media(max-width:680px){.proposal-kpi-row{grid-template-columns:1fr 1fr}}

/* Q24.2 · respuesta del cliente en propuestas */
.proposal-client-response{margin:.45rem 0 .35rem;padding:.55rem .7rem;border-radius:12px;background:rgba(173,194,79,.10);border:1px solid rgba(173,194,79,.28);display:grid;gap:.15rem}
.proposal-client-response strong{font-size:.72rem;text-transform:uppercase;letter-spacing:.06em;color:var(--navy,#00154f)}
.proposal-client-response span{font-size:.86rem;line-height:1.35;color:#32405f}
.opportunity-proposal-note{display:block;margin-top:.28rem;font-size:.82rem;font-style:normal;color:#52607d;line-height:1.35}

/* Q25 · CRM y seguimiento comercial */
.crm-priority { display: inline-flex; align-items: center; width: max-content; padding: 2px 7px; border-radius: 999px; font-size: 7px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; vertical-align: middle; }
.crm-priority.priority-alta { color: #8d281f; background: #fde8e5; }
.crm-priority.priority-media { color: #6e5a16; background: #f7f0cf; }
.crm-priority.priority-baja { color: #49605a; background: #e9f0ed; }
.crm-opportunity-row > span:last-child { align-items: end; }
.crm-opportunity-row .crm-priority { justify-self: end; }
.pipeline-next { margin-top: 4px; display: flex !important; align-items: center; gap: 5px; white-space: normal !important; line-height: 1.35; }
.pipeline-card.pipeline-due { border-color: rgba(179, 72, 55, .45); box-shadow: inset 3px 0 0 rgba(179, 72, 55, .65); }
.crm-next-action { border-left: 4px solid var(--tusk-green); }
.crm-next-action .toolbar-actions { flex-wrap: wrap; justify-content: flex-end; }
@media (max-width: 760px) {
  .crm-next-action { align-items: flex-start; flex-direction: column; }
  .crm-next-action .toolbar-actions { justify-content: flex-start; }
}

/* Q26 — Rentabilidad y flujo */
.finance-top-metrics { margin-bottom: 14px; }
.finance-note { margin: 0 0 14px; padding: 11px 13px; border: 1px solid var(--line, #dde1e8); border-radius: 12px; background: rgba(255,255,255,.58); color: var(--muted-color, #66708b); font-size: .88rem; }
.finance-note.warning { border-color: rgba(190,139,0,.3); }
.toolbar-subtitle { display:block; margin-top:4px; color:var(--muted-color,#66708b); font-size:.82rem; }
.finance-accordion { display:grid; gap:12px; }
.finance-disclosure > summary { cursor:pointer; list-style:none; display:flex; justify-content:space-between; align-items:center; gap:16px; padding:16px 18px; }
.finance-disclosure > summary::-webkit-details-marker { display:none; }
.finance-disclosure > summary span { display:grid; gap:2px; }
.finance-disclosure > summary small { text-transform:uppercase; letter-spacing:.08em; font-size:.68rem; color:var(--muted-color,#66708b); }
.finance-disclosure > summary strong { font-size:1rem; }
.finance-disclosure > summary em { font-style:normal; color:var(--muted-color,#66708b); font-size:.82rem; }
.finance-disclosure-body { border-top:1px solid var(--line,#e6e7eb); padding:14px 16px 16px; }
.table-card.embedded { box-shadow:none; margin:0; }
.finance-inline-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-bottom:12px; }
.finance-inline-metrics > span, .finance-dashboard-summary > span { padding:12px; border:1px solid var(--line,#e3e5ea); border-radius:12px; background:rgba(255,255,255,.54); display:grid; gap:4px; }
.finance-inline-metrics small, .finance-dashboard-summary small { color:var(--muted-color,#66708b); font-size:.72rem; }
.finance-inline-metrics strong, .finance-dashboard-summary strong { font-size:1rem; }
.finance-sub { border:1px solid var(--line,#e3e5ea); border-radius:12px; margin-top:9px; overflow:hidden; }
.finance-sub > summary { cursor:pointer; list-style:none; padding:12px 14px; display:flex; justify-content:space-between; font-weight:700; }
.finance-sub > summary::-webkit-details-marker { display:none; }
.finance-sub > .table-scroll, .finance-sub > .empty { border-top:1px solid var(--line,#e3e5ea); }
.finance-footnote { margin:10px 2px 0; color:var(--muted-color,#66708b); font-size:.78rem; line-height:1.45; }
.finance-dashboard-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:9px; margin-bottom:12px; }
.result-warning { color:#9a6c00; }
.sale-finance-inline { grid-template-columns:repeat(5,minmax(0,1fr)); }
@media (max-width: 900px) {
  .finance-inline-metrics, .sale-finance-inline, .finance-dashboard-summary { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 560px) {
  .finance-inline-metrics, .sale-finance-inline, .finance-dashboard-summary { grid-template-columns:1fr; }
}

/* Q27 · Operación de campañas y órdenes de trabajo */
.operation-hero{display:flex;gap:18px;align-items:center;justify-content:space-between;margin-bottom:18px}.operation-kpis{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));gap:10px;flex:1}.operation-kpis>button,.operation-kpis>div{border:1px solid var(--line,#e5e3da);background:var(--card,#fffefa);border-radius:14px;padding:14px;text-align:left;color:inherit}.operation-kpis strong{display:block;font-size:1.45rem}.operation-kpis span{display:block;color:var(--muted,#66708b);font-size:.82rem;margin-top:3px}.operation-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:12px;padding:16px}.operation-card{border:1px solid var(--line,#e5e3da);background:var(--card,#fffefa);border-radius:14px;padding:16px;display:grid;gap:12px}.operation-card.is-overdue{border-left:4px solid #a7353f}.operation-card.is-today{border-left:4px solid #c6942d}.operation-card>header{display:flex;justify-content:space-between;gap:14px;align-items:flex-start}.operation-card h3{margin:2px 0 4px;font-size:1rem}.operation-card header small{color:var(--muted,#66708b)}.operation-status{white-space:nowrap;border-radius:999px;background:#eef1f7;padding:6px 9px;font-size:.75rem;font-weight:800}.operation-status.is-done{background:#e7f4e8}.operation-status.is-progress{background:#fff2d6}.operation-status.is-danger{background:#fde8ea}.operation-meta{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.operation-meta span{display:grid;gap:2px;padding:8px 10px;border-radius:10px;background:rgba(0,15,63,.035);font-size:.84rem}.operation-meta b{font-size:.7rem;text-transform:uppercase;letter-spacing:.05em;color:var(--muted,#66708b)}.operation-note{margin:0;padding:10px;border-radius:10px;background:rgba(182,200,92,.12);font-size:.86rem}.operation-card footer{display:flex;gap:7px;flex-wrap:wrap}.operation-card footer a.btn{text-decoration:none}.operation-disclosure>summary{list-style:none;cursor:pointer;padding:17px 18px;display:flex;justify-content:space-between;align-items:center}.operation-disclosure>summary::-webkit-details-marker{display:none}.operation-disclosure>summary span{display:grid;gap:3px}.operation-disclosure>summary small{color:var(--muted,#66708b);font-weight:400}.operation-campaigns{display:grid;gap:8px;padding:16px}.operation-campaigns>div{display:flex;gap:10px;align-items:center;border:1px solid var(--line,#e5e3da);border-radius:12px;padding:11px 12px}.operation-campaigns>div>span{display:grid;gap:2px;flex:1}.operation-campaigns small{color:var(--muted,#66708b)}.sale360-operation-strip{padding:14px 16px;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:14px}.sale360-operation-strip>div:first-child{display:flex;gap:24px;flex-wrap:wrap}.sale360-operation-strip span{display:grid;gap:2px}.sale360-operation-strip small,.sale360-operation-strip em{color:var(--muted,#66708b);font-style:normal;font-size:.75rem}
@media(max-width:900px){.operation-hero{align-items:stretch;flex-direction:column}.operation-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.sale360-operation-strip{align-items:flex-start;flex-direction:column}}
@media(max-width:620px){.operation-kpis{grid-template-columns:1fr 1fr}.operation-grid{grid-template-columns:1fr;padding:10px}.operation-meta{grid-template-columns:1fr}.operation-campaigns>div{align-items:flex-start;flex-wrap:wrap}}

/* Q27.9 · Bloqueos externos y disponibilidad compartida */
.site-block-panel .panel-head { align-items:center; }
.site-block-list { display:grid; }
.site-block-row,.availability-link-row { padding:10px 0; border-bottom:1px solid rgba(0,15,63,.08); display:flex; align-items:center; justify-content:space-between; gap:14px; }
.site-block-row:last-child,.availability-link-row:last-child { border-bottom:0; }
.site-block-row > span,.availability-link-row > span { min-width:0; display:grid; gap:2px; }
.site-block-row strong,.availability-link-row strong { font-size:10px; color:var(--tusk-navy); }
.site-block-row small,.availability-link-row small { color:var(--muted); font-size:8px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.site-block-row > div,.availability-link-row > div { display:flex; gap:6px; flex:0 0 auto; }
.availability-share-dialog { width:min(760px,calc(100vw - 24px)); }
.availability-link-list { margin-top:16px; padding-top:5px; border-top:1px solid rgba(0,15,63,.08); }
@media (max-width:700px) { .site-block-row,.availability-link-row { align-items:flex-start; flex-direction:column; }.site-block-row > div,.availability-link-row > div { width:100%; }.site-block-row > div .btn,.availability-link-row > div .btn { flex:1; } }

/* Q27.10 · Prefacturación compacta */
.invoice-workspace{border:1px solid var(--line,#e3e5ea);border-radius:16px;background:var(--card-color,#fff);overflow:hidden}
.invoice-workspace-head{display:flex;justify-content:space-between;gap:18px;align-items:flex-start;padding:16px 18px;border-bottom:1px solid var(--line,#e3e5ea)}
.invoice-workspace-head h2{margin:0 0 3px;font-size:1rem}.invoice-workspace-head p{margin:0;color:var(--muted-color,#66708b);font-size:.8rem}.invoice-workspace-head>span{font-size:.75rem;color:var(--muted-color,#66708b);white-space:nowrap}
.invoice-compact-list{display:grid}.invoice-compact-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 12px;border-bottom:1px solid rgba(0,15,63,.07)}.invoice-compact-row:last-child{border-bottom:0}.invoice-compact-row:hover{background:rgba(0,15,63,.018)}
.invoice-compact-main{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:14px;min-width:0}.invoice-compact-open{appearance:none;border:0;background:transparent;color:inherit;padding:0;display:grid;grid-template-columns:minmax(120px,.7fr) minmax(180px,1.4fr) minmax(190px,1fr);align-items:center;gap:14px;text-align:left;min-width:0;cursor:pointer}.invoice-compact-open:focus-visible{outline:2px solid #000f3f;outline-offset:4px;border-radius:4px}
.invoice-compact-main span{min-width:0}.invoice-compact-id,.invoice-compact-client,.invoice-compact-tax{display:grid;gap:2px}.invoice-compact-id strong,.invoice-compact-client strong,.invoice-compact-tax strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:.86rem}.invoice-compact-id small,.invoice-compact-client small,.invoice-compact-tax small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted-color,#66708b);font-size:.72rem}.invoice-compact-tax{text-align:right}
.invoice-doc-state{display:inline-flex;align-items:center;justify-content:center;padding:5px 8px;border-radius:999px;background:#eef1f7;color:#53617c;font-size:.66rem;font-weight:800;letter-spacing:.05em;white-space:nowrap}.invoice-doc-state.state-prefactura{background:#f4efe0;color:#795e16}.invoice-doc-state.state-prefactura-enviada{background:#fff0d4;color:#8b6111}.invoice-doc-state.state-aprobada{background:#e6eefc;color:#24529a}.invoice-doc-state.state-emitida{background:#e5f3e8;color:#22623b}.invoice-doc-state.state-cancelada{background:#f8e6e9;color:#8b2a35}
.invoice-compact-actions{justify-content:flex-end;flex-wrap:nowrap}.invoice-compact-actions .row-action{white-space:nowrap}
@media(max-width:980px){.invoice-compact-row{grid-template-columns:1fr}.invoice-compact-actions{justify-content:flex-start}.invoice-compact-open{grid-template-columns:minmax(110px,.8fr) minmax(150px,1.3fr) minmax(170px,1fr)}}
@media(max-width:700px){.invoice-workspace-head{flex-direction:column}.invoice-compact-main{grid-template-columns:1fr;gap:8px}.invoice-compact-open{grid-template-columns:1fr 1fr}.invoice-compact-tax{text-align:left}.invoice-doc-state{justify-self:start}.invoice-compact-actions{flex-wrap:wrap}}
