/* ============================================================
   SEHATI Lansia — Design System (ramah lansia)
   ============================================================ */
:root{
  --bg:#EEF3EE; --surface:#FFFFFF; --surface2:#E4EDE5;
  --ink:#21322B; --muted:#5C6F66; --line:#D5E0D6;
  --accent:#0E7C66; --accent-dark:#0A5F4E; --accent-soft:#D8EFE8;
  --sos:#D64545; --sos-dark:#B23333; --sos-soft:#FBE3E3;
  --warn:#E8871E; --ok:#2E8B57; --ok-soft:#DFF3E7;
  --blue:#2F6FA3; --blue-soft:#E3EEF7;
  --r-lg:24px; --r-md:18px; --r-sm:12px;
  --shadow:0 6px 24px rgba(33,50,43,.08);
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html{font-size:20px}
body{
  font-family:'Nunito',system-ui,-apple-system,sans-serif;
  background:var(--bg); color:var(--ink); line-height:1.45;
  min-height:100vh;
}
.app{max-width:560px;margin:0 auto;padding-bottom:110px}
a{color:var(--accent);text-decoration:none}

/* ---------- Topbar ---------- */
.topbar{
  background:var(--accent); color:#fff;
  padding:22px 20px 26px; border-radius:0 0 28px 28px;
}
.topbar .hello{font-size:1.15rem;font-weight:700;opacity:.95}
.topbar h1{font-size:1.8rem;font-weight:800;margin-top:2px;word-break:break-word}
.topbar .date{font-size:1rem;margin-top:4px;opacity:.92}
.topbar-row{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.logout-btn{
  display:flex;flex-direction:column;align-items:center;gap:2px;
  background:rgba(255,255,255,.14);color:#fff;text-decoration:none;
  padding:10px 14px;border-radius:16px;font-size:.85rem;font-weight:800;flex-shrink:0;
}
.logout-btn:hover{background:rgba(255,255,255,.24)}
.logout-ic{font-size:1.4rem;line-height:1}
.sub-badge{
  display:inline-block;margin-top:10px;padding:6px 16px;border-radius:999px;
  background:rgba(255,255,255,.16);font-size:.95rem;font-weight:700;
}

/* ---------- Lansia switch ---------- */
.lansia-switch{padding:14px 20px 0;font-size:1.05rem;font-weight:700;color:var(--muted)}
.lansia-switch select{
  font-family:inherit;font-size:1.1rem;font-weight:800;color:var(--ink);
  padding:10px 14px;border:2px solid var(--line);border-radius:var(--r-sm);
  background:#fff;margin-left:6px;max-width:70%;
}

/* ---------- Flash ---------- */
.flash{
  margin:14px 20px 0;padding:14px 18px;border-radius:var(--r-md);
  font-size:1.05rem;font-weight:700;
}
.flash.success{background:var(--ok-soft);color:var(--ok)}
.flash.error{background:var(--sos-soft);color:var(--sos)}

/* ---------- Content & cards ---------- */
.content{padding:18px 18px 10px}
.card{
  background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow);
  padding:20px;margin-top:16px;
}
.card h2{font-size:1.3rem;font-weight:800;margin-bottom:6px}
.card .sub{color:var(--muted);font-size:1rem;margin-bottom:8px}
.center-card{text-align:center;padding:34px 22px}
.center-card .big-ic{font-size:3.2rem;margin-bottom:10px}
.center-card p{color:var(--muted);font-size:1.05rem}

/* ---------- Forms ---------- */
label{display:block;font-size:1rem;font-weight:800;margin:14px 0 6px;color:var(--ink)}
input,select,textarea{
  width:100%;padding:14px 16px;font-family:inherit;font-size:1.05rem;
  border:2px solid var(--line);border-radius:var(--r-md);background:#fff;color:var(--ink);
}
input:focus,select:focus,textarea:focus{outline:3px solid var(--accent-soft);border-color:var(--accent)}
textarea{resize:vertical}
.form-actions{display:flex;gap:10px;margin-top:16px;flex-wrap:wrap}
.form-actions form{flex:1}

/* ---------- Buttons ---------- */
.btn{
  display:flex;align-items:center;justify-content:center;gap:10px;
  min-height:64px;border:none;border-radius:var(--r-md);
  font-family:inherit;font-size:1.15rem;font-weight:800;cursor:pointer;
  padding:10px 20px;transition:transform .08s ease,filter .15s;color:#fff;text-decoration:none;
}
.btn:active{transform:scale(.97)}
.btn:focus-visible{outline:4px solid var(--warn);outline-offset:2px}
.btn-green{background:var(--accent)}
.btn-green:hover{filter:brightness(1.08)}
.btn-red{background:var(--sos)}
.btn-red:hover{filter:brightness(1.06)}
.btn-line{background:var(--surface2);color:var(--ink)}
.btn-blue{background:var(--blue)}
.btn-blue:hover{filter:brightness(1.08)}
.btn-wa{background:#1FA855;flex-direction:column;line-height:1.3}
.btn-wa:hover{filter:brightness(1.08)}
.btn-wa small{font-size:.9rem;font-weight:700;opacity:.92}
.btn.sm{min-height:52px;font-size:1rem;padding:8px 16px}
.btn .ic{font-size:1.4rem}

/* ---------- Grids ---------- */
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:16px}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:16px}
.tile{
  background:var(--surface);border-radius:var(--r-lg);box-shadow:var(--shadow);
  padding:18px 12px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  color:var(--ink);text-decoration:none;min-height:110px;
}
.tile-ic{width:52px;height:52px;border-radius:16px;display:flex;align-items:center;justify-content:center;font-size:1.5rem}
.tile-ic.acc{background:var(--accent-soft);color:var(--accent)}
.tile-ic.warn{background:#FDEBD9;color:var(--warn)}
.tile-ic.red{background:var(--sos-soft);color:var(--sos)}
.tile-ic.blue{background:var(--blue-soft);color:var(--blue)}
.tile-ic.ok{background:var(--ok-soft);color:var(--ok)}
.tile-num{font-size:2rem;font-weight:800;line-height:1}
.tile-lbl{font-size:.95rem;font-weight:700;color:var(--muted)}

/* ---------- Lansia head ---------- */
.lansia-head{display:flex;align-items:center;gap:14px}
.lansia-avatar{
  width:64px;height:64px;border-radius:50%;background:var(--accent-soft);
  display:flex;align-items:center;justify-content:center;font-size:2rem;flex-shrink:0;
}
.chip-row{margin-top:10px;display:flex;flex-wrap:wrap;gap:8px}
.chip{
  display:inline-block;padding:6px 14px;border-radius:999px;font-size:.92rem;font-weight:700;
  background:var(--surface2);color:var(--muted);
}
.chip.ok{background:var(--ok-soft);color:var(--ok)}
.chip.warn{background:#FDEBD9;color:var(--warn)}
.chip.red{background:var(--sos-soft);color:var(--sos)}
.chip.time{background:var(--accent-soft);color:var(--accent);font-weight:800}

/* ---------- Obat ---------- */
.time-big{font-size:2.4rem;font-weight:800;color:var(--accent);line-height:1.1}
.med-name{font-size:1.3rem;font-weight:800;margin:4px 0 2px}
.med-dose{color:var(--muted);font-size:1rem}
.med-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}
.time-chips{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.med-card{margin-top:14px}

/* ---------- Dokter ---------- */
.doc-row{display:flex;gap:14px;align-items:center}
.date-box{
  background:var(--accent-soft);color:var(--accent);border-radius:14px;
  padding:10px 12px;text-align:center;min-width:70px;
}
.date-box .d{font-size:1.4rem;font-weight:800;line-height:1}
.date-box .m{font-size:.8rem;font-weight:700}
.date-box.past{background:var(--surface2);color:var(--muted)}
.doc-row .info{flex:1}
.doc-row .nm{font-size:1.15rem;font-weight:800}
.doc-row .ds{color:var(--muted);font-size:.95rem}

/* ---------- Kontak ---------- */
.contact-row{display:flex;align-items:center;gap:12px;margin-top:12px}
.contact-ic{
  width:48px;height:48px;border-radius:50%;background:var(--surface2);flex-shrink:0;
  display:flex;align-items:center;justify-content:center;font-size:1.3rem;
}
.contact-row .info{flex:1}
.contact-row .nm{font-size:1.1rem;font-weight:800}
.contact-row .ds{color:var(--muted);font-size:.95rem}
.mini-btn{
  min-width:48px;height:48px;border-radius:14px;border:none;background:var(--surface2);
  font-size:1.3rem;cursor:pointer;display:flex;align-items:center;justify-content:center;text-decoration:none;
}
.mini-btn:hover{background:var(--accent-soft)}

/* ---------- SOS ---------- */
.sos-wrap{text-align:center;margin-top:22px}
.sos-hint{margin:14px 0;color:var(--muted);font-size:1.05rem}
.sos-btn{
  width:190px;height:190px;border-radius:50%;border:none;cursor:pointer;
  background:radial-gradient(circle at 35% 30%, #E86A6A, var(--sos) 55%, var(--sos-dark));
  color:#fff;font-family:inherit;font-size:1.5rem;font-weight:800;
  box-shadow:0 10px 30px rgba(214,69,69,.35);transition:transform .1s;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;
}
.sos-btn:active{transform:scale(.95)}
.sos-btn .pulse{
  width:14px;height:14px;border-radius:50%;background:#fff;
  animation:pulse 1.2s infinite;
}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(255,255,255,.7)}70%{box-shadow:0 0 0 16px rgba(255,255,255,0)}100%{box-shadow:0 0 0 0 rgba(255,255,255,0)}}
@media (prefers-reduced-motion:reduce){.sos-btn .pulse{animation:none}}

/* ---------- Page head ---------- */
.page-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:4px;flex-wrap:wrap}
.page-head h2{font-size:1.35rem;font-weight:800}
.page-actions{display:flex;gap:8px;flex-wrap:wrap}

