:root {
  /* TEMA POSYANDU MATAHARI: Biru + Kuning Matahari + Oranye */
  --blue-50:#EEF4FF;--blue-100:#DBEAFE;--blue-200:#BFDBFE;--blue-400:#60A5FA;--blue-500:#2E63C7;--blue-600:#1E4FAD;--blue-700:#163E8A;
  --pink-50:#FFF8E8;--pink-100:#FFEDC2;--pink-200:#FFDD8A;--pink-400:#FFB627;--pink-500:#F59E0B;--pink-600:#D97706;
  --white:#FFFFFF;--gray-50:#FAFAF7;--gray-100:#F1F1ED;--gray-200:#E2E2DB;--gray-300:#CBCBC0;--gray-400:#94948A;--gray-500:#64645C;--gray-600:#47473F;--gray-700:#33332D;--gray-800:#1E1E1A;
  --green-50:#F0FDF4;--green-100:#DCFCE7;--green-600:#16A34A;--green-700:#15803D;
  --red-50:#FFF5F5;--red-100:#FEE2E2;--red-600:#DC2626;
  --yellow-50:#FFFBEB;--yellow-100:#FEF3C7;--yellow-600:#D97706;
  --sidebar-w:220px;--topbar-h:60px;
  --radius-sm:6px;--radius-md:10px;--radius-lg:14px;
  --shadow-sm:0 1px 3px rgba(0,0,0,.06);--shadow-md:0 4px 12px rgba(46,99,199,.12);
  --tr:.18s ease;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0;}
body{font-family:'Segoe UI',system-ui,sans-serif;font-size:14px;color:var(--gray-700);background:var(--gray-50);line-height:1.6;}
a{text-decoration:none;color:inherit;}ul{list-style:none;}button{font-family:inherit;cursor:pointer;}
input,select,textarea{font-family:inherit;font-size:14px;}

/* LOGIN */
.login-body{background:linear-gradient(135deg,var(--blue-50) 0%,var(--pink-50) 100%);min-height:100vh;display:flex;align-items:center;justify-content:center;}
.login-card{background:var(--white);border-radius:var(--radius-lg);padding:2rem 2.5rem;box-shadow:0 8px 32px rgba(59,130,246,.12);border:1px solid var(--blue-100);width:100%;max-width:420px;}
.login-header{display:flex;align-items:center;gap:12px;margin-bottom:1rem;}
.login-logo{width:40px;height:40px;background:linear-gradient(135deg,var(--blue-500),var(--pink-400));border-radius:10px;display:flex;align-items:center;justify-content:center;}
.login-logo-img{background:var(--white);border:1.5px solid var(--blue-200);padding:2px;overflow:hidden;width:52px;height:52px;}
.login-logo-img img{width:100%;height:100%;object-fit:contain;border-radius:8px;}
.login-title{font-size:18px;font-weight:700;color:var(--blue-700);line-height:1.2;}
.login-subtitle{font-size:12px;color:var(--gray-400);}
.login-footer{font-size:12px;color:var(--gray-400);text-align:center;margin-top:1rem;}

/* FORMS */
.form-group{margin-bottom:1rem;}
.form-label{display:block;font-size:12px;font-weight:600;color:var(--gray-600);margin-bottom:5px;letter-spacing:.02em;}
.form-input{width:100%;height:40px;border:1.5px solid var(--gray-200);border-radius:var(--radius-sm);padding:0 12px;color:var(--gray-700);background:var(--white);transition:border-color var(--tr),box-shadow var(--tr);outline:none;}
.form-input:focus{border-color:var(--blue-400);box-shadow:0 0 0 3px rgba(96,165,250,.18);}
.form-input::placeholder{color:var(--gray-300);}
select.form-input{padding-right:32px;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%2394A3B8' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;}
textarea.form-input{height:auto;padding:10px 12px;resize:vertical;}
.input-icon{position:relative;}.input-icon .form-input{padding-left:38px;}
.input-icon-svg{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--gray-300);pointer-events:none;}
.toggle-password{position:absolute;right:10px;top:50%;transform:translateY(-50%);background:none;border:none;color:var(--gray-400);padding:4px;}
.divider{border:none;border-top:1px solid var(--gray-100);margin:1rem 0;}

