html, body {
  width: 100%;
  max-width: 100%;
  overflow-x: hidden;
}
.app {
  width: 100%;
  max-width: 100%;
}

.controls {
  display: flex;
  flex-wrap: wrap;   /* biar auto turun kalau kepanjangan */
  gap: 12px;
  width: 100%;
  box-sizing: border-box;
}


:root {
  --bg:#0f1724;
  --card:#0b1220;
  --muted:#9aa8b2;
  --accent:#7c5cff;
  --accent-2:#4dd2ff;
  --success:#3ddc97;
  --danger:#ff6b6b;
  --glass: rgba(255,255,255,0.03);
}

body.pink {
  --bg:#fff0f6;
  --card:#ffe6f0;
  --muted:#b85c8a;
  --accent:#ff4da6;
  --accent-2:#ff80bf;
  --success:#ff99cc;
  --danger:#ff3366;
  --glass: rgba(255,192,203,0.2);
  background:linear-gradient(180deg,#fff0f6 0%, #ffe6f0 50%, #ffd6eb 100%);
  color:#4a0033;
}

/* Tombol toggle */
.theme-toggle {
  width: 60px;
  height: 32px;
  border-radius: 999px;
  background: var(--glass);
  border: 1px solid rgba(255,255,255,0.1);
  display: flex;
  align-items: center;
  justify-content: flex-start;
  padding: 4px;
  cursor: pointer;
  transition: background 0.3s ease, border-color 0.3s ease;
  margin-left: auto; /* biar nempel kanan */
}

.theme-toggle .icon {
  width: 24px;
  height: 24px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--accent);
  border-radius: 50%;
  font-size: 14px;
  color: #fff;
  transition: transform 0.3s ease;
}

/* kondisi pink aktif */
body.pink .theme-toggle {
  background: rgba(255,192,203,0.4);
  border-color: rgba(255,105,180,0.6);
}
body.pink .theme-toggle .icon {
  transform: translateX(28px) rotate(360deg);
  background: var(--accent);
}

/* transisi smooth antar theme */
body, .app, .task, .filters .filter, .add input, .add select, .add button {
  transition: background 0.4s ease, color 0.4s ease, border 0.4s ease, box-shadow 0.4s ease;
}


*{box-sizing:border-box}
html,body{height:100%;margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,'Helvetica Neue',Arial}
body{background:linear-gradient(180deg,#081124 0%, #071022 50%, #041018 100%);color:#e6eef6;display:flex;align-items:center;justify-content:center;padding:32px}
.app{width:100%;max-width:920px;background:linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));border-radius:16px;padding:20px;box-shadow:0 10px 30px rgba(2,6,23,0.7);border:1px solid rgba(255,255,255,0.03)}
.app-header{display:flex;align-items:flex-start;gap:12px}
.app-header h1{margin:0;font-size:1.5rem;letter-spacing:0.6px}
.app-header .sub{margin:0;color:var(--muted);font-size:0.9rem}
.controls{display:flex;justify-content:space-between;align-items:center;margin-top:16px;gap:12px}
.add{display:flex;gap:8px;align-items:center}
.add input{background:var(--glass);border:1px solid rgba(255,255,255,0.04);padding:10px 12px;border-radius:10px;color:inherit;min-width:280px}
.add select{background:transparent;border:1px solid rgba(255,255,255,0.04);padding:8px;border-radius:8px;color:inherit}
.add button{background:linear-gradient(90deg,var(--accent),var(--accent-2));border:none;padding:10px 14px;border-radius:10px;color:#041018;font-weight:600;cursor:pointer}
.filters{display:flex;gap:8px}
.filters .filter{background:transparent;border:1px solid rgba(255,255,255,0.03);padding:8px 12px;border-radius:999px;color:var(--muted);cursor:pointer}
.filters .filter.active{background:rgba(124,92,255,0.12);color:var(--accent);border-color:rgba(124,92,255,0.22)}
.task-area{margin-top:18px}
.task-list{list-style:none;padding:8px;margin:0;display:flex;flex-direction:column;gap:8px}
.task{display:flex;justify-content:space-between;align-items:center;padding:12px;border-radius:12px;background:linear-gradient(180deg, rgba(255,255,255,0.01), rgba(255,255,255,0.02));border:1px solid rgba(255,255,255,0.03);transition:transform .16s ease, box-shadow .16s ease}
.task.dragging{opacity:0.6;transform:scale(.995);box-shadow:0 8px 30px rgba(0,0,0,0.6)}
.task-left{display:flex;gap:12px;align-items:center}
.status-btn{width:36px;height:36px;border-radius:10px;border:none;background:linear-gradient(180deg, rgba(255,255,255,0.02), rgba(255,255,255,0.01));cursor:pointer}
.task-title{font-weight:600}
.task-meta{font-size:0.8rem;color:var(--muted)}
.task-right{display:flex;gap:8px;align-items:center}
.status-select{padding:6px;border-radius:8px;border:1px solid rgba(255,255,255,0.03);background:transparent;color:inherit}
.delete-btn{border:none;background:transparent;color:var(--danger);font-size:1.05rem;cursor:pointer}
.no-tasks{padding:24px;text-align:center;color:var(--muted)}
.app-footer{text-align:center;margin-top:14px;color:var(--muted);font-size:0.85rem}

/* status visuals */
.task[data-status="todo"] .status-btn{background:linear-gradient(180deg,var(--glass),rgba(255,255,255,0.02));}
.task[data-status="inprogress"] .status-btn{background:linear-gradient(90deg,var(--accent-2),var(--accent));}
.task[data-status="done"] .status-btn{background:linear-gradient(90deg,var(--success),rgba(61,220,151,0.2));}

.task-meta {
  font-size: 0.75rem;
  color: var(--muted);
  margin-top: 2px;
}


/* responsive */
@media (max-width:640px){
.add input{min-width:140px}
.app{padding:14px}
}

@media (max-width: 640px) {
  .controls {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }

  .add {
    flex-direction: column;
    width: 100%;
    gap: 8px;
  }

  .add input,
  .add select,
  .add button {
    width: 100%;
  }

  .filters {
    flex-wrap: wrap;
    justify-content: center;
  }

  .task {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }

  .task-right {
    align-self: flex-end;
  }
}

/* Biar body & app ngikutin layar HP */
body, .app {
  max-width: 100%;
  overflow-x: hidden;
}

/* Controls stack di HP */
@media (max-width: 640px) {
  .controls {
    flex-direction: column;
    align-items: stretch;
    gap: 12px;
  }

  .add {
    flex-direction: column;
    width: 100%;
    gap: 8px;
  }

  .add input,
  .add select,
  .add button {
    width: 100%;
  }

  .filters {
    flex-wrap: wrap;
    justify-content: center;
  }

  .task {
    flex-direction: column;
    align-items: flex-start;
    gap: 10px;
  }

  .task-right {
    align-self: flex-end;
  }
}
