:root {
  --bg-main: #f4f6f8;
  --bg-card: #ffffff;
  --text-dark: #1a2a22;
  --text-gray: #6e7974;
  --text-light: #a4b0a9;
  --green-dark: #0f4f34;
  --green-light: #b4f0cf;
  --green-mid: #94e3bd;
  --green-accent: #2c6e49;
  --blue-main: #2980b9;
  --blue-light: #d6eaf8;
  --red-main: #c0392b;
  --red-light: #fcd5d1;
  --orange-main: #e67e22;
  --orange-light: #fdebd0;
  --border-light: #e8ecef;
  --radius-sm: 12px;
  --radius-md: 20px;
  --radius-lg: 24px;
  --shadow-card: 0 2px 16px rgba(0,0,0,0.04);
  --shadow-hover: 0 6px 24px rgba(0,0,0,0.08);
  --transition: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
}

* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }

body {
  font-family: 'Inter', sans-serif;
  background: var(--bg-main);
  color: var(--text-dark);
  padding-bottom: 80px;
  -webkit-font-smoothing: antialiased;
}

a, button { cursor:pointer; border:none; outline:none; background:transparent; font-family:inherit; }
h1,h2,h3,h4 { font-weight:700; color:var(--green-dark); }
.uppercase { text-transform:uppercase; font-weight:800; }
.overline { font-size:11px; font-weight:700; letter-spacing:1.5px; color:var(--text-gray); margin-bottom:6px; text-transform:uppercase; }

/* ═══════════════════════════════════
   HEADER
═══════════════════════════════════ */
.app-header {
  display:flex; justify-content:space-between; align-items:center;
  padding:20px 20px 16px;
  background:var(--bg-main);
  position:sticky; top:0; z-index:100;
  backdrop-filter:blur(12px);
}
.logo { font-size:18px; font-weight:800; color:var(--green-dark); display:flex; align-items:center; gap:10px; }
.header-logo-img { height:55px; width:auto; border-radius:8px; margin-top: -5px; }
.header-actions { display:flex; align-items:center; gap:14px; }
.icon-btn { color:var(--text-dark); font-size:20px; position:relative; }
.icon-btn .notif-dot { position:absolute; top:-2px; right:-2px; width:8px; height:8px; background:var(--red-main); border-radius:50%; border:2px solid var(--bg-main); }
.avatar-small { width:34px; height:34px; border-radius:50%; overflow:hidden; border:2px solid var(--green-light); }
.avatar-small img { width:100%; height:100%; object-fit:cover; }

/* ═══════════════════════════════════
   VIEW & LAYOUT
═══════════════════════════════════ */
.view { display:none; width:100%; animation:fadein 0.35s ease; }
.view.active { display:block; }
@keyframes fadein { from{opacity:0;transform:translateY(8px);} to{opacity:1;transform:translateY(0);} }
.container { padding:0 16px; display:flex; flex-direction:column; gap:14px; }

/* ═══════════════════════════════════
   PAGE TITLE
═══════════════════════════════════ */
.page-title-group { padding:6px 0 16px; }
.page-title-group h1 { font-size:28px; line-height:1.1; margin-bottom:8px; }
.page-title-group .subtitle { font-size:13px; color:var(--text-gray); line-height:1.5; }

/* ═══════════════════════════════════
   CARD BASE
═══════════════════════════════════ */
.card {
  background:var(--bg-card);
  border-radius:var(--radius-lg);
  padding:20px;
  box-shadow:var(--shadow-card);
  position:relative;
  overflow:hidden;
  transition:var(--transition);
}
.card:hover { box-shadow:var(--shadow-hover); }