/* BUTTONS */
.btn{display:inline-flex;align-items:center;gap:6px;height:38px;padding:0 16px;border-radius:var(--radius-sm);font-size:13px;font-weight:600;border:1.5px solid transparent;transition:all var(--tr);white-space:nowrap;}
.btn-primary{background:linear-gradient(135deg,var(--blue-500),var(--blue-600));color:var(--white);border-color:var(--blue-600);box-shadow:0 2px 8px rgba(59,130,246,.25);}
.btn-primary:hover{background:linear-gradient(135deg,var(--blue-600),var(--blue-700));}
.btn-pink{background:linear-gradient(135deg,var(--pink-400),var(--pink-500));color:var(--white);border-color:var(--pink-500);}
.btn-pink:hover{background:linear-gradient(135deg,var(--pink-500),var(--pink-600));}
.btn-outline{background:var(--white);color:var(--gray-600);border-color:var(--gray-200);}
.btn-outline:hover{background:var(--gray-50);border-color:var(--gray-300);}
.btn-danger{background:var(--white);color:var(--red-600);border-color:var(--red-600);}
.btn-danger:hover{background:var(--red-100);}
.btn-sm{height:32px;padding:0 12px;font-size:12px;}
.btn-full{width:100%;justify-content:center;}
.btn-icon{width:34px;padding:0;justify-content:center;}