/* ---------- Bottom nav ---------- */
.bottom-nav{
  position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:100%;max-width:560px;
  background:var(--surface);border-top:1px solid var(--line);
  display:grid;grid-template-columns:repeat(5,1fr);padding:8px 6px calc(8px + env(safe-area-inset-bottom));
  z-index:50;
}
.bottom-nav a{
  display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 2px;
  color:var(--muted);font-size:.85rem;font-weight:700;text-decoration:none;border-radius:14px;
}
.bottom-nav a span{font-size:1.5rem;line-height:1}
.bottom-nav a.active{color:var(--accent);background:var(--accent-soft)}
.bottom-nav a.logout{color:var(--sos)}

/* ---------- Admin table ---------- */
.table-wrap{overflow-x:auto;margin-top:8px}
table{width:100%;border-collapse:collapse;font-size:.92rem}
th,td{padding:12px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:middle}
th{color:var(--muted);font-size:.85rem;text-transform:uppercase;letter-spacing:.03em}
.admin-actions{display:flex;flex-direction:column;gap:6px}
.admin-actions .btn{min-height:44px;font-size:.9rem;padding:6px 10px}
.admin-btn-row{display:flex;gap:6px}
.admin-btn-row .btn{flex:1}
.subs-input{display:flex;align-items:center;gap:6px;background:var(--surface2);border-radius:10px;padding:4px 8px;margin-bottom:6px}
.subs-input span{font-size:.85rem;font-weight:800;color:var(--muted)}
.subs-input input{width:100%;padding:8px 8px;font-size:.95rem;border:1px solid var(--line);border-radius:8px;min-height:auto}