/* ═══════════════════════════════════
   STATUS PILL
═══════════════════════════════════ */
.status-pill {
  display:inline-flex; align-items:center; gap:6px;
  padding:5px 12px; border-radius:999px;
  font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:0.5px;
}
.status-pill.online { background:var(--green-light); color:var(--green-dark); }
.status-pill.offline { background:#f0f0f0; color:#888; }
.status-pill.rain { background:var(--blue-light); color:var(--blue-main); }
.status-pill.warning { background:var(--orange-light); color:var(--orange-main); }
.status-pill.danger { background:var(--red-light); color:var(--red-main); }
.status-pill .dot { width:6px; height:6px; border-radius:50%; }
.status-pill.online .dot { background:var(--green-dark); animation:pulse-dot 2s infinite; }
.status-pill.rain .dot { background:var(--blue-main); animation:pulse-dot 1.5s infinite; }
@keyframes pulse-dot { 0%,100%{opacity:1;} 50%{opacity:0.3;} }

/* ═══════════════════════════════════
   WEATHER CARD
═══════════════════════════════════ */
.weather-card { padding:20px; }
.weather-top { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:16px; }
.weather-meta { font-size:12px; font-weight:600; color:var(--text-gray); display:flex; align-items:center; gap:6px; }
.weather-meta i { font-size:16px; color:var(--green-dark); }
.weather-temp-big { font-size:42px; font-weight:800; color:var(--text-dark); line-height:1; margin-bottom:16px; }
.weather-temp-big span { font-size:20px; font-weight:600; color:var(--text-gray); }
.weather-stats { display:flex; gap:20px; margin-bottom:16px; }
.weather-stat { display:flex; flex-direction:column; gap:2px; }
.weather-stat small { font-size:9px; font-weight:700; color:var(--text-light); text-transform:uppercase; letter-spacing:0.5px; }
.weather-stat span { font-size:13px; font-weight:700; color:var(--text-dark); }

/* 🌊 Status Card (v76.4) */
.status-card { padding: 0 !important; overflow: hidden; }
.status-card-header {
    background: linear-gradient(135deg, var(--green-dark), var(--green-accent));
    padding: 16px 20px; color: #fff;
    display: flex; justify-content: space-between; align-items: center;
}
.status-label-group { display: flex; align-items: center; gap: 10px; }
.status-label-group i { font-size: 20px; color: var(--green-mid); }
.wifi-name-text { font-size: 14px; font-weight: 800; letter-spacing: 0.5px; }

.status-card-body { padding: 20px; background: #fff; }
.status-info-row { display: flex; gap: 20px; }
.status-info-item { flex: 1; display: flex; flex-direction: column; gap: 4px; }
.status-info-item small { font-size: 9px; font-weight: 800; color: var(--text-light); text-transform: uppercase; letter-spacing: 1px; }
.status-info-item span { font-size: 15px; font-weight: 800; color: var(--text-dark); }
.weather-forecast {
  font-size:11px; color:var(--text-dark); background:var(--bg-main);
  padding:10px 14px; border-radius:10px; line-height:1.5;
  border-left:3px solid var(--green-accent);
}

/* ── Rain Alert Banner ── */
.rain-alert {
  display:none; align-items:center; gap:12px;
  background:linear-gradient(135deg, #2980b9, #3498db);
  padding:14px 16px; border-radius:14px; margin-top:12px;
  color:#fff;
}
.rain-alert.active { display:flex; }
.rain-alert i { font-size:28px; flex-shrink:0; }
.rain-alert-text h4 { font-size:13px; font-weight:700; color:#fff; margin-bottom:2px; }
.rain-alert-text p { font-size:11px; opacity:0.85; }

/* ═══════════════════════════════════
   SENSOR GRID — 3 Panels
═══════════════════════════════════ */
.sensor-section-title {
  font-size:11px; font-weight:700; color:var(--text-gray);
  text-transform:uppercase; letter-spacing:1.2px;
  padding:8px 0 4px;
  display:flex; align-items:center; gap:8px;
}
.sensor-section-title i { font-size:14px; color:var(--green-dark); }

.sensor-grid { display:flex; flex-direction:column; gap:12px; }

.sensor-card {
  background:var(--bg-card);
  border-radius:var(--radius-lg);
  padding:18px;
  box-shadow:var(--shadow-card);
  display:flex; align-items:center; gap:16px;
  position:relative; overflow:hidden;
  transition:var(--transition);
  cursor:pointer;
}
.sensor-card:hover { box-shadow:var(--shadow-hover); background: rgba(255,255,255,0.8); }
.sensor-card:active { transform: scale(0.98); }
.sensor-card .water-accent {
  position:absolute; top:-30px; right:-30px;
  width:100px; height:100px;
  border-radius:50%;
  opacity:0.08; pointer-events:none;
}
.sensor-card:nth-child(1) .water-accent { background:var(--green-dark); }
.sensor-card:nth-child(2) .water-accent { background:var(--blue-main); }
.sensor-card:nth-child(3) .water-accent { background:var(--orange-main); }

/* 🚨 Nem Alarmı (Danger Mode) */
.sensor-card.danger {
  border: 2px solid var(--red-main);
  background: var(--red-light);
  animation: pulse-border 2s infinite;
}
.sensor-card.danger .val { color: var(--red-main) !important; }
.sensor-card.danger .unit { color: var(--red-main) !important; }
.sensor-card.danger .sensor-label { color: var(--red-main) !important; }

@keyframes pulse-border {
  0% { border-color: var(--red-main); }
  50% { border-color: transparent; }
  100% { border-color: var(--red-main); }
}

.sensor-donut-wrap {
  width:80px; height:80px;
  position:relative; flex-shrink:0;
}
.sensor-donut-center {
  position:absolute; inset:0;
  display:flex; flex-direction:column; justify-content:center; align-items:center;
}
.sensor-donut-center .val { font-size:20px; font-weight:800; color:var(--text-dark); line-height:1; }
.sensor-donut-center .unit { font-size:8px; font-weight:700; color:var(--green-dark); }

.sensor-info { flex:1; min-width:0; }
.sensor-label { font-size:13px; font-weight:700; color:var(--text-dark); margin-bottom:4px; display:block; }
.sensor-sublabel { font-size:10px; color:var(--text-gray); font-weight:600; }
.sensor-status-row { display:flex; align-items:center; gap:8px; margin-top:6px; }

/* ═══════════════════════════════════
   VALVE DETAIL CARDS
═══════════════════════════════════ */
.valve-section-title {
  font-size:11px; font-weight:700; color:var(--text-gray);
  text-transform:uppercase; letter-spacing:1.2px;
  padding:8px 0 4px;
  display:flex; align-items:center; gap:8px;
}
.valve-section-title i { font-size:14px; color:var(--green-dark); }

.valve-detail-card {
  background:var(--bg-card);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-card);
  overflow:hidden;
  transition:var(--transition);
  margin-bottom:12px;
}
.valve-detail-card:hover { box-shadow:var(--shadow-hover); }
.valve-detail-card.active-valve { border-left:4px solid var(--green-dark); }

.valve-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:16px 18px; border-bottom:1px solid var(--border-light);
}
.valve-header-left { display:flex; align-items:center; gap:12px; flex:1; min-width:0; }
.valve-icon-circle {
  width:40px; height:40px; border-radius:50%;
  display:flex; justify-content:center; align-items:center; font-size:18px;
  flex-shrink:0; transition:var(--transition);
}
.valve-icon-circle.on { background:var(--green-light); color:var(--green-dark); }
.valve-icon-circle.off { background:#f0f0f0; color:#999; }
.valve-name { font-size:14px; font-weight:700; color:var(--text-dark); }
.valve-status-text { font-size:10px; font-weight:700; text-transform:uppercase; }
.valve-status-text.on { color:var(--green-dark); }
.valve-status-text.off { color:var(--text-light); }

.valve-body { padding:16px 18px; }

/* ── Linked Sensors Row ── */
.linked-sensors {
  display:flex; gap:8px; flex-wrap:wrap; margin-bottom:14px;
}
.linked-chip {
  display:inline-flex; align-items:center; gap:4px;
  background:var(--bg-main); padding:4px 10px; border-radius:8px;
  font-size:10px; font-weight:700; color:var(--text-gray);
}
.linked-chip i { font-size:12px; color:var(--green-accent); }
.linked-chip .linked-val { color:var(--green-dark); font-size:11px; }

/* ── Flow Meter Display ── */
.flow-row {
  display:flex; gap:10px; margin-bottom:14px;
}
.flow-box {
  flex:1; background:var(--bg-main); border-radius:12px; padding:12px; text-align:center;
}
.flow-box .flow-label { font-size:9px; font-weight:700; color:var(--text-light); text-transform:uppercase; letter-spacing:0.5px; margin-bottom:4px; }
.flow-box .flow-value { font-size:18px; font-weight:800; color:var(--text-dark); line-height:1; }
.flow-box .flow-unit { font-size:10px; color:var(--text-gray); font-weight:600; }
.flow-box.highlight { background:linear-gradient(135deg, rgba(15,79,52,0.06), rgba(15,79,52,0.02)); }

/* ── Threshold Sliders ── */
.threshold-section {
  background:var(--bg-main); border-radius:14px; padding:14px; margin-top:4px;
}
.threshold-title {
  font-size:9px; font-weight:700; color:var(--text-light);
  text-transform:uppercase; letter-spacing:0.8px; margin-bottom:10px;
}
.threshold-row {
  display:flex; align-items:center; gap:10px; margin-bottom:10px;
}
.threshold-row:last-child { margin-bottom:0; }
.threshold-row label {
  font-size:10px; font-weight:700; color:var(--text-gray);
  width:40px; flex-shrink:0;
}
.threshold-row input[type=range] {
  flex:1; accent-color:var(--green-dark); height:5px; border-radius:10px; outline:none;
  -webkit-appearance:none; appearance:none; background:#ddd;
}
.threshold-row input[type=range]::-webkit-slider-thumb {
  -webkit-appearance:none; width:18px; height:18px;
  border-radius:50%; background:var(--green-dark);
  border:3px solid #fff; box-shadow:0 1px 4px rgba(0,0,0,0.2);
  cursor:pointer;
}
.threshold-val {
  font-size:12px; font-weight:800; color:var(--green-dark);
  background:var(--green-light); padding:4px 10px; border-radius:8px;
  min-width:42px; text-align:center;
}

/* ═══════════════════════════════════
   MASTER STOP
═══════════════════════════════════ */
.master-stop-btn {
  width:100%; padding:14px;
  background:linear-gradient(135deg, #e74c3c, #c0392b);
  color:white; font-weight:700; border:none; border-radius:14px;
  font-size:13px; display:flex; justify-content:center; align-items:center; gap:8px;
  cursor:pointer; box-shadow:0 4px 15px rgba(231,76,60,0.25);
  transition:var(--transition);
}
.master-stop-btn:active { transform:scale(0.98); }
.master-stop-btn.active-stop {
  background:linear-gradient(135deg, #922b21, #7b241c);
  animation:pulse-red 2s infinite;
}
@keyframes pulse-red { 0%{box-shadow:0 0 0 0 rgba(231,76,60,0.4);} 70%{box-shadow:0 0 0 12px rgba(231,76,60,0);} 100%{box-shadow:0 0 0 0 rgba(231,76,60,0);} }
.master-stop-hint {
  font-size:10px; text-align:center; color:var(--text-light); margin-top:6px; margin-bottom:8px;
}

/* ═══════════════════════════════════
   BOTANIK ŞABLONLAR
═══════════════════════════════════ */
.plant-card { background:#4a6b50; color:#fff; padding:20px; border-radius:var(--radius-lg); }
.plant-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; }
.plant-header h3 { color:#fff; font-size:16px; }
.header-btn {
  font-size:10px; font-weight:700;
  background:rgba(255,255,255,0.15); color:#fff;
  padding:6px 12px; border-radius:10px; cursor:pointer;
  transition:var(--transition);
}
.header-btn:hover { background:rgba(255,255,255,0.25); }

.plant-blocks { display:flex; flex-direction:column; gap:10px; margin-bottom:16px; }
.pblock {
  background:rgba(0,0,0,0.12); padding:14px; border-radius:14px;
  display:flex; align-items:center; gap:14px;
  cursor:pointer; border:1px solid transparent; transition:var(--transition);
  position:relative;
}
.pblock:hover { background:rgba(0,0,0,0.2); }
.pblock.active { background:var(--green-light); color:var(--green-dark); border-color:rgba(255,255,255,0.3); }
.pb-left {
  width:40px; height:40px; border-radius:10px;
  background:rgba(255,255,255,0.1);
  display:flex; justify-content:center; align-items:center; font-size:22px; color:#fff;
  transition:var(--transition);
}
.pblock.active .pb-left { background:#fff; color:var(--green-dark); }
.pb-right { flex:1; display:flex; flex-direction:column; gap:3px; }
.pb-right strong { font-size:13px; color:#fff; }
.pb-right span { font-size:10px; color:rgba(255,255,255,0.6); font-weight:500; }
.pblock.active .pb-right strong { color:var(--green-dark); }
.pblock.active .pb-right span { color:var(--green-accent); font-weight:700; }
.pb-check { font-size:18px; color:var(--green-dark); position:absolute; right:14px; }

/* Ege flora modal */
.ege-db-list { display:flex; flex-direction:column; gap:8px; margin-top:10px; max-height:250px; overflow-y:auto; }
.ege-db-item {
  display:flex; align-items:center; background:#f5f6f5; padding:12px; border-radius:10px; gap:12px;
  cursor:pointer; transition:var(--transition);
}
.ege-db-item:hover { background:var(--green-light); border:1px solid var(--green-mid); }
.ege-db-item i { font-size:22px; color:var(--green-dark); }

/* 📉 Geçmiş Listesi Stilleri (v73.8) */
.history-list-item {
  display: flex; justify-content: space-between; align-items: center;
  padding: 12px 16px; border-bottom: 1px solid var(--border-light);
  background: #fff; transition: var(--transition);
}
.history-list-item:last-child { border-bottom: none; }
.history-time { font-size: 11px; font-weight: 700; color: var(--text-gray); }
.history-val { font-size: 14px; font-weight: 800; color: var(--text-dark); }
.history-status-on { color: var(--green-dark); font-weight: 800; font-size: 12px; }
.history-status-off { color: var(--text-light); font-size: 12px; }

/* 📉 Gap Fix */
.ege-db-list { margin-top: 0 !important; padding-top: 0 !important; }

/* ═══════════════════════════════════
   TOGGLE SWITCH
═══════════════════════════════════ */
.toggle-switch { position:relative; display:inline-block; width:44px; height:24px; flex-shrink:0; }
.toggle-switch input { opacity:0; width:0; height:0; }
.slider {
  position:absolute; cursor:pointer; top:0; left:0; right:0; bottom:0;
  background-color:#ccc; transition:0.3s; border-radius:34px;
}
.slider:before {
  position:absolute; content:""; height:18px; width:18px; left:3px; bottom:3px;
  background-color:white; transition:0.3s; border-radius:50%;
  box-shadow:0 1px 3px rgba(0,0,0,0.15);
}
input:checked + .slider { background-color:var(--green-dark); }
input:checked + .slider:before { transform:translateX(20px); }

/* ═══════════════════════════════════
   BOTTOM NAV
═══════════════════════════════════ */
.bottom-nav {
  position:fixed; bottom:0; left:0; width:100%; height:58px;
  background:rgba(255,255,255,0.92); backdrop-filter:blur(12px);
  border-top:1px solid var(--border-light);
  display:flex; justify-content:space-around; align-items:center;
  z-index:100; box-shadow:0 -2px 16px rgba(0,0,0,0.03);
}
.nav-item {
  display:flex; flex-direction:column; align-items:center; gap:3px;
  flex:1; padding:8px 0; color:var(--text-light); transition:var(--transition);
  height:100%; justify-content:center;
}
.nav-item i { font-size:20px; transition:0.2s; }
.nav-item span { font-size:8px; font-weight:700; letter-spacing:0.3px; }
.nav-item.active { color:var(--green-dark); }
.nav-item.active i { transform:scale(1.15); }
.nav-item.active span { font-weight:800; }

/* ═══════════════════════════════════
   PROFILE
═══════════════════════════════════ */
.profile-hero {
  display:flex; flex-direction:column; align-items:center;
  padding:20px 0 32px; position:relative;
}
.profile-hero::before {
  content:''; position:absolute; top:-80px; left:-50%; width:200%; height:260px;
  background:radial-gradient(circle, rgba(180,240,207,0.35) 0%, transparent 60%);
  z-index:0; pointer-events:none;
}
.avatar-glow {
  width:120px; height:120px; border-radius:50%;
  border:3px solid var(--green-light); padding:3px;
  margin-bottom:20px; position:relative; z-index:1; cursor:pointer;
}
.avatar-glow img { width:100%; height:100%; border-radius:50%; object-fit:cover; }
.avatar-glow .edit-badge {
  position:absolute; bottom:4px; right:4px;
  background:var(--green-dark); color:#fff;
  width:28px; height:28px; border-radius:50%;
  display:flex; justify-content:center; align-items:center;
  font-size:13px; border:2px solid #fff;
}
.profile-hero h2 { font-size:24px; margin-bottom:6px; position:relative; z-index:1; }
.location {
  font-size:13px; color:var(--text-dark); font-weight:500;
  position:relative; z-index:1; display:flex; align-items:center; gap:5px;
}

.settings-section { margin-bottom:32px; }
.settings-header {
  display:flex; align-items:center; gap:8px;
  font-size:16px; font-weight:700; color:var(--green-dark); margin-bottom:16px;
}
.settings-list { display:flex; flex-direction:column; gap:10px; }
.set-item {
  background:var(--bg-card); padding:14px 18px; border-radius:14px;
  display:flex; align-items:center; gap:14px;
  box-shadow:var(--shadow-card); cursor:pointer; transition:var(--transition);
}
.set-item:active { transform:scale(0.98); }
.set-icon {
  width:40px; height:40px; border-radius:50%;
  background:var(--border-light); color:var(--green-dark);
  display:flex; justify-content:center; align-items:center; font-size:18px;
}
.set-text { flex:1; }
.set-text strong { display:block; font-size:14px; color:var(--text-dark); margin-bottom:3px; }
.set-text p { font-size:11px; color:var(--text-gray); }
.set-arrow { color:var(--text-light); font-size:14px; }

.btn-logout {
  width:100%; background:var(--bg-main); border-radius:100px; padding:16px;
  font-size:14px; font-weight:700; color:var(--red-main);
  display:flex; justify-content:center; align-items:center; gap:8px;
}

/* ═══════════════════════════════════
   MODAL
═══════════════════════════════════ */
.modal-overlay {
  position:fixed; inset:0; background:rgba(0,0,0,0.5);
  backdrop-filter:blur(6px); z-index:11000;
  display:none; justify-content:center; align-items:flex-end;
}
.modal-overlay.active { display:flex; animation:fadein 0.3s; }
.modal-content {
  background:var(--bg-card); width:100%; max-height:90vh;
  border-radius:28px 28px 0 0;
  padding:28px 22px; animation:slideup 0.4s cubic-bezier(0.16,1,0.3,1);
  overflow-y:auto;
}
@keyframes slideup { from{transform:translateY(100%);} to{transform:translateY(0);} }
.modal-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:20px; }
.modal-header h3 { font-size:18px; color:var(--text-dark); }
.btn-close {
  font-size:22px; color:var(--text-gray);
  background:var(--border-light); width:36px; height:36px; border-radius:50%;
  display:flex; justify-content:center; align-items:center;
}

.form-group { margin-bottom:18px; }
.form-group label {
  display:block; font-size:10px; font-weight:700; color:var(--text-gray);
  margin-bottom:6px; text-transform:uppercase; letter-spacing:0.5px;
}
.form-control {
  width:100%; padding:14px; border-radius:12px; border:1px solid var(--border-light);
  font-family:'Inter'; font-size:13px; background:var(--bg-main);
  color:var(--text-dark); outline:none; transition:var(--transition);
}
.form-control:focus { border-color:var(--green-mid); background:var(--bg-card); }

.btn-save {
  width:100%; background:var(--green-dark); color:#fff; padding:16px;
  border-radius:100px; font-size:14px; font-weight:700; margin-top:8px;
  display:flex; justify-content:center; align-items:center; gap:8px;
  transition:var(--transition); box-shadow:0 6px 20px rgba(15,79,52,0.25);
}
.btn-save:active { transform:scale(0.98); }

/* ═══════════════════════════════════
   LOADING OVERLAY
═══════════════════════════════════ */
#full-loading {
  display:none; position:fixed; inset:0;
  background:var(--bg-main); z-index:9999;
  flex-direction:column; justify-content:center; align-items:center; gap:16px;
}
@keyframes spin { 100% { transform:rotate(360deg); } }

/* ═══════════════════════════════════
   SENSOR FULL PANEL (sensör + bitki + eşik)
═══════════════════════════════════ */
.sensor-full-panel {
  display:flex; flex-direction:column; gap:0;
  background:var(--bg-card);
  border-radius:var(--radius-lg);
  box-shadow:var(--shadow-card);
  overflow:hidden;
  margin-bottom:12px;
  transition:var(--transition);
}
.sensor-full-panel:hover { box-shadow:var(--shadow-hover); }

.sensor-full-panel .sensor-card {
  box-shadow:none; border-radius:0;
  border-bottom:1px solid var(--border-light);
}

/* ── Plant Chip (sensör altında tıklanabilir bitki seçici) ── */
.sensor-plant-chip {
  display:flex; align-items:center; gap:10px;
  padding:10px 18px;
  cursor:pointer;
  border-bottom:1px solid var(--border-light);
  transition:var(--transition);
  font-size:12px; font-weight:700; color:var(--green-dark);
}
.sensor-plant-chip:hover { background:var(--green-light); }
.sensor-plant-chip i:first-child { font-size:18px; color:var(--green-accent); }
.sensor-plant-chip span { flex:1; }
.sensor-plant-chip i:last-child { font-size:12px; color:var(--text-light); }

/* ── Per-Sensor Threshold Section ── */
.sensor-threshold-section {
  padding:10px 18px 14px;
  background:var(--bg-main);
}
.sensor-threshold-section .threshold-title {
  font-size:9px; font-weight:700; color:var(--text-light);
  text-transform:uppercase; letter-spacing:0.8px; margin-bottom:10px;
}
.sensor-threshold-section .threshold-row {
  display:flex; align-items:center; gap:10px; margin-bottom:8px;
}
.sensor-threshold-section .threshold-row:last-child { margin-bottom:0; }
.sensor-threshold-section .threshold-row label {
  font-size:10px; font-weight:700; color:var(--text-gray);
  width:36px; flex-shrink:0;
}
.sensor-threshold-section .threshold-row input[type=range] {
  flex:1; accent-color:var(--green-dark); height:5px; border-radius:10px;
  -webkit-appearance:none; appearance:none; background:#ddd; outline:none;
}
.sensor-threshold-section .threshold-row input[type=range]::-webkit-slider-thumb {
  -webkit-appearance:none; width:18px; height:18px;
  border-radius:50%; background:var(--green-dark);
  border:3px solid #fff; box-shadow:0 1px 4px rgba(0,0,0,0.2);
  cursor:pointer;
}

/* ═══════════════════════════════════
   NOTIFICATION ITEMS
═══════════════════════════════════ */
.notif-empty {
  text-align:center; padding:30px 0; color:var(--text-light);
  display:flex; flex-direction:column; align-items:center; gap:8px;
}
.notif-empty i { font-size:32px; }
.notif-empty span { font-size:12px; }

.notif-item {
  display:flex; align-items:flex-start; gap:12px;
  padding:12px 0;
  border-bottom:1px solid var(--border-light);
  transition:var(--transition);
}
.notif-item:last-child { border-bottom:none; }
.notif-item.notif-read { opacity:0.5; }

.notif-icon {
  width:36px; height:36px; border-radius:50%;
  background:var(--bg-main);
  display:flex; justify-content:center; align-items:center;
  font-size:16px; flex-shrink:0;
}
.notif-body { flex:1; min-width:0; }
.notif-body strong {
  display:block; font-size:12px; color:var(--text-dark);
  margin-bottom:3px; line-height:1.3;
}
.notif-body p {
  font-size:11px; color:var(--text-gray); line-height:1.4;
  margin-bottom:4px;
}
.notif-time {
  font-size:9px; font-weight:700; color:var(--text-light);
  text-transform:uppercase;
}

/* ═══════════════════════════════════
   VALVE & SENSOR MAPPING (Dinamik Eşleşme)
═══════════════════════════════════ */
.linked-sensors-config {
  margin-bottom: 20px;
  padding: 12px;
  background: var(--bg-main);
  border-radius: var(--radius-sm);
}

.linked-sensors-config .config-title {
  font-size: 10px;
  font-weight: 700;
  color: var(--text-gray);
  text-transform: uppercase;
  margin-bottom: 8px;
  letter-spacing: 0.5px;
}

.sensor-selectors {
  display: flex;
  gap: 8px;
  flex-wrap: wrap;
}

.sensor-chip-checkbox {
  display: flex;
  align-items: center;
  gap: 6px;
  background: #fff;
  padding: 6px 12px;
  border-radius: 100px;
  border: 2px solid var(--border-light);
  cursor: pointer;
  transition: var(--transition);
  user-select: none;
}

.sensor-chip-checkbox input[type="checkbox"] {
  display: none;
}

.sensor-chip-checkbox span {
  font-size: 12px;
  font-weight: 700;
  color: var(--text-dark);
}

.sensor-chip-checkbox span small {
  font-size: 9px;
  color: var(--text-light);
  font-weight: 500;
  margin-left: 2px;
}

.sensor-chip-checkbox:has(input:checked) {
  border-color: var(--green-dark);
  background: var(--green-light);
}

.sensor-chip-checkbox:has(input:checked) span {
  color: var(--green-dark);
}

.sensor-chip-checkbox:has(input:checked) span small {
  color: var(--green-accent);
}

.sensor-chip-checkbox:active {
  transform: scale(0.95);
}

/* ═══════════════════════════════════
   RESPONSIVE TOUCHES
═══════════════════════════════════ */
@media (min-width:480px) {
  .container { max-width:420px; margin:0 auto; }
}
/* ═══════════════════════════════════
   LOGIN OVERLAY (SaaS v3)
═══════════════════════════════════ */
.login-overlay {
  position:fixed; inset:0;
  background: linear-gradient(135deg, #0f4f34 0%, #2c6e49 50%, #082d1e 100%);
  z-index:10000;
  display:none; flex-direction:column; justify-content:center; align-items:center;
  padding:24px;
  overflow: hidden;
}
.login-overlay::before {
  content: ''; position: absolute; top: -10%; left: -10%; width: 50%; height: 50%;
  background: radial-gradient(circle, rgba(180,240,207,0.15) 0%, transparent 70%);
  filter: blur(60px); animation: drift 20s infinite alternate;
}
.login-overlay::after {
  content: ''; position: absolute; bottom: -10%; right: -10%; width: 60%; height: 60%;
  background: radial-gradient(circle, rgba(41,128,185,0.1) 0%, transparent 70%);
  filter: blur(80px); animation: drift 25s infinite alternate-reverse;
}
@keyframes drift { from { transform: translate(0,0); } to { transform: translate(100px, 100px); } }

.login-overlay.active { display:flex; }

.login-box {
  width:100%; max-width:420px;
  background: rgba(255, 255, 255, 0.98);
  backdrop-filter: blur(20px);
  padding:48px 36px;
  border-radius:32px;
  box-shadow: 0 25px 60px rgba(0,0,0,0.3);
  position: relative; z-index: 2;
  animation: slideup 0.6s cubic-bezier(0.2, 0.8, 0.2, 1);
}
@keyframes slideup { from { opacity: 0; transform: translateY(30px); } to { opacity: 1; transform: translateY(0); } }

.login-header { text-align:center; margin-bottom:20px; }
.login-logo-img { 
    height:220px; 
    width:auto; 
    margin-bottom:5px;
    filter: drop-shadow(0 15px 30px rgba(15,79,52,0.15));
}
.login-header p { font-size:14px; color:var(--text-gray); font-weight: 500; }

.login-form .form-group { margin-bottom:28px; }
.login-form label { 
    display: block; font-size: 11px; font-weight: 800; color: var(--text-gray); 
    margin-bottom: 10px; letter-spacing: 1px;
}

.input-with-icon { position:relative; display:flex; align-items:center; }
.input-with-icon i { position:absolute; left:18px; font-size:20px; color:var(--text-light); transition: var(--transition); }
.input-with-icon input {
  width: 100%;
  padding-left:52px; height:60px;
  background: #f8faf9;
  border: 2px solid #f0f2f1;
  border-radius: 18px;
  font-size: 15px; font-weight: 600; color: var(--text-dark);
  transition: var(--transition);
}
.input-with-icon input:focus {
    border-color: var(--green-mid);
    background: #fff;
    box-shadow: 0 0 0 4px rgba(148, 227, 189, 0.2);
}
.input-with-icon input:focus + i { color: var(--green-dark); }

.btn-eye-toggle {
    position: absolute !important;
    left: auto !important;
    right: 18px !important;
    cursor: pointer;
    z-index: 10;
    color: var(--text-light);
    transition: var(--transition);
}
.btn-eye-toggle:hover { color: var(--green-dark) !important; }

.btn-login-submit {
  width:100%; height:60px;
  background: linear-gradient(135deg, #0f4f34, #2c6e49);
  color:#fff;
  border-radius:18px; font-size:16px; font-weight:800;
  display:flex; justify-content:center; align-items:center; gap:12px;
  box-shadow:0 12px 30px rgba(15,79,52,0.3);
  transition:var(--transition);
  margin-top: 10px;
}
.btn-login-submit i { font-size: 20px; }
.btn-login-submit:active { transform:scale(0.96); box-shadow: 0 4px 15px rgba(15,79,52,0.2); }

.login-footer {
  text-align:center; margin-top:40px;
  font-size:10px; font-weight:700; color:var(--text-light);
  text-transform:uppercase; letter-spacing:2px; opacity: 0.6;
}

/* ═══════════════════════════════════
   ADMIN PANEL STYLES
═══════════════════════════════════ */
.admin-section {
  background:var(--bg-card);
  border-radius:24px;
  padding:20px;
  box-shadow:var(--shadow-card);
}

.user-item {
  display:flex; align-items:center; gap:12px;
  padding:14px 10px;
  border-bottom:1px solid var(--border-light);
}
.user-item:last-child { border-bottom:none; }

.user-avatar-circle {
  width:40px; height:40px; border-radius:50%;
  background:var(--green-light); color:var(--green-dark);
  display:flex; justify-content:center; align-items:center; font-size:16px; font-weight:700;
}

.user-info { flex:1; }
.user-info .username { display:block; font-size:13px; font-weight:700; color:var(--text-dark); }
.user-info .farm { font-size:10px; color:var(--text-gray); }

.user-device-pill {
  background:var(--blue-light); color:var(--blue-main);
  padding:4px 8px; border-radius:6px; font-size:9px; font-weight:700;
}

.btn-add-user:active { transform:scale(0.95); }

/* App Loading Spinner */
.app-loading {
  position:fixed; inset:0;
  background:rgba(244,246,248,0.8);
  backdrop-filter:blur(4px);
  z-index:20000;
  display:flex; justify-content:center; align-items:center;
}
.spinner {
  width:40px; height:40px;
  border:4px solid var(--green-light);
  border-top-color:var(--green-dark);
  border-radius:50%;
  animation:spin 1s linear infinite;
}

/* ═══════════════════════════════════
   PULL TO REFRESH (Native Mobile Feel)
═══════════════════════════════════ */
#pull-refresh-indicator {
    position: fixed;
    top: -60px;
    left: 0;
    width: 100%;
    height: 60px;
    display: flex;
    justify-content: center;
    align-items: center;
    background: transparent;
    color: var(--green-dark);
    font-size: 24px;
    z-index: 10000;
    pointer-events: none;
    transition: transform 0.1s linear;
}
#pull-refresh-indicator i {
    background: #fff;
    padding: 10px;
    border-radius: 50%;
    box-shadow: 0 4px 15px rgba(0,0,0,0.2);
    display: flex;
    justify-content: center;
    align-items: center;
}
.pull-spinning i {
    animation: spin 0.8s linear infinite;
}

/* iOS Bounce Control */
html, body {
    overscroll-behavior-y: contain;
}

/* --- PROFESSIONAL TOAST SYSTEM (v8.2) --- */
#toast-container {
    position: fixed;
    top: 20px;
    right: 20px;
    z-index: 10000;
    display: flex;
    flex-direction: column;
    gap: 10px;
    pointer-events: none;
    max-width: 320px;
    width: calc(100% - 40px);
}

@media (max-width: 768px) {
    #toast-container {
        top: 10px;
        right: 10px;
        left: 10px;
        width: auto;
    }
}

.toast-item {
    pointer-events: auto;
    background: rgba(255, 255, 255, 0.98);
    backdrop-filter: blur(10px);
    border-radius: 12px;
    padding: 12px 16px;
    box-shadow: 0 10px 30px rgba(0,0,0,0.1);
    display: flex;
    align-items: center;
    gap: 12px;
    animation: toastSlideIn 0.3s cubic-bezier(0.18, 0.89, 0.32, 1.28);
    border-left: 5px solid #3498db;
    color: #2c3e50;
    font-size: 13px;
    font-weight: 600;
}

.toast-item.danger { border-left-color: #e74c3c; }
.toast-item.warning { border-left-color: #f1c40f; }
.toast-item.success { border-left-color: #2ecc71; }

@keyframes toastSlideIn {
    from { transform: translateY(-20px) scale(0.9); opacity: 0; }
    to { transform: translateY(0) scale(1); opacity: 1; }
}

.toast-item.fade-out {
    animation: toastFadeOut 0.3s forwards;
}

@keyframes toastFadeOut {
    to { transform: translateY(-20px) scale(0.9); opacity: 0; }
}