/* ALERTS */
.alert{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:var(--radius-sm);font-size:13px;margin-bottom:1rem;border:1px solid transparent;}
.alert-danger{background:var(--red-100);color:var(--red-600);border-color:#FECACA;}
.alert-success{background:var(--green-100);color:var(--green-600);border-color:#BBF7D0;}
.alert-info{background:var(--blue-100);color:var(--blue-700);border-color:var(--blue-200);}

/* LAYOUT */
.app-layout{display:flex;min-height:100vh;}
.sidebar{width:var(--sidebar-w);background:var(--white);border-right:1px solid var(--blue-100);display:flex;flex-direction:column;position:fixed;top:0;left:0;bottom:0;z-index:100;box-shadow:2px 0 12px rgba(59,130,246,.07);}
.sidebar-brand{display:flex;align-items:center;gap:10px;padding:18px 20px;border-bottom:1px solid var(--blue-50);}
.brand-icon{width:36px;height:36px;background:linear-gradient(135deg,var(--blue-500),var(--pink-400));border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.brand-icon-logo{background:var(--white);border:1.5px solid var(--blue-200);padding:2px;overflow:hidden;}
.brand-logo-img{width:100%;height:100%;object-fit:contain;border-radius:6px;}
.brand-name{font-size:15px;font-weight:700;color:var(--blue-700);line-height:1.2;}
.brand-sub{font-size:10px;color:var(--gray-400);}
.sidebar-menu{flex:1;padding:12px 0;overflow-y:auto;}
.menu-section{padding:8px 16px 4px;font-size:10px;font-weight:700;color:var(--gray-400);letter-spacing:.08em;text-transform:uppercase;}
.menu-item{display:flex;align-items:center;gap:10px;padding:9px 20px;color:var(--gray-500);font-size:13px;font-weight:500;transition:all var(--tr);border-left:3px solid transparent;cursor:pointer;}
.menu-item:hover{background:var(--blue-50);color:var(--blue-600);border-left-color:var(--blue-200);}
.menu-item.active{background:var(--blue-50);color:var(--blue-600);border-left-color:var(--blue-500);font-weight:600;}
.sidebar-footer{padding:12px 0;border-top:1px solid var(--blue-50);}
.main-content{margin-left:var(--sidebar-w);flex:1;display:flex;flex-direction:column;min-height:100vh;}
.topbar{height:var(--topbar-h);background:var(--white);border-bottom:1px solid var(--blue-100);display:flex;align-items:center;justify-content:space-between;padding:0 28px;position:sticky;top:0;z-index:90;box-shadow:0 1px 4px rgba(59,130,246,.06);}
.topbar-left h2{font-size:16px;font-weight:700;color:var(--gray-800);line-height:1.2;}
.topbar-left p{font-size:12px;color:var(--gray-400);}
.topbar-right{display:flex;align-items:center;gap:14px;}
.topbar-posyandu{font-size:12px;background:var(--blue-50);color:var(--blue-600);padding:4px 12px;border-radius:20px;font-weight:600;border:1px solid var(--blue-100);}
.topbar-user{display:flex;align-items:center;gap:8px;cursor:pointer;position:relative;}
.avatar{width:32px;height:32px;border-radius:50%;background:linear-gradient(135deg,var(--blue-400),var(--pink-400));display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:var(--white);flex-shrink:0;}
.topbar-user-name{font-size:13px;font-weight:600;color:var(--gray-700);}
.topbar-dropdown{position:absolute;top:40px;right:0;background:var(--white);border:1px solid var(--gray-200);border-radius:var(--radius-md);box-shadow:var(--shadow-md);min-width:160px;display:none;z-index:200;}
.topbar-dropdown.show{display:block;}
.topbar-dropdown a{display:flex;align-items:center;gap:8px;padding:9px 14px;font-size:13px;color:var(--gray-600);transition:background var(--tr);}
.topbar-dropdown a:hover{background:var(--gray-50);}

/* PAGE */
.page-content{padding:28px;flex:1;}

/* STATS */
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px;}
.stat-card{background:var(--white);border-radius:var(--radius-md);padding:18px 20px;border:1px solid var(--blue-100);display:flex;align-items:center;gap:14px;box-shadow:var(--shadow-sm);}
.stat-icon{width:46px;height:46px;border-radius:var(--radius-sm);display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.stat-icon.blue{background:var(--blue-100);color:var(--blue-600);}
.stat-icon.pink{background:var(--pink-100);color:var(--pink-600);}
.stat-icon.green{background:var(--green-100);color:var(--green-600);}
.stat-icon.red{background:var(--red-100);color:var(--red-600);}
.stat-icon.yellow{background:var(--yellow-100);color:var(--yellow-600);}
.stat-label{font-size:12px;color:var(--gray-400);font-weight:500;}
.stat-value{font-size:26px;font-weight:700;color:var(--gray-800);line-height:1.2;}
.stat-sub{font-size:11px;color:var(--gray-400);}

/* CARDS */
.card{background:var(--white);border-radius:var(--radius-md);border:1px solid var(--blue-100);box-shadow:var(--shadow-sm);overflow:hidden;}
.card-header{padding:16px 20px;border-bottom:1px solid var(--blue-50);display:flex;align-items:center;justify-content:space-between;gap:12px;}
.card-title{font-size:14px;font-weight:700;color:var(--gray-800);}
.card-subtitle{font-size:12px;color:var(--gray-400);margin-top:1px;}
.card-body{padding:20px;}
.card-footer{padding:12px 20px;border-top:1px solid var(--blue-50);background:var(--gray-50);display:flex;align-items:center;justify-content:space-between;gap:12px;}

/* TABLE */
.table-wrapper{overflow-x:auto;}
table{width:100%;border-collapse:collapse;}
thead tr{background:linear-gradient(90deg,var(--blue-50),var(--pink-50));}
thead th{padding:10px 14px;font-size:11px;font-weight:700;color:var(--gray-500);text-align:left;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap;border-bottom:1px solid var(--blue-100);}
tbody tr{border-bottom:1px solid var(--gray-100);transition:background var(--tr);}
tbody tr:hover{background:var(--blue-50);}
tbody td{padding:10px 14px;font-size:13px;color:var(--gray-700);vertical-align:middle;}
.td-name{font-weight:600;color:var(--gray-800);}

/* SEARCH */
.toolbar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.search-box{display:flex;align-items:center;gap:8px;background:var(--white);border:1.5px solid var(--gray-200);border-radius:var(--radius-sm);padding:0 12px;height:38px;flex:1;min-width:200px;max-width:340px;transition:border-color var(--tr);}
.search-box:focus-within{border-color:var(--blue-400);}
.search-box svg{color:var(--gray-300);flex-shrink:0;}
.search-box input{border:none;outline:none;background:transparent;flex:1;font-size:13px;color:var(--gray-700);}

/* PAGINATION */
.pagination{display:flex;align-items:center;gap:4px;}
.page-btn{width:32px;height:32px;border-radius:var(--radius-sm);border:1px solid var(--gray-200);background:var(--white);font-size:12px;color:var(--gray-600);display:flex;align-items:center;justify-content:center;transition:all var(--tr);}
.page-btn:hover{border-color:var(--blue-300);color:var(--blue-600);background:var(--blue-50);}
.page-btn.active{background:linear-gradient(135deg,var(--blue-500),var(--blue-600));color:var(--white);border-color:var(--blue-600);}

/* MODAL */
.modal-overlay{position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:300;display:flex;align-items:center;justify-content:center;padding:20px;opacity:0;pointer-events:none;transition:opacity var(--tr);}
.modal-overlay.show{opacity:1;pointer-events:all;}
.modal{background:var(--white);border-radius:var(--radius-lg);width:100%;max-width:640px;max-height:90vh;overflow-y:auto;box-shadow:0 20px 60px rgba(59,130,246,.18);border:1px solid var(--blue-100);transform:translateY(20px);transition:transform var(--tr);}
.modal-overlay.show .modal{transform:translateY(0);}
.modal-header{padding:18px 24px;border-bottom:1px solid var(--blue-50);display:flex;align-items:center;justify-content:space-between;background:linear-gradient(135deg,var(--blue-50),var(--pink-50));border-radius:var(--radius-lg) var(--radius-lg) 0 0;}
.modal-title{font-size:15px;font-weight:700;color:var(--blue-700);}
.modal-close{width:30px;height:30px;border-radius:50%;border:none;background:var(--white);color:var(--gray-400);display:flex;align-items:center;justify-content:center;}
.modal-close:hover{background:var(--red-100);color:var(--red-600);}
.modal-body{padding:24px;}
.modal-footer{padding:16px 24px;border-top:1px solid var(--blue-50);display:flex;justify-content:flex-end;gap:10px;}

/* FORM GRID */
.form-grid{display:grid;gap:14px;}
.form-grid-2{grid-template-columns:1fr 1fr;}
.form-grid-3{grid-template-columns:1fr 1fr 1fr;}
.form-grid-4{grid-template-columns:1fr 1fr 1fr 1fr;}
.form-section{margin-bottom:1.25rem;}
.form-section-title{font-size:12px;font-weight:700;color:var(--blue-600);text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px;padding-bottom:6px;border-bottom:2px solid var(--blue-100);display:flex;align-items:center;gap:6px;}
.radio-group{display:flex;gap:8px;flex-wrap:wrap;}
.radio-pill input{display:none;}
.radio-pill label{display:flex;align-items:center;gap:6px;padding:6px 14px;border-radius:20px;border:1.5px solid var(--gray-200);font-size:13px;font-weight:500;cursor:pointer;transition:all var(--tr);color:var(--gray-500);}
.radio-pill input:checked + label{border-color:var(--blue-400);background:var(--blue-50);color:var(--blue-700);}
.radio-pill.pink input:checked + label{border-color:var(--pink-400);background:var(--pink-50);color:var(--pink-600);}
.checkbox-group{display:grid;grid-template-columns:1fr 1fr;gap:8px;}
.checkbox-item{display:flex;align-items:center;gap:8px;padding:8px 12px;border:1.5px solid var(--gray-200);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--tr);font-size:13px;color:var(--gray-600);}
.checkbox-item:hover{border-color:var(--blue-300);background:var(--blue-50);}
.checkbox-item input[type="checkbox"]{accent-color:var(--blue-500);width:15px;height:15px;}

/* ACTION BUTTONS */
.action-group{display:flex;align-items:center;gap:6px;}
.action-btn{width:30px;height:30px;border-radius:var(--radius-sm);border:1px solid transparent;display:flex;align-items:center;justify-content:center;transition:all var(--tr);background:transparent;flex-shrink:0;}
.action-btn.edit{color:var(--blue-500);border-color:var(--blue-200);}
.action-btn.edit:hover{background:var(--blue-100);}
.action-btn.view{color:var(--green-600);border-color:var(--green-100);}
.action-btn.view:hover{background:var(--green-100);}
.action-btn.del{color:var(--red-600);border-color:var(--red-100);}
.action-btn.del:hover{background:var(--red-100);}

/* TOAST */
.toast-container{position:fixed;bottom:24px;right:24px;z-index:999;display:flex;flex-direction:column;gap:8px;}
.toast{display:flex;align-items:center;gap:10px;background:var(--white);border-radius:var(--radius-md);padding:12px 16px;box-shadow:0 8px 24px rgba(0,0,0,.12);border-left:4px solid var(--blue-500);font-size:13px;font-weight:500;color:var(--gray-700);min-width:260px;animation:slideIn .25s ease;}
.toast.success{border-left-color:var(--green-600);}
.toast.error{border-left-color:var(--red-600);}
@keyframes slideIn{from{transform:translateX(80px);opacity:0;}to{transform:translateX(0);opacity:1;}}

/* GIZI COLOR BADGES */
.gizi-buruk   {background:#FEE2E2;color:#991B1B;border:1px solid #FECACA;}
.gizi-kurang  {background:#FEF9C3;color:#854D0E;border:1px solid #FDE68A;}
.gizi-baik    {background:#DCFCE7;color:#14532D;border:1px solid #BBF7D0;}
.gizi-lebih   {background:#DBEAFE;color:#1E3A8A;border:1px solid #BFDBFE;}
.gizi-obesitas{background:#FDF2F8;color:#831843;border:1px solid #FBCFE8;}
.badge{display:inline-block;padding:2px 10px;border-radius:20px;font-size:11px;font-weight:600;}
.badge-L{background:var(--blue-100);color:var(--blue-700);}
.badge-P{background:#FCE7F3;color:#BE185D;}
.badge-imun-lengkap{background:var(--green-100);color:var(--green-700);}
.badge-imun-tidak{background:var(--red-100);color:var(--red-600);}
.badge-imun-belum{background:var(--gray-100);color:var(--gray-600);}
.keterangan-sehat{background:#DCFCE7;color:#14532D;}
.keterangan-pmt{background:#FEF9C3;color:#854D0E;}
.keterangan-rujuk{background:#FEE2E2;color:#991B1B;}
.keterangan-pantau{background:#DBEAFE;color:#1E3A8A;}

/* ZSCORE BOX */
.zscore-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:12px;}
.zscore-item{border-radius:var(--radius-sm);padding:10px 12px;text-align:center;}
.zscore-label{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-bottom:4px;}
.zscore-val{font-size:18px;font-weight:700;line-height:1;}
.zscore-status{font-size:11px;margin-top:3px;font-weight:600;}

/* DIAGRAM / CHART */
.chart-container{position:relative;height:260px;margin-top:8px;}

/* DASHBOARD GRID */
.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:24px;}
.activity-item{display:flex;align-items:center;gap:12px;padding:10px 0;border-bottom:1px solid var(--gray-100);}
.activity-item:last-child{border-bottom:none;}
.activity-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0;}
.activity-dot.blue{background:var(--blue-400);}
.activity-dot.pink{background:var(--pink-400);}
.activity-dot.green{background:var(--green-600);}
.activity-dot.red{background:var(--red-600);}

/* EMPTY STATE */
.empty-state{text-align:center;padding:48px 20px;color:var(--gray-400);}
.empty-state svg{margin:0 auto 12px;opacity:.4;display:block;}

/* UTILS */
.text-muted{color:var(--gray-400);font-size:12px;}
.fw-bold{font-weight:700;}
.mb-1{margin-bottom:8px;}.mb-2{margin-bottom:16px;}.mb-3{margin-bottom:24px;}
.d-flex{display:flex;}.align-center{align-items:center;}.justify-between{justify-content:space-between;}
.flex-1{flex:1;}.w-full{width:100%;}
.text-center{text-align:center;}
::-webkit-scrollbar{width:5px;height:5px;}
::-webkit-scrollbar-track{background:var(--gray-50);}
::-webkit-scrollbar-thumb{background:var(--blue-200);border-radius:4px;}
@media(max-width:900px){.stats-grid{grid-template-columns:repeat(2,1fr);}.dashboard-grid{grid-template-columns:1fr;}.form-grid-2,.form-grid-3,.form-grid-4{grid-template-columns:1fr;}}

/* =============================================
   HALAMAN PILIH POSYANDU & PERIODE
   ============================================= */
.select-period-body {
  background: linear-gradient(160deg, var(--blue-50) 0%, var(--pink-50) 60%, var(--white) 100%);
  min-height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 24px;
}
.select-period-card {
  background: var(--white);
  border-radius: var(--radius-lg);
  padding: 2.5rem;
  max-width: 560px;
  width: 100%;
  box-shadow: 0 12px 40px rgba(46,99,199,.14);
  border: 1px solid var(--blue-100);
}
.select-period-header {
  text-align: center;
  margin-bottom: 1.5rem;
}
.select-period-title {
  font-size: 17px;
  font-weight: 700;
  color: var(--blue-700);
  line-height: 1.4;
}
.select-period-sub {
  font-size: 13px;
  color: var(--gray-500);
  margin-top: 4px;
}

/* Keterangan info box (penjelasan indikasi) */
.keterangan-info-box {
  border-radius: var(--radius-md);
  padding: 12px 16px;
  margin-bottom: 10px;
  border-left: 4px solid;
}
.keterangan-info-box.sehat       { background: var(--green-50); border-color: var(--green-600); }
.keterangan-info-box.pemantauan  { background: var(--blue-50);  border-color: var(--blue-500); }
.keterangan-info-box.pmt         { background: var(--pink-50);  border-color: var(--pink-500); }
.keterangan-info-box.rujuk       { background: var(--red-50);   border-color: var(--red-600); }
.keterangan-info-title { font-size: 13px; font-weight: 700; margin-bottom: 2px; }
.keterangan-info-desc  { font-size: 12px; color: var(--gray-600); line-height: 1.5; }

/* Periode badge di topbar */
.topbar-periode {
  font-size: 12px;
  background: var(--pink-50);
  color: var(--pink-600);
  padding: 4px 12px;
  border-radius: 20px;
  font-weight: 600;
  border: 1px solid var(--pink-200);
}
