:root {
  --bg: #FAF4F7;
  --card: #fff;
  --plum: #6D2A52;
  --plum-dark: #451B36;
  --gold: #A8791F;
  --gold-soft: #F5EAD2;
  --ink: #3A2530;
  --muted: #8A6B7A;
  --soft: #F3E3EB;
  --line: #E9D3DE;
  --green: #2F7D4F;
  --green-soft: #E4F2E9;
  --amber: #9A5B0B;
  --amber-soft: #FBEFDA;
}
* { box-sizing: border-box; margin: 0; }
body { background: var(--bg); color: var(--ink); font-family: system-ui, -apple-system, sans-serif; }
.wrap { max-width: 760px; margin: 0 auto; padding: 32px 16px 48px; }

.head { text-align: center; margin-bottom: 24px; }
.eyebrow { font-size: 11px; letter-spacing: .2em; text-transform: uppercase; font-weight: 600; color: var(--gold); }
.head h1 { font-family: Georgia, serif; color: var(--plum-dark); font-size: 30px; margin-top: 4px; }

.summary { background: linear-gradient(135deg, var(--plum-dark), var(--plum)); color: #fff; border-radius: 18px; padding: 20px; margin-bottom: 24px; }
.summary-top { display: flex; justify-content: space-between; font-size: 14px; margin-bottom: 8px; }
.summary-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; margin-top: 16px; }
.stat { background: rgba(255,255,255,.1); border-radius: 12px; padding: 12px; }
.stat-label { font-size: 11px; opacity: .85; }
.stat-value { font-size: 17px; font-weight: 700; font-variant-numeric: tabular-nums; margin: 2px 0; }
.stat-value.green { color: #A7E8C3; }
.stat-value.amber { color: #F7D9A0; }
.stat-sub { font-size: 11px; opacity: .7; }
@media (max-width: 560px) { .summary-grid { grid-template-columns: 1fr; } }

.bar { background: var(--soft); border-radius: 99px; height: 5px; overflow: hidden; flex: 1; }
.bar.big { height: 8px; background: rgba(255,255,255,.18); }
.fill { background: var(--plum); height: 100%; border-radius: 99px; transition: width .3s ease; }
.fill.gold { background: var(--gold-soft); }

.category { background: var(--card); border: 1px solid var(--line); border-radius: 16px; margin-bottom: 12px; overflow: hidden; }
.cat-head { display: flex; align-items: center; gap: 12px; width: 100%; padding: 14px 16px; background: none; border: none; cursor: pointer; text-align: left; font: inherit; }
.cat-title { font-weight: 600; color: var(--plum-dark); display: flex; align-items: center; gap: 8px; }
.cat-main { flex: 1; min-width: 0; }
.cat-meta { display: flex; align-items: center; gap: 8px; margin-top: 6px; }
.cat-count { font-size: 11px; color: var(--muted); font-variant-numeric: tabular-nums; }
.cat-quote-total { font-size: 12px; font-weight: 600; color: var(--gold); font-variant-numeric: tabular-nums; }
.chev { color: var(--plum); font-size: 12px; width: 14px; }
.badge-done { font-size: 10px; background: var(--green-soft); color: var(--green); padding: 2px 8px; border-radius: 99px; font-weight: 600; }

.cat-body { padding: 0 16px 16px; }
.task { display: flex; align-items: center; gap: 10px; padding: 5px 0; }
.task .del { opacity: 0; }
.task:hover .del { opacity: .4; }
.check { width: 20px; height: 20px; border-radius: 6px; border: 1.5px solid var(--line); background: #fff; cursor: pointer; flex-shrink: 0; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 12px; }
.check.on { background: var(--plum); border-color: var(--plum); }
.task-text { flex: 1; font-size: 14px; }
.task-text.done { color: var(--muted); text-decoration: line-through; }
.del { background: none; border: none; cursor: pointer; color: var(--ink); font-size: 13px; }
.del:hover { opacity: 1 !important; }

.row-add { display: flex; gap: 8px; margin-top: 8px; }
.row-add input { flex: 1; font-size: 14px; padding: 7px 12px; border-radius: 10px; border: 1px solid var(--line); background: var(--bg); color: var(--ink); outline: none; }
.row-add input:focus { border-color: var(--plum); }
.row-add input.amount { flex: 0 0 110px; text-align: right; }
.btn { background: var(--plum); color: #fff; border: none; border-radius: 10px; padding: 7px 14px; font-size: 13px; font-weight: 500; cursor: pointer; }
.btn.soft { background: var(--soft); color: var(--plum); }

.quotes { border-top: 1px dashed var(--line); margin-top: 12px; padding-top: 12px; }
.quotes-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 6px; }
.quotes-head span { font-size: 11px; letter-spacing: .08em; text-transform: uppercase; font-weight: 600; color: var(--gold); }
.linkish { background: none; border: none; color: var(--plum); font-size: 12px; font-weight: 500; cursor: pointer; }
.quote { display: flex; align-items: center; gap: 8px; padding: 8px 12px; border-radius: 10px; margin-bottom: 6px; }
.quote.pending { background: var(--amber-soft); }
.quote.confirmed { background: var(--green-soft); }
.pill { font-size: 11px; font-weight: 600; padding: 3px 10px; border-radius: 99px; border: 1px solid; cursor: pointer; background: #fff; white-space: nowrap; }
.pill.pending { color: var(--amber); border-color: var(--amber); }
.pill.confirmed { color: #fff; background: var(--green); border-color: var(--green); }
.quote-label { flex: 1; font-size: 14px; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.quote-amount { background: none; border: none; font-size: 14px; font-weight: 600; color: var(--plum-dark); cursor: pointer; font-variant-numeric: tabular-nums; }
.quote-amount:hover { text-decoration: underline; }
.quote input.edit { width: 110px; text-align: right; font-size: 14px; padding: 4px 8px; border-radius: 8px; border: 1px solid var(--plum); outline: none; }
.empty { font-size: 12px; font-style: italic; color: var(--muted); }

.cat-del { margin-top: 12px; font-size: 11px; color: var(--ink); opacity: .5; background: none; border: none; cursor: pointer; }
.cat-del:hover { opacity: 1; }

.add-category { display: flex; gap: 8px; margin: 20px 0; }
.add-category input { flex: 1; font-size: 14px; padding: 9px 14px; border-radius: 12px; border: 1px solid var(--line); outline: none; }

.suggestions { background: var(--gold-soft); border: 1px solid rgba(168,121,31,.2); border-radius: 16px; padding: 20px; margin-top: 24px; }
.suggestions h2 { font-size: 16px; color: var(--plum-dark); }
.suggestions p { font-size: 12px; color: var(--muted); margin: 4px 0 12px; }
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { display: inline-flex; align-items: center; gap: 4px; font-size: 13px; padding: 6px 12px; border-radius: 99px; background: #fff; border: 1px solid var(--line); color: var(--plum-dark); cursor: pointer; }
.chip:hover { border-color: var(--gold); }

.foot { display: flex; justify-content: center; margin-top: 24px; }
.foot .linkish { color: var(--ink); opacity: .6; }
.foot .linkish:hover { opacity: 1; }

/* ===== Tabs ===== */
.tabs { display: flex; gap: 8px; margin-bottom: 20px; justify-content: center; }
.tab { background: #fff; border: 1px solid var(--line); border-radius: 99px; padding: 8px 18px; font-size: 14px; font-weight: 500; color: var(--muted); cursor: pointer; }
.tab.active { background: var(--plum); border-color: var(--plum); color: #fff; }

/* ===== Dashboard ===== */
.countdown { background: linear-gradient(135deg, var(--plum-dark), var(--plum)); color: #fff; border-radius: 18px; padding: 20px; text-align: center; margin-bottom: 16px; }
.countdown .big-n { font-size: 42px; font-weight: 800; font-variant-numeric: tabular-nums; line-height: 1; }
.countdown .cd-label { font-size: 13px; opacity: .85; margin-top: 4px; }
.countdown .cd-budget { font-size: 12px; opacity: .75; margin-top: 10px; }

.kpis { display: grid; grid-template-columns: repeat(5, 1fr); gap: 8px; margin-bottom: 20px; }
@media (max-width: 640px) { .kpis { grid-template-columns: repeat(2, 1fr); } }
.kpi { border-radius: 12px; padding: 10px 12px; text-align: center; border: 1px solid var(--line); background: #fff; }
.kpi .n { font-size: 22px; font-weight: 700; font-variant-numeric: tabular-nums; }
.kpi .l { font-size: 11px; color: var(--muted); }
.kpi.danger { background: #FDEBEA; border-color: #E8B4B0; }
.kpi.danger .n { color: #A4302A; }
.kpi.today { background: var(--amber-soft); border-color: #E4C38A; }
.kpi.today .n { color: var(--amber); }
.kpi.warn .n { color: var(--gold); }
.kpi.blocked { background: var(--soft); }
.kpi.blocked .n { color: var(--plum); }

.dash-group { margin-bottom: 18px; }
.dash-group h3 { font-size: 13px; letter-spacing: .06em; text-transform: uppercase; margin-bottom: 8px; display: flex; align-items: center; gap: 6px; }
.dash-group h3 .cnt { font-size: 11px; background: var(--soft); color: var(--plum); border-radius: 99px; padding: 1px 8px; }
.dash-group.g-danger h3 { color: #A4302A; }
.dash-group.g-today h3 { color: var(--amber); }
.dash-group.g-warn h3 { color: var(--gold); }
.dash-group.g-blocked h3 { color: var(--plum); }
.dash-group.g-nodate h3 { color: var(--muted); }

.dash-task { background: #fff; border: 1px solid var(--line); border-left: 4px solid var(--line); border-radius: 12px; padding: 10px 14px; margin-bottom: 8px; display: flex; gap: 10px; align-items: flex-start; }
.dash-task.lv-danger { border-left-color: #C0453E; }
.dash-task.lv-today { border-left-color: var(--amber); }
.dash-task.lv-warn { border-left-color: var(--gold); }
.dash-task.lv-blocked { border-left-color: var(--plum); }
.dash-task .dt-main { flex: 1; min-width: 0; }
.dash-task .dt-title { font-size: 14px; font-weight: 600; color: var(--plum-dark); }
.dash-task .dt-cat { font-size: 11px; color: var(--muted); }
.dash-task .dt-rec { font-size: 12px; margin-top: 4px; color: var(--ink); }
.dash-task .dt-action { font-size: 12px; margin-top: 2px; color: var(--muted); font-style: italic; }
.dash-task .btn.mini { padding: 5px 10px; font-size: 12px; white-space: nowrap; }
.dash-empty { background: var(--green-soft); color: var(--green); border-radius: 14px; padding: 24px; text-align: center; font-size: 14px; font-weight: 500; }

/* ===== Tareas: fila y panel de detalle ===== */
.task { align-items: flex-start; }
.task .check { margin-top: 2px; }
.task-mid { flex: 1; min-width: 0; }
.task-line { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.tag-num { font-size: 10px; color: var(--muted); font-variant-numeric: tabular-nums; }
.tag-status { font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 99px; }
.tag-status.P { background: var(--soft); color: var(--plum); }
.tag-status.E { background: var(--amber-soft); color: var(--amber); }
.tag-status.F { background: var(--green-soft); color: var(--green); }
.tag-date { font-size: 11px; color: var(--muted); font-variant-numeric: tabular-nums; }
.task-rec { font-size: 11px; margin-top: 2px; }
.task-rec.lv-danger { color: #A4302A; font-weight: 600; }
.task-rec.lv-today { color: var(--amber); font-weight: 600; }
.task-rec.lv-warn { color: var(--gold); }
.task-rec.lv-blocked { color: var(--plum); }
.task-rec.lv-ok { color: var(--green); }
.task-rec.lv-nodate { color: var(--muted); font-style: italic; }
.edit-btn { background: none; border: none; cursor: pointer; font-size: 13px; opacity: .5; }
.edit-btn:hover { opacity: 1; }

.task-detail { background: var(--bg); border: 1px solid var(--line); border-radius: 12px; padding: 12px; margin: 6px 0 10px 30px; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
@media (max-width: 560px) { .task-detail { grid-template-columns: 1fr; margin-left: 0; } }
.field { display: flex; flex-direction: column; gap: 4px; }
.field.full { grid-column: 1 / -1; }
.field label { font-size: 11px; font-weight: 600; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
.field input, .field select, .field textarea { font: inherit; font-size: 13px; padding: 7px 10px; border-radius: 8px; border: 1px solid var(--line); background: #fff; color: var(--ink); outline: none; }
.field input:focus, .field select:focus, .field textarea:focus { border-color: var(--plum); }
.field textarea { resize: vertical; min-height: 48px; }
.detail-foot { grid-column: 1 / -1; display: flex; justify-content: flex-end; gap: 8px; }

/* ===== Agenda: filtros y lista de tareas ===== */
.kpi { cursor: pointer; transition: transform .1s ease; }
.kpi:hover { transform: translateY(-1px); }
.kpi.active { outline: 2px solid var(--plum); outline-offset: 1px; }

.agenda-head { margin: 4px 0 12px; }
.agenda-head h2 { font-size: 16px; color: var(--plum-dark); margin-bottom: 8px; }
.filters { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 8px; }
.fchip { background: #fff; border: 1px solid var(--line); border-radius: 99px; padding: 5px 12px; font-size: 12px; font-weight: 500; color: var(--muted); cursor: pointer; display: inline-flex; align-items: center; gap: 5px; }
.fchip .c { font-size: 10px; background: var(--soft); color: var(--plum); border-radius: 99px; padding: 0 6px; font-variant-numeric: tabular-nums; }
.fchip.active { background: var(--plum); border-color: var(--plum); color: #fff; }
.fchip.active .c { background: rgba(255,255,255,.25); color: #fff; }
.day-pick { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--muted); }
.day-pick input { font: inherit; font-size: 12px; padding: 4px 8px; border-radius: 8px; border: 1px solid var(--line); color: var(--ink); background: #fff; }

.day-group { margin-bottom: 16px; }
.day-group > h3 { font-size: 12px; letter-spacing: .05em; text-transform: uppercase; color: var(--muted); margin-bottom: 6px; display: flex; align-items: center; gap: 6px; }
.day-group > h3 .cnt { font-size: 10px; background: var(--soft); color: var(--plum); border-radius: 99px; padding: 1px 7px; }
.day-group.overdue > h3 { color: #A4302A; }
.day-group.today > h3 { color: var(--amber); }
.dash-task .dt-obs { font-size: 12px; margin-top: 2px; color: var(--green); }
.dash-task .dt-btns { display: flex; flex-direction: column; gap: 4px; align-items: stretch; }
.dash-task .btn.ghost { background: #fff; color: var(--plum); border: 1px solid var(--line); }
.agenda-empty { background: #fff; border: 1px dashed var(--line); color: var(--muted); border-radius: 14px; padding: 24px; text-align: center; font-size: 13px; }
.agenda-detail { margin: -2px 0 10px; }
.agenda-detail .task-detail { margin-left: 0; }


/* ===== Resumen ===== */
.res-actions { display: flex; justify-content: flex-end; margin-bottom: 10px; }
.res-cards { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; margin-bottom: 20px; }
@media (max-width: 640px) { .res-cards { grid-template-columns: repeat(2, 1fr); } }
.res-card { background: #fff; border: 1px solid var(--line); border-radius: 14px; padding: 14px; text-align: center; }
.res-card .v { font-size: 20px; font-weight: 700; color: var(--plum-dark); font-variant-numeric: tabular-nums; }
.res-card .l { font-size: 11px; color: var(--muted); margin-top: 2px; }

.res-section { margin-bottom: 24px; }
.res-section h2 { font-size: 15px; color: var(--plum-dark); margin-bottom: 10px; border-bottom: 2px solid var(--soft); padding-bottom: 6px; }

.pkg-row { display: flex; align-items: center; gap: 10px; padding: 6px 0; font-size: 13px; }
.pkg-row .pkg-name { flex: 0 0 220px; color: var(--ink); font-weight: 500; }
@media (max-width: 560px) { .pkg-row { flex-wrap: wrap; } .pkg-row .pkg-name { flex: 1 0 100%; } }
.pkg-row .pkg-pct { flex: 0 0 90px; text-align: right; font-size: 12px; color: var(--muted); font-variant-numeric: tabular-nums; }
.pkg-row .pkg-cost { flex: 0 0 110px; text-align: right; font-size: 12px; color: var(--gold); font-weight: 600; font-variant-numeric: tabular-nums; }

.rtable-wrap { overflow-x: auto; background: #fff; border: 1px solid var(--line); border-radius: 12px; }
table.rtable { width: 100%; border-collapse: collapse; font-size: 12px; min-width: 760px; }
.rtable th { background: var(--soft); color: var(--plum-dark); text-align: left; padding: 8px 10px; font-size: 11px; text-transform: uppercase; letter-spacing: .04em; white-space: nowrap; }
.rtable td { padding: 7px 10px; border-top: 1px solid var(--line); vertical-align: top; color: var(--ink); }
.rtable tr.cat-sep td { background: var(--bg); font-weight: 700; color: var(--plum-dark); font-size: 12px; }
.rtable td.num, .rtable td.money { font-variant-numeric: tabular-nums; white-space: nowrap; }
.rtable td.money { text-align: right; }
.rtable tr.total td { font-weight: 700; background: var(--gold-soft); }
.rtable .mini-bar { display: inline-block; width: 50px; height: 5px; background: var(--soft); border-radius: 99px; vertical-align: middle; margin-right: 5px; overflow: hidden; }
.rtable .mini-bar i { display: block; height: 100%; background: var(--plum); border-radius: 99px; }

@media print {
  .tabs, .res-actions, .head .eyebrow { display: none !important; }
  body { background: #fff; }
  .wrap { max-width: 100%; padding: 0; }
}
