/* === GLOBAL FONT === */ @import url('https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700&display=swap'); /* === BODY GLOBAL === */ body { font-family: 'Outfit', sans-serif; background: #111827; display: flex; justify-content: center; align-items: flex-start; min-height: 100vh; overflow-x: hidden; margin: 0; } /* === FRAME UTAMA (semua halaman) === */ .mobile-frame { width: 100%; max-width: 430px; min-height: 100vh; background: linear-gradient(135deg, #1e3a8a 0%, #3730a3 100%); box-shadow: 0 0 25px rgba(0, 0, 0, 0.35); overflow: hidden; padding: 16px; box-sizing: border-box; } /* === LOGO BANK (global) === */ .bank-logo { background: #fff; border-radius: 12px; display: flex; justify-content: center; align-items: center; overflow: hidden; box-shadow: 0 0 8px rgba(0, 0, 0, 0.25); } .bank-logo img { width: 40px; height: 40px; object-fit: contain; padding: 6px; } /* Ukuran logo per halaman (opsional class tambahan) */ .bank-logo.sm { width: 40px; height: 40px; } .bank-logo.md { width: 46px; height: 46px; } .bank-logo.lg { width: 70px; height: 70px; } /* === DASHBOARD CARD === */ .dashboard-card, .login-card { background: #fff; border-radius: 10px; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15); padding: 1rem; width: 100%; margin-bottom: 1rem; } /* === HEADER === */ .header-flex { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; margin-bottom: 1.25rem; } .header-right p { margin: 0; line-height: 1.25; } .header-right p:first-child { font-weight: 700; color: #fff; font-size: clamp(1rem, 2.8vw, 1.2rem); white-space: nowrap; } .header-right p:last-child { color: #c7d2fe; font-size: clamp(.8rem, 2vw, .9rem); margin-top: 2px; } /* === CAMERA PREVIEW (rekam.php) === */ .camera-preview { width: 100%; height: 250px; background: #f3f4f6; border-radius: 10px; display: flex; flex-direction: column; align-items: center; justify-content: center; border: 2px dashed #d1d5db; overflow: hidden; } .camera-preview img { width: 100%; height: 100%; object-fit: cover; } /* === STATUS CARD === */ .status-card { transition: all 0.3s ease; padding: 0.6rem; border-radius: 8px; } .status-card.active { background-color: rgb(185, 231, 216); color: #fff; border-color: rgb(179, 224, 209); } /* === PRESENSI BUTTONS (rekam.php only) === */ .presensi-btn { min-height: 80px; touch-action: manipulation; -webkit-tap-highlight-color: transparent; } .presensi-btn:active { transform: scale(0.95); } .presensi-btn:disabled { opacity: 0.6; transform: none; } /* === ACTION BUTTONS (dashboard.php) === */ .action-btn { transition: all 0.3s ease; } .action-btn:hover { transform: translateY(-2px); } /* === RESPONSIVE === */ @media (max-width: 430px) { .mobile-frame { padding: 12px; } .bank-logo.md { width: 42px; height: 42px; } .header-right p:first-child { font-size: clamp(.95rem, 3.5vw, 1.1rem); } .header-right p:last-child { font-size: clamp(.75rem, 3vw, .85rem); } /* Mobile presensi buttons - tetap 3 kolom tapi lebih kecil (rekam.php only) */ .presensi-btn { min-height: 60px; padding: 8px 4px; } .presensi-btn i { font-size: 1.2rem; margin-bottom: 4px; } .presensi-btn span { font-size: 0.7rem; line-height: 1.1; } .presensi-btn span:last-child { font-size: 0.6rem; margin-top: 2px; } } @media (max-width: 375px) { .presensi-btn { min-height: 55px; padding: 6px 2px; } .presensi-btn i { font-size: 1rem; margin-bottom: 3px; } .presensi-btn span { font-size: 0.65rem; } .presensi-btn span:last-child { font-size: 0.55rem; } } @media (min-width: 768px) { .mobile-frame { border-radius: 0; margin: 0 auto; } }