@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@500;600;700;800&display=swap');
:root{--ink:#1d302c;--muted:#75827e;--green:#173b35;--green2:#24564c;--mint:#eaf3ef;--line:#e7ece9;--bg:#f6f8f7;--white:#fff;--shadow:0 8px 30px rgba(27,54,46,.05)}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:'DM Sans',sans-serif;font-size:14px}.app-shell{min-height:100vh;display:flex}.sidebar{width:250px;background:var(--green);color:#fff;padding:27px 18px;display:flex;flex-direction:column;flex-shrink:0}.brand{display:flex;align-items:center;gap:11px;padding:0 8px 34px}.brand-mark{width:42px;height:42px;border-radius:13px;background:#d5e8dc;color:var(--green);display:grid;place-items:center;font:800 16px Manrope}.brand strong,.brand span{display:block;letter-spacing:1.4px}.brand strong{font:800 13px Manrope}.brand span{font-size:10px;color:#b9d0c7;margin-top:3px}.family-label,.eyebrow{font-size:10px;letter-spacing:1.5px;font-weight:700;color:#8da79c}.family-label{padding:0 12px 12px}.nav-menu{display:grid;gap:5px}.nav-item{border:0;background:transparent;color:#c8d8d1;padding:12px 13px;text-align:left;border-radius:10px;font:500 13px 'DM Sans';cursor:pointer;display:flex;align-items:center;gap:13px}.nav-item span{width:18px;text-align:center;font-size:17px}.nav-item:hover,.nav-item.active{background:#2c5a50;color:#fff}.sidebar-bottom{margin-top:auto}.privacy-note{background:#21483f;border-radius:12px;padding:13px;display:flex;gap:10px;align-items:center}.lock{font-size:19px;color:#b7d8c8}.privacy-note b,.privacy-note small{display:block}.privacy-note b{font-size:12px}.privacy-note small{font-size:10px;color:#b4c9c0;margin-top:3px}.version{display:block;color:#87a398;font-size:10px;padding:18px 8px 0}.main{flex:1;min-width:0}.topbar{height:70px;background:#fff;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 38px}.breadcrumb{color:var(--muted);font-size:12px}.breadcrumb span{padding:0 10px;color:#c0c9c4}.breadcrumb b{color:var(--ink)}.top-actions{display:flex;align-items:center;gap:16px}.today{font-size:11px;color:var(--muted)}.avatar{width:34px;height:34px;border-radius:50%;background:#e5eee9;color:var(--green);display:grid;place-items:center;font-weight:700}.menu-toggle{display:none;border:0;background:none;font-size:21px}.content{max-width:1400px;margin:auto;padding:34px 38px 24px}.view{display:none}.view.active{display:block}.welcome-row,.section-head{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:25px}.eyebrow{color:#82968d;margin:0 0 8px}h1,h2{font-family:Manrope,sans-serif;margin:0;letter-spacing:-.5px}h1{font-size:27px;font-weight:800}h1 span{color:#d58c7c}h2{font-size:16px}.muted{color:var(--muted);margin:8px 0 0;font-size:12px}.primary,.secondary{border:0;border-radius:9px;padding:11px 16px;font:600 12px 'DM Sans';cursor:pointer}.primary{background:var(--green);color:#fff}.primary:hover{background:var(--green2)}.secondary{background:#eef2ef;color:var(--ink)}.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:18px}.stat-card,.panel,.project-card,.goal-card,.person-card{background:#fff;border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.stat-card{padding:18px;display:flex;align-items:center;gap:13px}.stat-icon{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;font-size:19px}.blue{background:#edf3fc;color:#5483c7}.coral{background:#fff0eb;color:#cf8168}.green{background:#eaf5ee;color:#58926b}.purple{background:#f2eefb;color:#8d78b8}.stat-card small,.stat-card strong{display:block}.stat-card small{color:var(--muted);font-size:10px}.stat-card strong{font:800 23px Manrope;margin-top:3px}.dashboard-grid{display:grid;grid-template-columns:1.5fr 1fr;gap:17px;margin-bottom:17px}.bottom-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.panel{padding:21px;margin-bottom:17px}.panel-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:17px}.text-button{border:0;background:none;color:#547b6c;font:600 11px 'DM Sans';cursor:pointer}.upcoming-list{display:grid}.upcoming-item{display:flex;align-items:center;gap:13px;padding:12px 0;border-top:1px solid #f0f2f1}.date-box{width:47px;flex-shrink:0;border-radius:9px;background:#f1f5f2;text-align:center;padding:7px 3px}.date-box b,.date-box small{display:block}.date-box b{font:800 15px Manrope}.date-box small{font-size:9px;color:var(--muted);text-transform:uppercase}.event-info{flex:1;min-width:0}.event-info b,.event-info small{display:block}.event-info b{font-size:12px}.event-info small{font-size:10px;color:var(--muted);margin-top:4px}.tag{font-size:9px;border-radius:20px;padding:5px 8px;background:#edf3ef;color:#557665;white-space:nowrap}.mini-family{display:grid;grid-template-columns:1fr 1fr;gap:10px}.mini-person{border:1px solid var(--line);border-radius:10px;padding:11px;display:flex;align-items:center;gap:9px}.person-avatar{width:32px;height:32px;border-radius:50%;background:#eaf1ed;color:#31594d;display:grid;place-items:center;font-weight:700}.mini-person b,.mini-person small{display:block}.mini-person b{font-size:11px}.mini-person small{font-size:9px;color:var(--muted);margin-top:3px}.tip-box{background:#f3f7f4;border-radius:10px;padding:13px;margin-top:14px}.tip-box b{font-size:11px}.tip-box p{font-size:10px;line-height:1.5;color:var(--muted);margin:5px 0 0}.mini-row{display:flex;align-items:center;justify-content:space-between;padding:10px 0;border-top:1px solid #f0f2f1;font-size:11px}.mini-row small{display:block;color:var(--muted);margin-top:4px}.progress{height:6px;background:#edf1ee;border-radius:9px;overflow:hidden;margin-top:8px}.progress span{display:block;height:100%;background:#6d9c83;border-radius:9px}.section-head{margin-bottom:22px}.toolbar{display:flex;gap:10px;margin-bottom:16px}.search,select,input,textarea{font:12px 'DM Sans';border:1px solid #dfe7e2;border-radius:8px;padding:11px 12px;background:#fff;color:var(--ink);outline:none}.search{flex:1}.search:focus,select:focus,input:focus,textarea:focus{border-color:#719985;box-shadow:0 0 0 3px #e9f1ec}.record-row{display:flex;align-items:center;gap:13px;padding:14px 2px;border-top:1px solid #eff2f0}.record-main{flex:1;min-width:0}.record-main b,.record-main small{display:block}.record-main b{font-size:12px}.record-main small{font-size:10px;color:var(--muted);margin-top:4px}.record-date{font-size:10px;color:#59796a;min-width:82px}.empty-state{text-align:center;color:var(--muted);padding:32px 12px;font-size:12px}.notice{padding:13px 15px;background:#f0f5f1;border:1px solid #e0ebe3;color:#567264;border-radius:10px;font-size:11px;line-height:1.5;margin-bottom:16px}.cards-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}.project-card,.goal-card,.person-card{padding:20px}.card-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.card-icon{width:38px;height:38px;border-radius:11px;background:#edf4ef;display:grid;place-items:center;color:#547b65;font-size:18px}.project-card h3,.goal-card h3,.person-card h3{font:700 14px Manrope;margin:0}.project-card p,.goal-card p,.person-card p{font-size:11px;color:var(--muted);line-height:1.5}.card-meta{display:flex;justify-content:space-between;color:var(--muted);font-size:10px;margin-top:12px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;font-size:11px}th,td{text-align:left;padding:12px;border-bottom:1px solid var(--line)}th{color:var(--muted);font-weight:600}.permissions-panel{margin-top:17px}.permissions-panel h2{margin-bottom:14px}.person-card{display:flex;gap:13px;align-items:flex-start}.person-card .person-avatar{width:42px;height:42px;flex-shrink:0}.person-card h3{margin-top:2px}.role{font-size:9px;color:#527663;background:#edf4ef;border-radius:20px;padding:4px 7px;display:inline-block;margin-top:6px}footer{text-align:center;color:#9aa7a0;font-size:9px;letter-spacing:1px;padding:30px 0 8px}footer span{padding:0 6px}.modal-backdrop{position:fixed;inset:0;background:rgba(14,35,29,.48);display:grid;place-items:center;padding:18px;z-index:20}.modal-backdrop[hidden]{display:none}.modal{background:#fff;border-radius:16px;padding:24px;width:min(560px,100%);max-height:90vh;overflow:auto;box-shadow:0 20px 70px #10271f40}.modal-head{display:flex;justify-content:space-between;margin-bottom:20px}.modal-head h2{font-size:20px}.close-modal{border:0;background:#f1f4f2;border-radius:50%;width:32px;height:32px;font-size:20px;cursor:pointer}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:13px}.field{display:grid;gap:6px}.field.full{grid-column:1/-1}.field label{font-size:10px;font-weight:700;color:#687a70}.field input,.field select,.field textarea{width:100%}.field textarea{min-height:72px;resize:vertical}.modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:22px}.toast{position:fixed;bottom:24px;right:24px;background:#183d34;color:#fff;padding:12px 17px;border-radius:9px;font-size:11px;box-shadow:var(--shadow);opacity:0;transform:translateY(8px);transition:.2s;pointer-events:none;z-index:30}.toast.show{opacity:1;transform:translateY(0)}
@media(max-width:1050px){.sidebar{width:220px}.content{padding:28px 24px}.topbar{padding:0 24px}.stats-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:720px){.sidebar{position:fixed;z-index:15;left:-260px;top:0;bottom:0;width:250px;transition:left .22s;box-shadow:10px 0 30px #10271f20}.sidebar.open{left:0}.menu-toggle{display:block}.topbar{height:58px;padding:0 16px;gap:12px}.breadcrumb{flex:1}.today{display:none}.content{padding:24px 15px}.welcome-row,.section-head{align-items:flex-start;flex-direction:column}.welcome-row .primary,.section-head .primary{width:100%}.welcome-row h1,.section-head h1{font-size:23px}.stats-grid{gap:9px}.stat-card{padding:13px;gap:9px}.stat-icon{width:34px;height:34px}.stat-card small{font-size:9px}.stat-card strong{font-size:20px}.dashboard-grid,.bottom-grid,.cards-grid{grid-template-columns:1fr}.panel{padding:16px}.mini-family{grid-template-columns:1fr 1fr}.toolbar{flex-direction:column}.form-grid{grid-template-columns:1fr}.field.full{grid-column:auto}.record-date{min-width:66px}.tag{display:none}.modal{padding:19px}.top-actions{gap:8px}}
/* FAMILIA VALOR FUENTES v0.2 */
.calendar-panel{padding:22px}.calendar-toolbar{display:flex;align-items:center;justify-content:center;gap:14px;margin-bottom:18px}.calendar-toolbar h2{text-transform:capitalize;min-width:190px;text-align:center}.calendar-toolbar .secondary{font-size:19px;padding:6px 13px}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px}.calendar-weekday{text-align:center;color:var(--muted);font-size:10px;font-weight:700;padding:8px}
.calendar-day{min-height:98px;border:1px solid var(--line);border-radius:9px;background:#fff;text-align:left;padding:7px 8px;cursor:pointer;color:var(--ink);font:12px 'DM Sans';display:flex;flex-direction:column;justify-content:flex-start;overflow:hidden;transition:border-color .15s ease, background-color .15s ease}
.calendar-day:hover{border-color:#86a996;background:#f7faf8}
.calendar-day.selected{border:2px solid var(--green2);background:#edf5f0}
.calendar-day.has-work{border-left:3px solid #d97706}
.calendar-day.today .day-number{font-weight:800;color:#39785e}
.calendar-day.empty{border:0;background:transparent;cursor:default}
.day-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:4px;width:100%}
.day-number{font-size:13px;font-weight:700;color:var(--ink)}
.day-dots{display:flex;gap:3px;align-items:center;min-height:7px}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:#6d9c83}
.dot.health{background:#d88770}
.dot.school{background:#5685c6}
.dot.work{background:#d97706}
.dot.project{background:#9276bb}
.day-chips{display:flex;flex-direction:column;gap:3px;width:100%}
.day-chip{font-size:10px;font-weight:600;padding:2px 5px;border-radius:5px;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;display:flex;align-items:center;gap:3px;border:1px solid transparent}
.day-chip.work{background:#fef3c7;color:#854d0e;border-color:#fde047}
.day-chip.health{background:#fff1ed;color:#c2410c;border-color:#fed7aa}
.day-chip.school{background:#eff6ff;color:#1d4ed8;border-color:#bfdbfe}
.day-chip.project{background:#f5f3ff;color:#6d28d9;border-color:#ddd6fe}
.day-chip.family{background:#ecfdf5;color:#047857;border-color:#a7f3d0}
.day-chip.chip-completed{opacity:0.55;text-decoration:line-through}
.chip-time{font-size:9px;font-weight:700;opacity:0.85;flex-shrink:0}
.chip-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}
.day-more{display:block;font-size:9px;color:var(--muted);font-weight:700;margin-top:2px}
.calendar-legend{display:flex;gap:18px;flex-wrap:wrap;margin-top:15px;color:var(--muted);font-size:10px}.calendar-legend .dot{margin-right:5px;vertical-align:middle}.small-primary{padding:8px 11px;font-size:10px}.project-detail{margin-top:22px;scroll-margin-top:18px}.project-detail[hidden]{display:none}.detail-head{display:flex;justify-content:space-between;align-items:flex-start;gap:15px;margin-bottom:18px}.detail-head h2{font-size:21px}.project-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin:15px 0}.project-summary>div{background:#f3f7f4;border-radius:10px;padding:13px}.project-summary small,.project-summary b{display:block}.project-summary small{font-size:10px;color:var(--muted);margin-bottom:7px}.project-summary b{font:700 14px Manrope}.detail-actions{display:flex;gap:9px;flex-wrap:wrap;margin:16px 0 22px}.detail-columns{display:grid;grid-template-columns:1fr 1fr;gap:22px}.detail-columns section{min-width:0}.detail-columns h3{font:700 13px Manrope;margin:0 0 10px}.detail-columns .wide-detail{grid-column:1/-1}.detail-columns .record-row{gap:9px}.detail-columns table{font-size:10px}.detail-columns th,.detail-columns td{padding:9px 7px}
@media(max-width:720px){.calendar-grid{gap:3px}.calendar-day{min-height:64px;padding:4px 3px;font-size:10px}.day-number{font-size:11px}.day-chip{font-size:8px;padding:1px 3px}.chip-time{display:none}.day-more{font-size:8px}.calendar-toolbar h2{min-width:140px;font-size:15px}.project-summary{grid-template-columns:1fr 1fr}.detail-columns{grid-template-columns:1fr}.detail-columns .wide-detail{grid-column:auto}.detail-head{align-items:center}.detail-actions>*{flex:1}.calendar-legend{gap:10px}}

/* Acceso Supabase v0.3 */
.auth-gate{position:fixed;inset:0;z-index:100;background:var(--bg);display:grid;place-items:center;padding:20px}
.auth-gate[hidden]{display:none}
.auth-card{width:min(420px,100%);background:#fff;border:1px solid var(--line);border-radius:18px;padding:30px;box-shadow:var(--shadow);display:grid;gap:11px}
.auth-mark{margin-bottom:5px}
.auth-card h1{font-size:25px}
.auth-label{font-size:11px;font-weight:700;color:#687a70;margin-top:5px}
.auth-card input{width:100%;font-size:14px;padding:13px}
.auth-submit{width:100%;margin-top:8px}
.auth-card small{color:var(--muted);text-align:center;margin-top:5px}
.auth-message{font-size:11px;color:#527663;min-height:16px;margin:2px 0}
.auth-message.error{color:#b34c42}
.session-bar{position:fixed;z-index:18;right:18px;bottom:16px;display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);border-radius:12px;padding:9px 12px;box-shadow:var(--shadow);font-size:11px}
.session-bar[hidden]{display:none}
.session-bar .secondary{padding:8px 10px}

/* Estados de eventos: Realizado y Aplazado */
.record-row.is-completed {
  background: #fbfdfc;
  opacity: 0.82;
}
.record-row.is-completed .record-main b {
  text-decoration: line-through;
  color: var(--muted);
}
.completed-tag {
  background: #eaf5ee;
  color: #276241;
  border: 1px solid #c7e5d3;
  font-size: 9px;
  font-weight: 700;
  padding: 2px 7px;
  border-radius: 12px;
  margin-left: 6px;
  text-decoration: none !important;
  display: inline-block;
  vertical-align: middle;
}
.postpone-note {
  color: #8c6a2d;
  font-size: 10px;
  margin-top: 4px;
  display: block;
}
.postpone-badge {
  background: #fdf6ea;
  color: #8c6a2d;
  border: 1px solid #f6deb3;
  font-size: 9px;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 10px;
  margin-left: 5px;
  display: inline-block;
}
.record-actions {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-shrink: 0;
  margin-left: auto;
}
.action-btn {
  border: 1px solid #d4ded8;
  background: #fff;
  color: var(--ink);
  font: 600 11px 'DM Sans', sans-serif;
  padding: 5px 9px;
  border-radius: 8px;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  transition: all .15s ease;
}
.action-btn:hover {
  background: #f2f6f4;
  border-color: #b5ccc0;
}
.action-btn.check-btn {
  color: var(--green);
  border-color: #c4d8ce;
}
.action-btn.check-btn:hover {
  background: #eaf3ef;
  border-color: var(--green);
}
.action-btn.check-btn.completed {
  background: var(--green);
  color: #fff;
  border-color: var(--green);
}
.action-btn.check-btn.completed:hover {
  background: #102d28;
}
.action-btn.postpone-btn {
  color: #7d5e1f;
  border-color: #eadbb8;
}
.action-btn.postpone-btn:hover {
  background: #fdf8ee;
  border-color: #d1b575;
}
.dot.completed-dot {
  opacity: 0.45;
  outline: 1px solid #24564c;
}
.postpone-banner {
  background: #fdf8ed;
  border: 1px solid #f7dfb3;
  border-radius: 10px;
  padding: 12px 14px;
  margin-bottom: 16px;
  font-size: 11px;
  color: #644a19;
  line-height: 1.5;
}
.postpone-banner strong {
  display: block;
  font-size: 13px;
  color: #3b2c0f;
  margin-bottom: 4px;
}
.upcoming-item.is-completed {
  opacity: 0.75;
}
.upcoming-item.is-completed .event-info b {
  text-decoration: line-through;
  color: var(--muted);
}
.tag.tag-work {
  background: #fef3c7;
  color: #854d0e;
  border: 1px solid #fde047;
}
.work-badge {
  background: #fef3c7;
  color: #854d0e;
  border: 1px solid #fde047;
  font-size: 9px;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 10px;
  margin-left: 5px;
  display: inline-block;
}
.day-work-alert {
  background: #fefce8;
  border: 1px solid #fde047;
  border-left: 4px solid #d97706;
  border-radius: 10px;
  padding: 12px 15px;
  margin-bottom: 16px;
  font-size: 11px;
  color: #713f12;
  display: flex;
  align-items: flex-start;
  gap: 12px;
  line-height: 1.5;
}
.day-work-alert[hidden] {
  display: none;
}
.day-work-alert strong {
  font-size: 12px;
  color: #713f12;
  display: block;
  margin-bottom: 2px;
}
.day-work-alert p {
  margin: 3px 0 0;
  color: #854d0e;
}
.work-alert-icon {
  font-size: 20px;
  line-height: 1;
}
.recurrence-badge {
  background: #f1f5f9;
  color: #334155;
  border: 1px solid #cbd5e1;
  font-size: 9px;
  font-weight: 700;
  padding: 2px 6px;
  border-radius: 10px;
  margin-left: 5px;
  display: inline-flex;
  align-items: center;
  gap: 3px;
}
.recurrence-note {
  display: block;
  font-size: 10px;
  color: #0284c7;
  font-weight: 600;
  margin-top: 2px;
}
.upcoming-completed-toggle {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 4px 2px;
  border-top: 1px dashed var(--line);
  margin-top: 8px;
  color: var(--muted);
  font-size: 11px;
}
@media(max-width:720px){
  .record-actions {
    flex-wrap: wrap;
    gap: 4px;
  }
  .action-btn {
    padding: 4px 7px;
    font-size: 10px;
  }
}