/* ---------- Modal subscription ---------- */
.modal-overlay{
  position:fixed;inset:0;background:rgba(33,50,43,.55);z-index:100;
  display:flex;align-items:center;justify-content:center;padding:24px;
}
.modal{
  background:#fff;border-radius:var(--r-lg);padding:30px 26px;max-width:420px;width:100%;
  text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.25);
}
.modal-icon{font-size:3rem;margin-bottom:8px}
.modal h2{font-size:1.5rem;font-weight:800;margin-bottom:10px}
.modal p{font-size:1.05rem;color:var(--muted);margin-bottom:10px}
.modal .modal-price{font-size:1.2rem;color:var(--ink)}
.modal .modal-note{font-size:.95rem}
.modal .btn{margin-top:10px}

/* ---------- Auth pages ---------- */
.auth-body{
  display:flex;align-items:center;justify-content:center;min-height:100vh;
  background:linear-gradient(160deg,var(--accent) 0%,var(--accent-dark) 100%);padding:20px;
}
.auth-card{
  background:#fff;border-radius:28px;padding:36px 30px;max-width:430px;width:100%;
  box-shadow:0 20px 60px rgba(0,0,0,.25);
}
.auth-logo{font-size:3rem;text-align:center}
.auth-card h1{font-size:1.8rem;font-weight:800;text-align:center;margin:6px 0}
.auth-tag{text-align:center;color:var(--muted);font-size:1rem;margin-bottom:8px}
.auth-alt{text-align:center;margin-top:18px;font-size:1rem}
.auth-demo{text-align:center;margin-top:10px;font-size:.85rem;color:var(--muted)}
.auth-demo code{background:var(--surface2);padding:2px 8px;border-radius:6px}
.auth-card .flash{margin:10px 0 0}

/* ---------- Footer ---------- */
.app-footer{
  text-align:center;color:var(--muted);font-size:.95rem;font-weight:600;
  padding:18px 16px 0;margin-bottom:8px;
}
.auth-footer{
  text-align:center;color:rgba(255,255,255,.85);font-size:.95rem;font-weight:600;
  padding:18px 16px 10px;
}

/* ---------- Print ---------- */
@media print{
  .bottom-nav,.page-head a.btn,.form-actions,.sos-wrap,.lansia-switch{display:none!important}
  body{background:#fff}
  .card{box-shadow:none;border:1px solid #ddd}
}
