/* ===== css/style.css ===== */
:root {
    --bg-primary: #0a1628;
    --bg-secondary: #111f33;
    --bg-card: #162a44;
    --bg-input: #0d1b30;
    --text-primary: #f0f6ff;
    --text-secondary: #8aa3c9;
    --text-muted: #5a7a9e;
    --border-color: #1e3454;
    --shadow: 0 8px 32px rgba(0,0,0,0.6);
    --radius: 16px;
    --radius-sm: 10px;
    --blue: #2b7be4;
    --green: #22c55e;
    --red: #ef4444;
    --orange: #f59e0b;
    --purple: #8b5cf6;
    --gray: #4b6a8f;
}
* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
body {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    background: var(--bg-primary);
    color: var(--text-primary);
    min-height: 100vh;
    min-height: 100dvh;
    padding-bottom: 80px;
    overflow-x: hidden;
    transition: background 0.3s;
}
::-webkit-scrollbar { width:4px; height:4px; }
::-webkit-scrollbar-track { background: var(--bg-secondary); }
::-webkit-scrollbar-thumb { background: var(--blue); border-radius:8px; }

.app-shell { max-width:480px; margin:0 auto; padding:16px 16px 100px; }

/* Header */
.app-header {
    display:flex; align-items:center; justify-content:space-between;
    padding:12px 0 16px; border-bottom:1px solid var(--border-color);
    margin-bottom:20px; position:sticky; top:0;
    background:var(--bg-primary); z-index:50;
    backdrop-filter:blur(12px); -webkit-backdrop-filter:blur(12px);
}
.logo { display:flex; align-items:center; gap:10px; font-weight:700; font-size:1.2rem; }
.logo i { color:var(--blue); font-size:1.6rem; }
.logo span { background:linear-gradient(135deg,#60a5fa,#22c55e); -webkit-background-clip:text; -webkit-text-fill-color:transparent; }
.header-actions { display:flex; gap:12px; align-items:center; }
.header-actions button {
    background:none; border:none; color:var(--text-secondary); font-size:1.3rem;
    cursor:pointer; padding:6px; border-radius:50%; transition:background 0.2s;
    width:40px; height:40px; display:flex; align-items:center; justify-content:center;
}
.header-actions button:hover { background:var(--bg-card); color:var(--text-primary); }

/* Bottom Nav */
.bottom-nav {
    position:fixed; bottom:0; left:0; right:0;
    background:var(--bg-secondary); border-top:1px solid var(--border-color);
    display:flex; justify-content:space-around; padding:8px 0 env(safe-area-inset-bottom,8px);
    z-index:100; backdrop-filter:blur(16px); -webkit-backdrop-filter:blur(16px);
    max-width:480px; margin:0 auto;
}
.bottom-nav button {
    background:none; border:none; color:var(--text-muted); font-size:0.65rem;
    display:flex; flex-direction:column; align-items:center; gap:2px;
    padding:4px 12px; cursor:pointer; transition:color 0.2s;
    border-radius:12px; min-width:56px;
}
.bottom-nav button i { font-size:1.4rem; transition:transform 0.2s; }
.bottom-nav button.active { color:var(--blue); }
.bottom-nav button.active i { transform:scale(1.1); }
.bottom-nav button:active { transform:scale(0.92); }

/* Screens */
.screen { display:none; animation:fadeSlide 0.3s ease; }
.screen.active { display:block; }
@keyframes fadeSlide { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:translateY(0); } }

/* Cards */
.card {
    background:var(--bg-card); border-radius:var(--radius); padding:16px 18px;
    margin-bottom:14px; box-shadow:var(--shadow); border:1px solid var(--border-color);
    transition:all 0.2s;
}
.card:active { transform:scale(0.99); }
.card-header {
    display:flex; justify-content:space-between; align-items:center;
    margin-bottom:10px; font-weight:600;
}
.card-header .title { font-size:0.9rem; color:var(--text-secondary); text-transform:uppercase; letter-spacing:0.5px; }
.card-header .action { color:var(--blue); font-size:0.8rem; cursor:pointer; background:none; border:none; font-weight:600; }

/* Stats Grid */
.stats-grid {
    display:grid; grid-template-columns:repeat(auto-fill,minmax(120px,1fr));
    gap:10px; margin-bottom:18px;
}
.stat-card {
    background:var(--bg-card); border-radius:var(--radius-sm); padding:14px 12px;
    text-align:center; border:1px solid var(--border-color); transition:all 0.2s;
}
.stat-card .stat-number { font-size:1.6rem; font-weight:700; line-height:1.2; }
.stat-card .stat-label { font-size:0.65rem; color:var(--text-secondary); text-transform:uppercase; letter-spacing:0.3px; margin-top:2px; }
.stat-card .stat-icon { font-size:1.2rem; opacity:0.6; margin-bottom:4px; }
.stat-card.blue .stat-number { color:var(--blue); }
.stat-card.green .stat-number { color:var(--green); }
.stat-card.red .stat-number { color:var(--red); }
.stat-card.orange .stat-number { color:var(--orange); }
.stat-card.purple .stat-number { color:var(--purple); }

/* Charts */
.chart-container {
    background:var(--bg-card); border-radius:var(--radius); padding:16px;
    border:1px solid var(--border-color); margin-bottom:16px; position:relative; height:200px;
}
.chart-container canvas { width:100% !important; height:100% !important; }

/* Delivery Cards */
.delivery-card {
    background:var(--bg-card); border-radius:var(--radius); padding:16px;
    margin-bottom:12px; border-left:4px solid var(--gray);
    border:1px solid var(--border-color); transition:all 0.2s; cursor:pointer;
}
.delivery-card:active { transform:scale(0.99); }
.delivery-card .top-row { display:flex; justify-content:space-between; align-items:flex-start; gap:8px; flex-wrap:wrap; }
.delivery-card .customer-name { font-weight:600; font-size:1.05rem; }
.delivery-card .tracking { font-size:0.7rem; color:var(--text-muted); font-family:monospace; letter-spacing:0.5px; }
.delivery-card .status-badge {
    font-size:0.6rem; padding:4px 10px; border-radius:20px; font-weight:600;
    text-transform:uppercase; letter-spacing:0.3px; white-space:nowrap;
}
.delivery-card .details { margin-top:8px; font-size:0.8rem; color:var(--text-secondary); display:flex; flex-wrap:wrap; gap:12px 16px; }
.delivery-card .details i { width:16px; margin-right:4px; color:var(--text-muted); }
.delivery-card .actions-row { margin-top:12px; display:flex; flex-wrap:wrap; gap:6px; }
.delivery-card .actions-row button {
    padding:5px 12px; border-radius:20px; border:none; font-size:0.7rem; font-weight:600;
    cursor:pointer; transition:all 0.2s; display:flex; align-items:center; gap:4px;
    background:var(--bg-input); color:var(--text-secondary);
}
.delivery-card .actions-row button:active { transform:scale(0.94); }
.delivery-card .actions-row button.deliver { background:var(--green); color:#fff; }
.delivery-card .actions-row button.fail { background:var(--red); color:#fff; }
.delivery-card .actions-row button.reschedule { background:var(--orange); color:#fff; }
.delivery-card .actions-row button.out { background:var(--blue); color:#fff; }

/* Status colors */
.status-pending { border-left-color:var(--gray); }
.status-pending .status-badge { background:var(--gray); color:#fff; }
.status-out { border-left-color:var(--blue); }
.status-out .status-badge { background:var(--blue); color:#fff; }
.status-delivered { border-left-color:var(--green); }
.status-delivered .status-badge { background:var(--green); color:#fff; }
.status-failed { border-left-color:var(--red); }
.status-failed .status-badge { background:var(--red); color:#fff; }
.status-rescheduled { border-left-color:var(--orange); }
.status-rescheduled .status-badge { background:var(--orange); color:#fff; }
.status-returned { border-left-color:var(--purple); }
.status-returned .status-badge { background:var(--purple); color:#fff; }

/* Forms */
.form-group { margin-bottom:14px; }
.form-group label { display:block; font-size:0.75rem; font-weight:600; color:var(--text-secondary); margin-bottom:4px; text-transform:uppercase; letter-spacing:0.3px; }
.form-group input, .form-group select, .form-group textarea {
    width:100%; padding:12px 14px; border-radius:var(--radius-sm);
    border:1px solid var(--border-color); background:var(--bg-input);
    color:var(--text-primary); font-size:0.95rem; transition:border 0.2s; font-family:inherit;
}
.form-group input:focus, .form-group select:focus, .form-group textarea:focus {
    outline:none; border-color:var(--blue); box-shadow:0 0 0 3px rgba(43,123,228,0.25);
}
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:12px; }

/* Buttons */
.btn {
    padding:12px 24px; border:none; border-radius:var(--radius-sm); font-weight:600;
    font-size:0.9rem; cursor:pointer; transition:all 0.2s;
    display:inline-flex; align-items:center; justify-content:center; gap:8px;
    width:100%; background:var(--bg-input); color:var(--text-secondary);
}
.btn:active { transform:scale(0.97); }
.btn-primary { background:var(--blue); color:#fff; }
.btn-primary:hover { background:#1a5bb5; }
.btn-success { background:var(--green); color:#fff; }
.btn-success:hover { background:#16a34a; }
.btn-danger { background:var(--red); color:#fff; }
.btn-danger:hover { background:#b91c1c; }
.btn-warning { background:var(--orange); color:#fff; }
.btn-warning:hover { background:#d97706; }
.btn-outline { background:transparent; border:1px solid var(--border-color); color:var(--text-secondary); }
.btn-outline:hover { background:var(--bg-card); }
.btn-sm { padding:6px 14px; font-size:0.75rem; width:auto; }

/* Modal */
.modal-overlay {
    position:fixed; inset:0; background:rgba(0,0,0,0.7); backdrop-filter:blur(8px);
    -webkit-backdrop-filter:blur(8px); z-index:200;
    display:none; align-items:flex-end; justify-content:center;
    animation:fadeIn 0.25s ease;
}
.modal-overlay.active { display:flex; }
.modal-content {
    background:var(--bg-secondary); border-radius:var(--radius) var(--radius) 0 0;
    max-width:480px; width:100%; max-height:90vh; overflow-y:auto;
    padding:20px 20px 30px; animation:slideUp 0.3s ease;
    border-top:1px solid var(--border-color);
}
.modal-content .modal-header {
    display:flex; justify-content:space-between; align-items:center;
    margin-bottom:16px; padding-bottom:12px; border-bottom:1px solid var(--border-color);
}
.modal-content .modal-header h2 { font-size:1.2rem; }
.modal-content .modal-header .close-btn {
    background:none; border:none; color:var(--text-secondary);
    font-size:1.4rem; cursor:pointer; padding:4px 8px;
}
@keyframes fadeIn { from { opacity:0; } to { opacity:1; } }
@keyframes slideUp { from { transform:translateY(40px); opacity:0; } to { transform:translateY(0); opacity:1; } }

/* Photo upload */
.photo-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(80px,1fr)); gap:8px; margin-top:8px; }
.photo-grid .photo-item { aspect-ratio:1; border-radius:var(--radius-sm); background:var(--bg-input); border:1px solid var(--border-color); overflow:hidden; position:relative; display:flex; align-items:center; justify-content:center; }
.photo-grid .photo-item img { width:100%; height:100%; object-fit:cover; }
.photo-grid .photo-item .remove-photo {
    position:absolute; top:2px; right:2px; background:rgba(0,0,0,0.7); border:none;
    color:#fff; border-radius:50%; width:22px; height:22px; font-size:0.6rem; cursor:pointer;
    display:flex; align-items:center; justify-content:center;
}
.photo-upload-btn {
    border:2px dashed var(--border-color); border-radius:var(--radius-sm);
    padding:20px; text-align:center; color:var(--text-muted); cursor:pointer;
    transition:all 0.2s; background:transparent; width:100%; font-size:0.85rem;
}
.photo-upload-btn:hover { border-color:var(--blue); color:var(--text-primary); }
.photo-upload-btn i { font-size:1.6rem; display:block; margin-bottom:6px; }

/* Search */
.search-bar { display:flex; gap:8px; margin-bottom:16px; }
.search-bar input { flex:1; padding:12px 16px; border-radius:var(--radius-sm); border:1px solid var(--border-color); background:var(--bg-input); color:var(--text-primary); font-size:0.95rem; }
.search-bar input:focus { outline:none; border-color:var(--blue); }
.search-bar button { padding:12px 16px; border-radius:var(--radius-sm); border:none; background:var(--blue); color:#fff; font-size:1rem; cursor:pointer; }

/* Timeline */
.timeline { padding-left:20px; border-left:2px solid var(--border-color); margin:8px 0 4px 6px; }
.timeline-item { position:relative; padding:8px 0 8px 20px; font-size:0.8rem; color:var(--text-secondary); }
.timeline-item::before {
    content:''; position:absolute; left:-26px; top:12px; width:10px; height:10px; border-radius:50%;
    background:var(--blue); border:2px solid var(--bg-primary);
}
.timeline-item .time { font-size:0.65rem; color:var(--text-muted); }
.timeline-item .event { font-weight:500; color:var(--text-primary); }

/* Calendar */
.calendar-grid {
    display:grid; grid-template-columns:repeat(7,1fr); gap:4px; text-align:center; margin:8px 0 12px;
}
.calendar-grid .day-label { font-size:0.6rem; color:var(--text-muted); text-transform:uppercase; padding:4px 0; }
.calendar-grid .day {
    padding:8px 0; border-radius:var(--radius-sm); font-size:0.8rem; cursor:pointer;
    transition:all 0.2s; background:var(--bg-input); border:1px solid transparent;
}
.calendar-grid .day.has-delivery { border-color:var(--blue); color:var(--blue); font-weight:600; }
.calendar-grid .day.today { background:var(--blue); color:#fff; }
.calendar-grid .day.other-month { color:var(--text-muted); opacity:0.4; }
.calendar-grid .day:active { transform:scale(0.92); }

/* Misc */
.empty-state { text-align:center; padding:40px 20px; color:var(--text-secondary); }
.empty-state i { font-size:3rem; opacity:0.3; margin-bottom:12px; }
.empty-state h3 { color:var(--text-primary); margin-bottom:4px; }

.badge { display:inline-block; padding:2px 10px; border-radius:20px; font-size:0.6rem; font-weight:600; text-transform:uppercase; }

.text-center { text-align:center; }
.mt-8 { margin-top:8px; }
.mt-16 { margin-top:16px; }
.mb-8 { margin-bottom:8px; }
.mb-16 { margin-bottom:16px; }
.flex { display:flex; }
.flex-between { display:flex; justify-content:space-between; align-items:center; }
.flex-center { display:flex; align-items:center; justify-content:center; }
.flex-wrap { flex-wrap:wrap; }
.w-full { width:100%; }
.gap-8 { gap:8px; }

.footer-credit { text-align:center; font-size:0.65rem; color:var(--text-muted); padding:20px 0 8px; letter-spacing:0.5px; }
.footer-credit strong { color:var(--text-secondary); }

.toast {
    position:fixed; bottom:90px; left:50%; transform:translateX(-50%);
    background:var(--bg-card); color:var(--text-primary); padding:12px 24px;
    border-radius:var(--radius-sm); border:1px solid var(--border-color);
    box-shadow:var(--shadow); font-size:0.9rem; z-index:300;
    display:none; max-width:90%; text-align:center; animation:slideUp 0.3s ease;
}
.toast.show { display:block; }
.toast.success { border-left:4px solid var(--green); }
.toast.error { border-left:4px solid var(--red); }
.toast.info { border-left:4px solid var(--blue); }

.spinner { display:inline-block; width:20px; height:20px; border:2px solid var(--border-color); border-top-color:var(--blue); border-radius:50%; animation:spin 0.7s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }

.qr-container { display:flex; justify-content:center; padding:12px 0; }
.qr-container canvas, .qr-container img { border-radius:var(--radius-sm); background:#fff; padding:8px; }

.gps-badge { font-size:0.65rem; color:var(--text-muted); display:flex; align-items:center; gap:4px; }
.gps-badge i { color:var(--green); }

@media (max-width:400px) {
    .stats-grid { grid-template-columns:repeat(3,1fr); }
    .form-row { grid-template-columns:1fr; }
}
@media (min-width:481px) {
    .app-shell { padding:24px 24px 100px; }
    .stats-grid { grid-template-columns:repeat(4,1fr); }
    .bottom-nav { border-radius:20px 20px 0 0; }
}