:root{
  --bg:#f6f0e6;
  --bg-2:#ede2ce;
  --paper:#fff;
  --ink:#2a2420;
  --ink-soft:#6b6055;
  --accent:#c1633c;
  --accent-2:#5c6b45;
  --accent-soft:#f0d9c8;
  --gold:#c9992f;
  --radius:20px;
  --shadow:0 12px 30px rgba(42,36,32,.12);
  --shadow-lg:0 18px 44px rgba(42,36,32,.18);
}
*{box-sizing:border-box;}
[hidden]{display:none !important;}
html,body{margin:0;padding:0;}
body{
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  background:var(--bg);
  color:var(--ink);
  min-height:100vh;
  -webkit-tap-highlight-color:transparent;
  overscroll-behavior-y:none;
}
h1,h2,h3,h4{font-family:Georgia,"Times New Roman",serif; margin:0 0 .35em; line-height:1.2;}
p{margin:0 0 .8em; line-height:1.55;}
button{font-family:inherit; cursor:pointer;}
img{max-width:100%; display:block;}

/* ---------- Onboarding ---------- */
.view-onboarding{
  min-height:100vh; position:relative; overflow:hidden;
  display:flex; align-items:flex-end;
}
.ob-bg{
  position:absolute; inset:0;
  background:url('images/hero-onboarding.png') center 22%/cover;
}
.ob-scrim{
  position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(42,36,32,.08) 0%, rgba(42,36,32,.55) 55%, rgba(42,36,32,.88) 100%);
}
.onboarding-wrap{position:relative; max-width:460px; width:100%; margin:0 auto; padding:28px 22px 40px;}
.onboarding-mark{
  display:inline-flex; align-items:center; justify-content:center;
  width:60px; height:60px; border-radius:50%;
  background:var(--accent); color:#fff; font-family:Georgia,serif; font-size:1.15rem; font-weight:700;
  margin-bottom:18px; box-shadow:0 10px 26px rgba(0,0,0,.35);
}
.onboarding-title{font-size:1.75rem; color:#fff; text-shadow:0 2px 14px rgba(0,0,0,.35);}
.onboarding-sub{color:rgba(255,255,255,.88); font-size:.92rem; margin-bottom:20px;}
.ob-card{background:rgba(255,255,255,.96); backdrop-filter:blur(8px); border-radius:26px; padding:20px; box-shadow:var(--shadow-lg);}
.age-options{display:grid; grid-template-columns:repeat(3,1fr); gap:12px; margin-bottom:16px;}
.age-card{
  background:var(--paper); border:2px solid var(--bg-2); border-radius:16px;
  padding:18px 6px; display:flex; flex-direction:column; align-items:center; gap:4px;
  transition:transform .15s ease, border-color .15s ease, background .15s ease;
}
.age-card-range{font-family:Georgia,serif; font-size:1.4rem; font-weight:700; color:var(--ink);}
.age-card-label{font-size:.76rem; color:var(--ink-soft);}
.age-card.is-selected{border-color:var(--accent); background:var(--accent-soft); transform:translateY(-2px);}
.age-card:active{transform:scale(.97);}

.btn{
  border:none; border-radius:999px; padding:15px 22px; font-size:1rem; font-weight:700;
  transition:opacity .15s ease, transform .15s ease;
}
.btn-block{width:100%; display:block; margin-top:8px;}
.btn-primary{background:var(--accent); color:#fff; box-shadow:0 10px 24px rgba(193,99,60,.32);}
.btn-primary:disabled{opacity:.4; cursor:not-allowed; box-shadow:none;}
.btn-primary:not(:disabled):active{transform:scale(.98);}
.btn-ghost{background:transparent; color:var(--ink-soft); font-weight:600; box-shadow:none;}

/* ---------- App shell ---------- */
.app-shell{min-height:100vh; padding-bottom:84px;}
.app-main{max-width:520px; margin:0 auto; position:relative;}

.view{animation:viewIn .28s ease both;}
@keyframes viewIn{from{opacity:0; transform:translateY(10px);} to{opacity:1; transform:translateY(0);}}

/* ---------- Dashboard hero ---------- */
.hero-band{
  position:relative; height:240px;
  background:linear-gradient(180deg, rgba(42,36,32,.05) 0%, rgba(42,36,32,.62) 100%),
    url('images/hero-dashboard.png') center 40%/cover;
  display:flex; flex-direction:column; justify-content:flex-end; padding:18px 20px;
}
.hero-band .eyebrow{color:var(--accent-soft); font-size:.72rem; font-weight:700; letter-spacing:.06em; text-transform:uppercase; margin-bottom:2px;}
.hero-band h2{color:#fff; font-size:1.4rem; text-shadow:0 2px 12px rgba(0,0,0,.4); margin:0;}
.edit-age{position:absolute; top:16px; right:16px; background:rgba(255,255,255,.92); color:var(--ink); font-size:.72rem; font-weight:700; padding:7px 13px; border-radius:999px; border:none;}

.pad{padding:20px 18px 4px;}
.pad-top{padding:4px 18px 12px;}
.section-block{margin-bottom:28px;}
.section-title{font-size:1.12rem; margin-bottom:12px;}
.section-title--sos{color:var(--accent);}

/* ---------- Install banner (PWA) ---------- */
.install-banner{
  display:flex; align-items:center; gap:10px;
  background:var(--paper); border:1px solid var(--bg-2); border-radius:16px;
  padding:12px 10px 12px 14px; margin-bottom:20px; box-shadow:var(--shadow);
}
.install-banner-icon{font-size:1.4rem; line-height:1;}
.install-banner-text{flex:1; display:flex; flex-direction:column; gap:1px; min-width:0;}
.install-banner-text strong{font-size:.86rem; color:var(--ink);}
.install-banner-text span{font-size:.72rem; color:var(--ink-soft); line-height:1.25;}
.install-banner-btn{
  flex:0 0 auto; background:var(--accent); color:#fff; border:none; border-radius:999px;
  font-size:.78rem; font-weight:700; padding:9px 14px;
}
.install-banner-btn:active{transform:scale(.96);}
.install-banner-close{
  flex:0 0 auto; background:transparent; border:none; color:var(--ink-soft);
  font-size:.85rem; padding:4px 2px; line-height:1;
}
.install-modal-card h3{margin-bottom:10px;}
.install-modal-steps{color:var(--ink-soft); font-size:.92rem; line-height:1.5; margin-bottom:18px; white-space:pre-line;}

.sos-row{display:flex; gap:10px; overflow-x:auto; padding-bottom:4px; -webkit-overflow-scrolling:touch;}
.sos-row::-webkit-scrollbar{display:none;}
.sos-chip{
  flex:0 0 auto; display:flex; flex-direction:column; align-items:center; gap:5px; width:76px;
  background:var(--paper); border-radius:16px; padding:12px 6px; box-shadow:var(--shadow); border:1px solid var(--bg-2);
}
.sos-chip:active{transform:scale(.96);}
.sos-ico{width:34px; height:34px; border-radius:50%; background:var(--accent); color:#fff; display:flex; align-items:center; justify-content:center; font-size:1rem;}
.sos-chip span:last-child{font-size:.66rem; text-align:center; font-weight:600; line-height:1.15; color:var(--ink);}

.cat-grid{display:grid; grid-template-columns:1fr 1fr; gap:12px;}
.cat-card{
  background:var(--paper); border-radius:18px; padding:16px; box-shadow:var(--shadow); border:1px solid var(--bg-2);
  text-align:left; position:relative; overflow:hidden;
}
.cat-card:active{transform:scale(.98);}
.cat-card::after{content:""; position:absolute; right:-22px; top:-22px; width:74px; height:74px; border-radius:50%; background:var(--tint,var(--accent-soft)); opacity:.55;}
.cat-ico{width:38px; height:38px; border-radius:12px; background:var(--tint,var(--accent-soft)); color:var(--accent); display:flex; align-items:center; justify-content:center; font-size:1.1rem; margin-bottom:10px; position:relative;}
.cat-name{font-weight:700; font-size:.92rem; margin-bottom:2px; position:relative;}
.cat-count{font-size:.72rem; color:var(--ink-soft); position:relative;}

.bono-grid{display:grid; grid-template-columns:1fr 1fr; gap:12px;}
.bono-card{background:var(--paper); border-radius:18px; padding:15px; box-shadow:var(--shadow); border:1px solid var(--bg-2); text-align:left;}
.bono-card:active{transform:scale(.98);}
.bono-card .bono-ico{width:34px; height:34px; border-radius:10px; background:var(--accent-soft); color:var(--accent); display:flex; align-items:center; justify-content:center; font-size:1.05rem; margin-bottom:8px;}
.bono-card b{display:block; font-size:.87rem; margin-bottom:2px;}
.bono-card small{font-size:.7rem; color:var(--ink-soft);}
.bono-card--star{
  grid-column:1/-1; position:relative;
  background:linear-gradient(135deg,#fff 0%, var(--accent-soft) 130%);
  border:1.5px solid var(--gold); box-shadow:0 14px 34px rgba(201,153,47,.22);
}
.bono-card--star .bono-ico{background:var(--gold); color:#fff;}
.ribbon{position:absolute; top:12px; right:12px; background:var(--gold); color:#fff; font-size:.62rem; font-weight:700; padding:4px 10px; border-radius:999px; letter-spacing:.03em;}

/* ---------- Lista ---------- */
.topbar{padding:16px 18px 2px; max-width:520px; margin:0 auto;}
.back-btn{background:none; border:none; color:var(--accent); font-weight:700; font-size:.88rem; padding:8px 0;}
.view-title{font-size:1.3rem;}
.view-sub{color:var(--ink-soft); font-size:.85rem; margin-bottom:4px;}

.act-list{display:flex; flex-direction:column; gap:10px; padding:0 18px 20px; max-width:520px; margin:0 auto;}
.act-card{
  background:var(--paper); border:1px solid var(--bg-2); border-radius:16px; padding:13px 15px;
  text-align:left; box-shadow:var(--shadow); display:flex; gap:12px; align-items:center;
}
.act-card:active{transform:scale(.99);}
.act-card .act-ico{width:40px; height:40px; border-radius:12px; background:var(--tint,var(--accent-soft)); color:var(--accent); display:flex; align-items:center; justify-content:center; font-size:1.1rem; flex:none;}
.act-card-title{font-weight:700; font-size:.94rem;}
.act-card-meta{display:flex; gap:6px; flex-wrap:wrap; margin-top:3px;}
.act-card-meta span{font-size:.68rem; background:var(--bg-2); padding:2px 8px; border-radius:999px; color:var(--ink-soft);}

/* ---------- Detalle ---------- */
.det-head{padding:24px 20px 18px; background:linear-gradient(160deg, var(--tint,var(--accent-soft)) 0%, var(--bg) 72%); max-width:520px; margin:0 auto;}
.det-badges{display:flex; gap:6px; flex-wrap:wrap; margin-bottom:10px;}
.badge{background:#fff; color:var(--accent); font-size:.7rem; font-weight:700; padding:4px 11px; border-radius:999px; border:1px solid var(--accent-soft);}
.badge--gold{color:var(--gold); border-color:var(--gold);}
.det-head h1{font-size:1.42rem;}

.wrap{max-width:520px; margin:0 auto;}
.callout{margin:0 18px 18px; background:var(--paper); border-left:4px solid var(--accent-2); border-radius:0 14px 14px 0; padding:14px 16px; box-shadow:var(--shadow);}
.callout b{color:var(--accent-2); font-size:.7rem; text-transform:uppercase; letter-spacing:.04em; display:block; margin-bottom:4px;}
.sec-label{font-size:.72rem; text-transform:uppercase; letter-spacing:.05em; color:var(--ink-soft); font-weight:700; margin:0 18px 8px;}
.chips{display:flex; gap:8px; flex-wrap:wrap; margin:0 18px 18px;}
.chip{background:var(--paper); border:1px solid var(--bg-2); font-size:.8rem; padding:6px 12px; border-radius:999px;}
.instr{margin:0 18px 18px; background:var(--paper); border-radius:14px; padding:14px 16px; box-shadow:var(--shadow); font-size:.98rem; line-height:1.6;}
.steps{margin:0 18px 18px; display:flex; flex-direction:column; gap:10px;}
.step{display:flex; gap:12px; background:var(--paper); border-radius:14px; padding:12px 14px; box-shadow:var(--shadow);}
.step-n{width:26px; height:26px; border-radius:50%; background:var(--accent); color:#fff; font-weight:700; font-size:.8rem; display:flex; align-items:center; justify-content:center; flex:none;}
.tip{margin:0 18px 22px; background:var(--accent-2); color:#fff; border-radius:14px; padding:14px 16px; font-size:.88rem;}
.tip b{display:block; font-size:.7rem; text-transform:uppercase; letter-spacing:.04em; opacity:.85; margin-bottom:4px;}
.rel-row{display:flex; gap:10px; overflow-x:auto; padding:0 18px 24px;}
.rel-row::-webkit-scrollbar{display:none;}
.rel-card{flex:0 0 auto; width:140px; background:var(--paper); border-radius:14px; padding:12px; box-shadow:var(--shadow); border:1px solid var(--bg-2); text-align:left;}
.rel-card:active{transform:scale(.97);}
.rel-card span{font-size:.8rem; font-weight:700; display:block; margin-bottom:2px;}
.rel-card small{font-size:.68rem; color:var(--ink-soft);}

.bono-detail{max-width:520px; margin:0 auto;}
.bono-detail-sub{color:var(--ink-soft); font-size:.85rem; margin-bottom:0;}
.bono-body{padding:0 18px 24px;}
.bono-body h4{font-size:.95rem; color:var(--accent); margin-top:18px;}
.bono-body ol,.bono-body ul{padding-left:20px; margin:0 0 .8em;}
.bono-body li{margin-bottom:6px; line-height:1.5;}

/* ---------- Tab bar ---------- */
.tab-bar{
  position:fixed; bottom:0; left:0; right:0; z-index:20;
  background:rgba(255,255,255,.97); backdrop-filter:blur(10px);
  border-top:1px solid var(--bg-2);
  display:flex; padding:6px 8px calc(6px + env(safe-area-inset-bottom));
  box-shadow:0 -6px 20px rgba(42,36,32,.06);
  max-width:520px; margin:0 auto;
}
.tab-btn{
  flex:1; background:none; border:none; display:flex; flex-direction:column; align-items:center; gap:2px;
  padding:8px 4px; color:var(--ink-soft); border-radius:12px;
}
.tab-btn.is-active{color:var(--accent);}
.tab-ico{font-size:1.25rem;}
.tab-label{font-size:.68rem; font-weight:700;}

/* ---------- Age modal ---------- */
.age-modal{
  position:fixed; inset:0; z-index:50; background:rgba(42,36,32,.5);
  display:flex; align-items:flex-end;
}
.age-modal[hidden]{display:none;}
.age-modal-card{
  background:var(--paper); width:100%; border-radius:26px 26px 0 0; padding:26px 22px calc(26px + env(safe-area-inset-bottom));
  max-width:520px; margin:0 auto; box-shadow:var(--shadow-lg);
}

@media (min-width:600px){
  .view-onboarding{align-items:center; justify-content:center;}
}
