perbaikan
perbaikan untuk responsive di mobile di fixkan lagi
This commit is contained in:
parent
8711db9d6c
commit
ae81d50a79
|
|
@ -0,0 +1,575 @@
|
|||
@extends('layouts.app')
|
||||
|
||||
@section('content')
|
||||
|
||||
<style>
|
||||
@import url('https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');
|
||||
|
||||
* {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
body {
|
||||
background: #f1f5f9 !important;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ─── HERO HEADER ─── */
|
||||
.lap-hero {
|
||||
background: linear-gradient(135deg, #064e3b 0%, #065f46 40%, #059669 100%);
|
||||
padding: 2rem 2.5rem 2.2rem;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 1.1rem;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.lap-hero::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
right: -60px;
|
||||
top: -60px;
|
||||
width: 220px;
|
||||
height: 220px;
|
||||
border-radius: 50%;
|
||||
background: rgba(255, 255, 255, 0.05);
|
||||
}
|
||||
|
||||
.lap-hero::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
right: 80px;
|
||||
bottom: -80px;
|
||||
width: 180px;
|
||||
height: 180px;
|
||||
border-radius: 50%;
|
||||
background: rgba(255, 255, 255, 0.04);
|
||||
}
|
||||
|
||||
.hero-icon {
|
||||
width: 52px;
|
||||
height: 52px;
|
||||
background: rgba(255, 255, 255, 0.15);
|
||||
border-radius: 14px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
flex-shrink: 0;
|
||||
border: 1px solid rgba(255, 255, 255, 0.2);
|
||||
}
|
||||
|
||||
.hero-icon i {
|
||||
font-size: 1.4rem;
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.hero-text h2 {
|
||||
font-size: 1.4rem;
|
||||
font-weight: 800;
|
||||
color: #fff;
|
||||
margin: 0 0 3px;
|
||||
letter-spacing: -0.01em;
|
||||
}
|
||||
|
||||
.hero-text p {
|
||||
font-size: 0.82rem;
|
||||
color: rgba(255, 255, 255, 0.7);
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ─── PAGE BODY ─── */
|
||||
.page-body {
|
||||
width: 100%;
|
||||
padding: 2rem 2.5rem 3rem;
|
||||
}
|
||||
|
||||
/* ─── STATS ROW ─── */
|
||||
.stats-row {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(5, 1fr);
|
||||
gap: 14px;
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
.stat-card {
|
||||
background: #fff;
|
||||
border: 1px solid #e2e8f0;
|
||||
border-radius: 16px;
|
||||
padding: 1.4rem 1rem;
|
||||
text-align: center;
|
||||
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
|
||||
transition: all 0.2s ease;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.stat-card::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 0;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 3px;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(1)::before { background: #064e3b; }
|
||||
.stat-card:nth-child(2)::before { background: #dc2626; }
|
||||
.stat-card:nth-child(3)::before { background: #2563eb; }
|
||||
.stat-card:nth-child(4)::before { background: #7c3aed; }
|
||||
.stat-card:nth-child(5)::before { background: #d97706; }
|
||||
|
||||
.stat-card:hover {
|
||||
transform: translateY(-3px);
|
||||
box-shadow: 0 8px 24px rgba(0, 0, 0, 0.09);
|
||||
}
|
||||
|
||||
.stat-icon {
|
||||
width: 38px;
|
||||
height: 38px;
|
||||
border-radius: 10px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
margin: 0 auto 10px;
|
||||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(1) .stat-icon { background: #d1fae5; color: #064e3b; }
|
||||
.stat-card:nth-child(2) .stat-icon { background: #fee2e2; color: #dc2626; }
|
||||
.stat-card:nth-child(3) .stat-icon { background: #dbeafe; color: #2563eb; }
|
||||
.stat-card:nth-child(4) .stat-icon { background: #ede9fe; color: #7c3aed; }
|
||||
.stat-card:nth-child(5) .stat-icon { background: #fef3c7; color: #d97706; }
|
||||
|
||||
.stat-value {
|
||||
font-size: 1.6rem;
|
||||
font-weight: 800;
|
||||
line-height: 1.1;
|
||||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(1) .stat-value { color: #064e3b; }
|
||||
.stat-card:nth-child(2) .stat-value { color: #dc2626; }
|
||||
.stat-card:nth-child(3) .stat-value { color: #2563eb; }
|
||||
.stat-card:nth-child(4) .stat-value { color: #7c3aed; }
|
||||
.stat-card:nth-child(5) .stat-value { color: #d97706; }
|
||||
|
||||
.stat-label {
|
||||
font-size: 0.78rem;
|
||||
color: #6b7280;
|
||||
font-weight: 600;
|
||||
margin: 0;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
|
||||
/* ─── MAIN GRID ─── */
|
||||
.main-grid {
|
||||
display: grid;
|
||||
grid-template-columns: 1fr 320px;
|
||||
gap: 1.25rem;
|
||||
}
|
||||
|
||||
/* ─── CARD ─── */
|
||||
.info-card {
|
||||
background: #fff;
|
||||
border: 1px solid #e2e8f0;
|
||||
border-radius: 16px;
|
||||
overflow: hidden;
|
||||
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.04);
|
||||
}
|
||||
|
||||
.card-header {
|
||||
padding: 1rem 1.5rem;
|
||||
background: #f8fafc;
|
||||
border-bottom: 1px solid #e2e8f0;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 9px;
|
||||
}
|
||||
|
||||
.card-header i { color: #064e3b; }
|
||||
|
||||
.card-header span {
|
||||
font-size: 0.75rem;
|
||||
font-weight: 800;
|
||||
color: #374151;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.09em;
|
||||
}
|
||||
|
||||
.card-body {
|
||||
padding: 1.75rem;
|
||||
}
|
||||
|
||||
/* ─── FORM AREA ─── */
|
||||
.form-row-inline {
|
||||
display: flex;
|
||||
align-items: flex-end;
|
||||
gap: 1rem;
|
||||
margin-bottom: 1.25rem;
|
||||
}
|
||||
|
||||
.field-wrap {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.field-label {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 7px;
|
||||
font-size: 0.82rem;
|
||||
font-weight: 700;
|
||||
color: #374151;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.field-label i {
|
||||
color: #6b7280;
|
||||
font-size: 0.78rem;
|
||||
}
|
||||
|
||||
.field-select {
|
||||
width: 100%;
|
||||
padding: 0.75rem 2.5rem 0.75rem 1rem;
|
||||
border: 1.5px solid #e5e7eb;
|
||||
border-radius: 10px;
|
||||
font-size: 0.92rem;
|
||||
color: #0f172a;
|
||||
background: #fff;
|
||||
transition: all 0.2s;
|
||||
outline: none;
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
appearance: none;
|
||||
-webkit-appearance: none;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%23064e3b' d='M6 8L1 3h10z'/%3E%3C/svg%3E");
|
||||
background-repeat: no-repeat;
|
||||
background-position: right 1rem center;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.field-select:hover { border-color: #94a3b8; }
|
||||
|
||||
.field-select:focus {
|
||||
border-color: #064e3b;
|
||||
box-shadow: 0 0 0 3px rgba(6, 78, 59, 0.12);
|
||||
}
|
||||
|
||||
/* ─── CETAK BUTTON ─── */
|
||||
.btn-cetak {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 9px;
|
||||
width: 100%;
|
||||
padding: 0.85rem 1.5rem;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: linear-gradient(135deg, #064e3b, #0d6e4f);
|
||||
color: #fff;
|
||||
font-size: 0.92rem;
|
||||
font-weight: 700;
|
||||
cursor: pointer;
|
||||
transition: all 0.25s;
|
||||
box-shadow: 0 4px 14px rgba(6, 78, 59, 0.3);
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
}
|
||||
|
||||
.btn-cetak:hover {
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 22px rgba(6, 78, 59, 0.38);
|
||||
}
|
||||
|
||||
.btn-cetak:active { transform: translateY(0); }
|
||||
|
||||
/* ─── INFO STRIP ─── */
|
||||
.info-strip {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
background: #f0fdf4;
|
||||
border: 1px solid #bbf7d0;
|
||||
border-radius: 10px;
|
||||
padding: 0.85rem 1rem;
|
||||
margin-top: 1.25rem;
|
||||
}
|
||||
|
||||
.info-strip i {
|
||||
color: #064e3b;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.info-strip p {
|
||||
font-size: 0.8rem;
|
||||
color: #166534;
|
||||
margin: 0;
|
||||
font-weight: 500;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* ─── RINGKASAN KANAN ─── */
|
||||
.ringkasan-list {
|
||||
list-style: none;
|
||||
padding: 0;
|
||||
margin: 0;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.ringkasan-list li {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
font-size: 0.875rem;
|
||||
color: #374151;
|
||||
font-weight: 600;
|
||||
padding: 0.65rem 0.85rem;
|
||||
border-radius: 10px;
|
||||
background: #f8fafc;
|
||||
border: 1px solid #f1f5f9;
|
||||
transition: all 0.15s;
|
||||
}
|
||||
|
||||
.ringkasan-list li:hover {
|
||||
background: #f0fdf4;
|
||||
border-color: #bbf7d0;
|
||||
}
|
||||
|
||||
.check-circle {
|
||||
width: 24px;
|
||||
height: 24px;
|
||||
background: #d1fae5;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
color: #16a34a;
|
||||
font-size: 0.7rem;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.ringkasan-desc {
|
||||
font-size: 0.8rem;
|
||||
color: #64748b;
|
||||
margin: 0 0 1rem;
|
||||
line-height: 1.55;
|
||||
}
|
||||
|
||||
/* ─── RESPONSIVE ─── */
|
||||
@media (max-width: 1100px) {
|
||||
.stats-row {
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 900px) {
|
||||
.main-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.stats-row {
|
||||
grid-template-columns: repeat(3, 1fr);
|
||||
}
|
||||
|
||||
.page-body {
|
||||
padding: 1.5rem 1.25rem 2rem;
|
||||
}
|
||||
|
||||
.lap-hero {
|
||||
padding: 1.5rem 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.stats-row {
|
||||
grid-template-columns: repeat(2, 1fr);
|
||||
}
|
||||
|
||||
.form-row-inline {
|
||||
flex-direction: column;
|
||||
align-items: stretch; /* ← FIX: was missing, caused right-align */
|
||||
gap: 0.75rem;
|
||||
}
|
||||
|
||||
.field-wrap {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.field-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.hero-text h2 {
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
|
||||
.card-body {
|
||||
padding: 1.25rem;
|
||||
}
|
||||
}
|
||||
|
||||
@media (max-width: 480px) {
|
||||
.stats-row {
|
||||
grid-template-columns: 1fr 1fr;
|
||||
}
|
||||
|
||||
.stat-value {
|
||||
font-size: 1.25rem;
|
||||
}
|
||||
|
||||
.lap-hero {
|
||||
padding: 1.25rem 1rem;
|
||||
}
|
||||
|
||||
.page-body {
|
||||
padding: 1rem 0.85rem 2rem;
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
{{-- ─── HERO ─── --}}
|
||||
<div class="lap-hero">
|
||||
<div class="hero-icon">
|
||||
<i class="fas fa-chart-bar"></i>
|
||||
</div>
|
||||
<div class="hero-text">
|
||||
<h2>Laporan Bulanan</h2>
|
||||
<p>Ringkasan data iuran dan aktivitas penghuni per bulan</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="page-body">
|
||||
|
||||
{{-- ─── STATS ─── --}}
|
||||
<div class="stats-row">
|
||||
<div class="stat-card">
|
||||
<div class="stat-icon"><i class="fas fa-circle-check"></i></div>
|
||||
<p class="stat-value">{{ $sukses }}</p>
|
||||
<p class="stat-label">Sukses</p>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-icon"><i class="fas fa-circle-xmark"></i></div>
|
||||
<p class="stat-value">{{ $gagal }}</p>
|
||||
<p class="stat-label">Gagal</p>
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-icon"><i class="fas fa-users"></i></div>
|
||||
<p class="stat-value">{{ $totalPenghuni }}</p>
|
||||
<p class="stat-label">Penghuni</p>
|
||||
@if(Auth::user()->role !== 'admin')
|
||||
<p style="font-size:0.7rem; color:#064e3b; margin-top:4px; font-weight:600;">RT Saya</p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-icon"><i class="fas fa-house"></i></div>
|
||||
<p class="stat-value">{{ $totalRumah }}</p>
|
||||
<p class="stat-label">Rumah</p>
|
||||
@if(Auth::user()->role !== 'admin')
|
||||
<p style="font-size:0.7rem; color:#064e3b; margin-top:4px; font-weight:600;">RT Saya</p>
|
||||
@endif
|
||||
</div>
|
||||
<div class="stat-card">
|
||||
<div class="stat-icon"><i class="fas fa-money-bill-wave"></i></div>
|
||||
<p class="stat-value" style="font-size:1.1rem;">Rp {{ number_format($totalIuran, 0, ',', '.') }}</p>
|
||||
<p class="stat-label">Total Iuran</p>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- ─── MAIN GRID ─── --}}
|
||||
<div class="main-grid">
|
||||
|
||||
{{-- KIRI: FORM CETAK --}}
|
||||
<div class="info-card">
|
||||
<div class="card-header">
|
||||
<i class="fas fa-print"></i>
|
||||
<span>Cetak Laporan</span>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<form action="{{ route('laporan.cetak') }}" method="GET">
|
||||
|
||||
<div class="form-row-inline">
|
||||
<div class="field-wrap">
|
||||
<label class="field-label">
|
||||
<i class="fas fa-calendar"></i>
|
||||
Pilih Bulan
|
||||
</label>
|
||||
<select name="bulan" class="field-select">
|
||||
@foreach(['Januari', 'Februari', 'Maret', 'April', 'Mei', 'Juni', 'Juli', 'Agustus', 'September', 'Oktober', 'November', 'Desember'] as $i => $bln)
|
||||
<option value="{{ $i + 1 }}" {{ (request('bulan') == $i + 1 || (!request('bulan') && $i + 1 == date('n'))) ? 'selected' : '' }}>
|
||||
{{ $bln }}
|
||||
</option>
|
||||
@endforeach
|
||||
</select>
|
||||
</div>
|
||||
|
||||
<div class="field-wrap">
|
||||
<label class="field-label">
|
||||
<i class="fas fa-calendar-days"></i>
|
||||
Tahun
|
||||
</label>
|
||||
<select name="tahun" class="field-select">
|
||||
@for($y = date('Y'); $y >= date('Y') - 4; $y--)
|
||||
<option value="{{ $y }}" {{ (request('tahun', date('Y')) == $y) ? 'selected' : '' }}>
|
||||
{{ $y }}
|
||||
</option>
|
||||
@endfor
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-cetak">
|
||||
<i class="fas fa-print"></i>
|
||||
Cetak Laporan PDF
|
||||
</button>
|
||||
|
||||
</form>
|
||||
|
||||
<div class="info-strip">
|
||||
<i class="fas fa-circle-info"></i>
|
||||
<p>Laporan akan dibuka dalam format PDF dan siap untuk dicetak atau disimpan.</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{-- KANAN: RINGKASAN --}}
|
||||
<div class="info-card">
|
||||
<div class="card-header">
|
||||
<i class="fas fa-list-check"></i>
|
||||
<span>Isi Laporan</span>
|
||||
</div>
|
||||
<div class="card-body">
|
||||
<p class="ringkasan-desc">
|
||||
Laporan mencakup data lengkap periode yang dipilih:
|
||||
</p>
|
||||
<ul class="ringkasan-list">
|
||||
<li>
|
||||
<div class="check-circle"><i class="fas fa-check"></i></div>
|
||||
Data Iuran Bulanan
|
||||
</li>
|
||||
<li>
|
||||
<div class="check-circle"><i class="fas fa-check"></i></div>
|
||||
Data Penghuni Aktif
|
||||
</li>
|
||||
<li>
|
||||
<div class="check-circle"><i class="fas fa-check"></i></div>
|
||||
Aktivitas Pembayaran
|
||||
</li>
|
||||
<li>
|
||||
<div class="check-circle"><i class="fas fa-check"></i></div>
|
||||
Rekap Rumah & Unit
|
||||
</li>
|
||||
<li>
|
||||
<div class="check-circle"><i class="fas fa-check"></i></div>
|
||||
Status Tunggakan
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,348 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Lupa Password - Green View</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
background: #0a3d1e;
|
||||
}
|
||||
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL (Logo) ─── */
|
||||
.auth-left {
|
||||
width: 55%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.auth-left::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background:
|
||||
radial-gradient(ellipse 60% 50% at 80% 110%, rgba(25,148,84,0.10) 0%, transparent 70%),
|
||||
radial-gradient(ellipse 50% 40% at -10% -10%, rgba(16,110,54,0.08) 0%, transparent 70%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 18px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
letter-spacing: 3px;
|
||||
text-transform: uppercase;
|
||||
color: #2d7a4f;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 68%;
|
||||
max-width: 340px;
|
||||
object-fit: contain;
|
||||
position: relative;
|
||||
filter: drop-shadow(0 12px 32px rgba(15,80,40,0.18));
|
||||
animation: floatLogo 5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes floatLogo {
|
||||
0%, 100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-10px); }
|
||||
}
|
||||
|
||||
.deco-circle {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
border: 1.5px solid rgba(25,148,84,0.12);
|
||||
pointer-events: none;
|
||||
}
|
||||
.deco-circle.c1 { width: 420px; height: 420px; bottom: -120px; right: -120px; }
|
||||
.deco-circle.c2 { width: 260px; height: 260px; bottom: -60px; right: -60px; }
|
||||
.deco-circle.c3 { width: 160px; height: 160px; top: 30px; left: 30px; }
|
||||
|
||||
/* ─── RIGHT PANEL (Form) ─── */
|
||||
.auth-right {
|
||||
width: 45%;
|
||||
background: linear-gradient(145deg, #1a6e3a 0%, #2e9e58 45%, #1a8040 100%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 48px 40px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.auth-right::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-right::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 340px; height: 340px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.07) 0%, transparent 70%);
|
||||
bottom: -80px; right: -80px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.blob-top {
|
||||
position: absolute;
|
||||
width: 240px; height: 240px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);
|
||||
top: -60px; left: -60px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* ─── CARD ─── */
|
||||
.auth-card {
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
animation: slideUp 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
from { opacity: 0; transform: translateY(28px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* ─── HEADER ─── */
|
||||
.card-header-area {
|
||||
text-align: center;
|
||||
margin-bottom: 28px;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
display: inline-block;
|
||||
background: rgba(255,255,255,0.15);
|
||||
backdrop-filter: blur(6px);
|
||||
border: 1px solid rgba(255,255,255,0.25);
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2px;
|
||||
text-transform: uppercase;
|
||||
padding: 5px 14px;
|
||||
border-radius: 99px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
color: #ffffff;
|
||||
font-size: 20px;
|
||||
font-weight: 800;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
color: rgba(255,255,255,0.65);
|
||||
font-size: 13px;
|
||||
line-height: 1.5;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ─── INFO BOX ─── */
|
||||
.info-box {
|
||||
background: rgba(255,255,255,0.12);
|
||||
border: 1px solid rgba(255,255,255,0.2);
|
||||
border-radius: 10px;
|
||||
padding: 12px 14px;
|
||||
color: rgba(255,255,255,0.85);
|
||||
font-size: 12.5px;
|
||||
text-align: center;
|
||||
margin-bottom: 22px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* ─── ALERTS ─── */
|
||||
.alert {
|
||||
border-radius: 10px;
|
||||
font-size: 13px;
|
||||
padding: 10px 14px;
|
||||
margin-bottom: 16px;
|
||||
border: none;
|
||||
text-align: center;
|
||||
}
|
||||
.alert-danger { background: rgba(220,53,69,0.85); color: #fff; }
|
||||
.alert-success { background: rgba(25,135,84,0.85); color: #fff; }
|
||||
.alert-info { background: rgba(13,110,253,0.75); color: #fff; }
|
||||
|
||||
/* ─── INPUT ─── */
|
||||
.form-group {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.input-wrap {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.input-wrap .icon {
|
||||
position: absolute;
|
||||
left: 13px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
font-size: 14px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
width: 100%;
|
||||
padding: 11px 12px 11px 38px;
|
||||
border-radius: 10px;
|
||||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 14px;
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
|
||||
.form-control:focus {
|
||||
border-color: rgba(255,255,255,0.6);
|
||||
box-shadow: 0 0 0 3px rgba(255,255,255,0.18);
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
/* ─── BUTTON ─── */
|
||||
.btn-submit {
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
color: #1a6e3a;
|
||||
font-size: 14.5px;
|
||||
font-weight: 800;
|
||||
font-family: inherit;
|
||||
letter-spacing: 0.5px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
}
|
||||
|
||||
.btn-submit:hover {
|
||||
background: #f0faf4;
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-submit:active { transform: translateY(0); }
|
||||
|
||||
/* ─── LINKS ─── */
|
||||
.links-area {
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
color: rgba(255,255,255,0.75);
|
||||
font-size: 12.5px;
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
}
|
||||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
/* ─── RESPONSIVE ─── */
|
||||
@media (max-width: 768px) {
|
||||
.auth-left { display: none; }
|
||||
.auth-right { width: 100%; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
<div class="deco-circle c3"></div>
|
||||
<img src="{{ asset('tunggal.png') }}" alt="Green View Logo">
|
||||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
<div class="auth-card">
|
||||
|
||||
<div class="card-header-area">
|
||||
<div class="badge-pill">🔑 Reset Password</div>
|
||||
<h4>Lupa Password?</h4>
|
||||
<p>Tenang, kami akan bantu.<br>Masukkan email akun Anda.</p>
|
||||
</div>
|
||||
|
||||
<div class="info-box">
|
||||
📧 Link reset password akan dikirim ke email Anda
|
||||
</div>
|
||||
|
||||
@if(session('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
@if(session('status'))
|
||||
<div class="alert alert-info">{{ session('status') }}</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('password.sendOtp') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-wrap">
|
||||
<span class="icon">✉️</span>
|
||||
<input type="email" name="email" class="form-control" placeholder="Masukkan email Anda" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-submit">
|
||||
Kirim Link Reset
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="links-area">
|
||||
<a href="{{ route('login') }}">← Kembali ke Login</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,485 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="id">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Lupa Password - Green View</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
html, body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
min-height: 100%;
|
||||
background: #0a3d1e;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL (Logo) ─── */
|
||||
.auth-left {
|
||||
width: 55%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.auth-left::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background:
|
||||
radial-gradient(ellipse 60% 50% at 80% 110%, rgba(25,148,84,0.10) 0%, transparent 70%),
|
||||
radial-gradient(ellipse 50% 40% at -10% -10%, rgba(16,110,54,0.08) 0%, transparent 70%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 18px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
letter-spacing: 3px;
|
||||
text-transform: uppercase;
|
||||
color: #2d7a4f;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 68%;
|
||||
max-width: 340px;
|
||||
object-fit: contain;
|
||||
position: relative;
|
||||
filter: drop-shadow(0 12px 32px rgba(15,80,40,0.18));
|
||||
animation: floatLogo 5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes floatLogo {
|
||||
0%, 100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-10px); }
|
||||
}
|
||||
|
||||
.deco-circle {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
border: 1.5px solid rgba(25,148,84,0.12);
|
||||
pointer-events: none;
|
||||
}
|
||||
.deco-circle.c1 { width: 420px; height: 420px; bottom: -120px; right: -120px; }
|
||||
.deco-circle.c2 { width: 260px; height: 260px; bottom: -60px; right: -60px; }
|
||||
.deco-circle.c3 { width: 160px; height: 160px; top: 30px; left: 30px; }
|
||||
|
||||
/* ─── RIGHT PANEL (Form) ─── */
|
||||
.auth-right {
|
||||
width: 45%;
|
||||
background: linear-gradient(145deg, #1a6e3a 0%, #2e9e58 45%, #1a8040 100%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 48px 40px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.auth-right::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-right::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 340px; height: 340px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.07) 0%, transparent 70%);
|
||||
bottom: -80px; right: -80px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.blob-top {
|
||||
position: absolute;
|
||||
width: 240px; height: 240px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);
|
||||
top: -60px; left: -60px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* ─── CARD ─── */
|
||||
.auth-card {
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
animation: slideUp 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
from { opacity: 0; transform: translateY(28px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* ─── HEADER ─── */
|
||||
.card-header-area {
|
||||
text-align: center;
|
||||
margin-bottom: 28px;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
display: inline-block;
|
||||
background: rgba(255,255,255,0.15);
|
||||
backdrop-filter: blur(6px);
|
||||
border: 1px solid rgba(255,255,255,0.25);
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2px;
|
||||
text-transform: uppercase;
|
||||
padding: 5px 14px;
|
||||
border-radius: 99px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
color: #ffffff;
|
||||
font-size: 20px;
|
||||
font-weight: 800;
|
||||
margin-bottom: 8px;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
color: rgba(255,255,255,0.65);
|
||||
font-size: 13px;
|
||||
line-height: 1.5;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ─── INFO BOX ─── */
|
||||
.info-box {
|
||||
background: rgba(255,255,255,0.12);
|
||||
border: 1px solid rgba(255,255,255,0.2);
|
||||
border-radius: 10px;
|
||||
padding: 12px 14px;
|
||||
color: rgba(255,255,255,0.85);
|
||||
font-size: 12.5px;
|
||||
text-align: center;
|
||||
margin-bottom: 22px;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* ─── ALERTS ─── */
|
||||
.alert {
|
||||
border-radius: 10px;
|
||||
font-size: 13px;
|
||||
padding: 10px 14px;
|
||||
margin-bottom: 16px;
|
||||
border: none;
|
||||
text-align: center;
|
||||
}
|
||||
.alert-danger { background: rgba(220,53,69,0.85); color: #fff; }
|
||||
.alert-success { background: rgba(25,135,84,0.85); color: #fff; }
|
||||
.alert-info { background: rgba(13,110,253,0.75); color: #fff; }
|
||||
|
||||
/* ─── INPUT ─── */
|
||||
.form-group {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.input-wrap {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.input-wrap .icon {
|
||||
position: absolute;
|
||||
left: 13px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
font-size: 14px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
width: 100%;
|
||||
padding: 11px 12px 11px 38px;
|
||||
border-radius: 10px;
|
||||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 16px; /* cegah auto-zoom iOS */
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
|
||||
.form-control:focus {
|
||||
border-color: rgba(255,255,255,0.6);
|
||||
box-shadow: 0 0 0 3px rgba(255,255,255,0.18);
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
/* ─── BUTTON ─── */
|
||||
.btn-submit {
|
||||
width: 100%;
|
||||
padding: 13px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
color: #1a6e3a;
|
||||
font-size: 14.5px;
|
||||
font-weight: 800;
|
||||
font-family: inherit;
|
||||
letter-spacing: 0.5px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.btn-submit:hover {
|
||||
background: #f0faf4;
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-submit:active {
|
||||
transform: translateY(0);
|
||||
background: #e4f5ec;
|
||||
}
|
||||
|
||||
/* ─── LINKS ─── */
|
||||
.links-area {
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
color: rgba(255,255,255,0.75);
|
||||
font-size: 12.5px;
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
}
|
||||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
/* ─── RESPONSIVE: Tablet ─── */
|
||||
@media screen and (min-width: 769px) and (max-width: 1024px) {
|
||||
.auth-left { width: 40%; }
|
||||
.auth-right { width: 60%; padding: 40px 28px; }
|
||||
.auth-left img { width: 80%; }
|
||||
}
|
||||
|
||||
/* ══════════════════════════════════════════
|
||||
MOBILE ≤ 768px — LAYOUT: atas-bawah
|
||||
══════════════════════════════════════════ */
|
||||
@media screen and (max-width: 768px) {
|
||||
|
||||
.auth-wrapper {
|
||||
flex-direction: column !important;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Panel Atas: Logo ── */
|
||||
.auth-left {
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
min-height: unset !important;
|
||||
padding: 44px 24px 36px !important;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(160deg, #ffffff 60%, #f0faf5 100%) !important;
|
||||
order: 0;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 50% !important;
|
||||
max-width: 185px !important;
|
||||
animation: none !important;
|
||||
filter: drop-shadow(0 8px 20px rgba(15,80,40,0.14)) !important;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 12px !important;
|
||||
font-size: 10px !important;
|
||||
letter-spacing: 2.5px !important;
|
||||
}
|
||||
|
||||
.deco-circle.c1,
|
||||
.deco-circle.c2 { display: none !important; }
|
||||
.deco-circle.c3 { width: 90px !important; height: 90px !important; top: 12px !important; left: 12px !important; }
|
||||
|
||||
/* ── Panel Bawah: Form ── */
|
||||
.auth-right {
|
||||
width: 100% !important;
|
||||
flex: 1 !important;
|
||||
padding: 36px 24px 52px !important;
|
||||
align-items: flex-start !important;
|
||||
justify-content: center !important;
|
||||
border-radius: 28px 28px 0 0 !important;
|
||||
margin-top: -24px !important;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.auth-card {
|
||||
max-width: 100% !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.card-header-area {
|
||||
margin-bottom: 20px !important;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
font-size: 10px !important;
|
||||
padding: 4px 12px !important;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
font-size: 18px !important;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.info-box {
|
||||
font-size: 12px !important;
|
||||
padding: 10px 12px !important;
|
||||
margin-bottom: 18px !important;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 14px !important;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
padding: 13px 12px 13px 40px !important;
|
||||
border-radius: 12px !important;
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.btn-submit {
|
||||
padding: 14px !important;
|
||||
font-size: 15px !important;
|
||||
border-radius: 12px !important;
|
||||
}
|
||||
|
||||
.links-area {
|
||||
margin-top: 22px !important;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
font-size: 13px !important;
|
||||
padding: 4px 0 !important;
|
||||
display: inline-block !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* ─── Small Mobile ≤ 390px ─── */
|
||||
@media screen and (max-width: 390px) {
|
||||
.auth-left { padding: 36px 16px 28px !important; }
|
||||
.auth-left img { width: 46% !important; max-width: 160px !important; }
|
||||
.auth-right { padding: 28px 20px 44px !important; }
|
||||
}
|
||||
|
||||
/* ─── Landscape Mobile ─── */
|
||||
@media screen and (max-width: 768px) and (orientation: landscape) {
|
||||
.auth-left {
|
||||
padding: 18px 24px 16px !important;
|
||||
}
|
||||
.auth-left img { width: 26% !important; max-width: 100px !important; }
|
||||
.auth-left .brand-tagline { margin-top: 6px !important; font-size: 9px !important; }
|
||||
.auth-right {
|
||||
padding: 22px 24px 32px !important;
|
||||
border-radius: 20px 20px 0 0 !important;
|
||||
margin-top: -10px !important;
|
||||
}
|
||||
.card-header-area { margin-bottom: 14px !important; }
|
||||
.form-group { margin-bottom: 10px !important; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- TOP / LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
<div class="deco-circle c3"></div>
|
||||
<img src="{{ asset('tunggal.png') }}" alt="Green View Logo">
|
||||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- BOTTOM / RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
<div class="auth-card">
|
||||
|
||||
<div class="card-header-area">
|
||||
<div class="badge-pill">🔑 Reset Password</div>
|
||||
<h4>Lupa Password?</h4>
|
||||
<p>Tenang, kami akan bantu.<br>Masukkan email akun Anda.</p>
|
||||
</div>
|
||||
|
||||
<div class="info-box">
|
||||
📧 Link reset password akan dikirim ke email Anda
|
||||
</div>
|
||||
|
||||
@if(session('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
@if(session('status'))
|
||||
<div class="alert alert-info">{{ session('status') }}</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('password.sendOtp') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-wrap">
|
||||
<span class="icon">✉️</span>
|
||||
<input type="email" name="email" class="form-control" placeholder="Masukkan email Anda" required autocomplete="email">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-submit">
|
||||
Kirim Link Reset
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="links-area">
|
||||
<a href="{{ route('login') }}">← Kembali ke Login</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
</body>
|
||||
</html>
|
||||
|
|
@ -0,0 +1,520 @@
|
|||
@extends('layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
html, body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
min-height: 100%;
|
||||
background: #0a3d1e;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
min-height: 100vh;
|
||||
flex-direction: row; /* desktop: side by side */
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL (Logo) ─── */
|
||||
.auth-left {
|
||||
width: 55%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.auth-left::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background:
|
||||
radial-gradient(ellipse 60% 50% at 80% 110%, rgba(25,148,84,0.10) 0%, transparent 70%),
|
||||
radial-gradient(ellipse 50% 40% at -10% -10%, rgba(16,110,54,0.08) 0%, transparent 70%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 18px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
letter-spacing: 3px;
|
||||
text-transform: uppercase;
|
||||
color: #2d7a4f;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 68%;
|
||||
max-width: 340px;
|
||||
object-fit: contain;
|
||||
position: relative;
|
||||
filter: drop-shadow(0 12px 32px rgba(15,80,40,0.18));
|
||||
animation: floatLogo 5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes floatLogo {
|
||||
0%, 100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-10px); }
|
||||
}
|
||||
|
||||
.deco-circle {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
border: 1.5px solid rgba(25,148,84,0.12);
|
||||
pointer-events: none;
|
||||
}
|
||||
.deco-circle.c1 { width: 420px; height: 420px; bottom: -120px; right: -120px; }
|
||||
.deco-circle.c2 { width: 260px; height: 260px; bottom: -60px; right: -60px; }
|
||||
.deco-circle.c3 { width: 160px; height: 160px; top: 30px; left: 30px; }
|
||||
|
||||
/* ─── RIGHT PANEL (Form) ─── */
|
||||
.auth-right {
|
||||
width: 45%;
|
||||
background: linear-gradient(145deg, #1a6e3a 0%, #2e9e58 45%, #1a8040 100%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 48px 40px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.auth-right::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-right::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 340px; height: 340px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.07) 0%, transparent 70%);
|
||||
bottom: -80px; right: -80px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.blob-top {
|
||||
position: absolute;
|
||||
width: 240px; height: 240px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);
|
||||
top: -60px; left: -60px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* ─── CARD ─── */
|
||||
.auth-card {
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
animation: slideUp 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
from { opacity: 0; transform: translateY(28px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* ─── HEADER ─── */
|
||||
.card-header-area {
|
||||
text-align: center;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
display: inline-block;
|
||||
background: rgba(255,255,255,0.15);
|
||||
backdrop-filter: blur(6px);
|
||||
border: 1px solid rgba(255,255,255,0.25);
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2px;
|
||||
text-transform: uppercase;
|
||||
padding: 5px 14px;
|
||||
border-radius: 99px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
color: #ffffff;
|
||||
font-size: 18px;
|
||||
font-weight: 800;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
color: rgba(255,255,255,0.65);
|
||||
font-size: 12.5px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ─── ALERTS ─── */
|
||||
.alert {
|
||||
border-radius: 10px;
|
||||
font-size: 13px;
|
||||
padding: 10px 14px;
|
||||
margin-bottom: 16px;
|
||||
border: none;
|
||||
}
|
||||
.alert-danger { background: rgba(220,53,69,0.85); color: #fff; }
|
||||
.alert-success { background: rgba(25,135,84,0.85); color: #fff; }
|
||||
|
||||
/* ─── FORM GROUP ─── */
|
||||
.form-group {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
display: block;
|
||||
color: rgba(255,255,255,0.85);
|
||||
font-size: 12.5px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 7px;
|
||||
letter-spacing: 0.4px;
|
||||
}
|
||||
|
||||
.input-wrap {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.input-wrap .icon {
|
||||
position: absolute;
|
||||
left: 13px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: rgba(0,0,0,0.3);
|
||||
font-size: 15px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
width: 100%;
|
||||
padding: 11px 12px 11px 38px;
|
||||
border-radius: 10px;
|
||||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 16px;
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
|
||||
.form-control:focus {
|
||||
border-color: rgba(255,255,255,0.6);
|
||||
box-shadow: 0 0 0 3px rgba(255,255,255,0.18);
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.toggle-eye {
|
||||
position: absolute;
|
||||
right: 12px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
cursor: pointer;
|
||||
color: #888;
|
||||
font-size: 15px;
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
line-height: 1;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* ─── LOGIN BUTTON ─── */
|
||||
.btn-login {
|
||||
width: 100%;
|
||||
padding: 14px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
color: #1a6e3a;
|
||||
font-size: 15px;
|
||||
font-weight: 800;
|
||||
font-family: inherit;
|
||||
letter-spacing: 0.5px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
margin-top: 4px;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.btn-login:hover {
|
||||
background: #f0faf4;
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-login:active {
|
||||
transform: translateY(0);
|
||||
background: #e4f5ec;
|
||||
}
|
||||
|
||||
/* ─── LINKS ─── */
|
||||
.links-area {
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
color: rgba(255,255,255,0.75);
|
||||
font-size: 12.5px;
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
}
|
||||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
.links-area .divider {
|
||||
color: rgba(255,255,255,0.35);
|
||||
margin: 0 8px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
/* ─── RESPONSIVE: Tablet ─── */
|
||||
@media screen and (min-width: 769px) and (max-width: 1024px) {
|
||||
.auth-left { width: 40%; }
|
||||
.auth-right { width: 60%; padding: 40px 28px; }
|
||||
.auth-left img { width: 80%; }
|
||||
}
|
||||
|
||||
/* ══════════════════════════════════════════
|
||||
MOBILE ≤ 768px — LAYOUT: atas-bawah
|
||||
══════════════════════════════════════════ */
|
||||
@media screen and (max-width: 768px) {
|
||||
|
||||
/* Wrapper jadi kolom */
|
||||
.auth-wrapper {
|
||||
flex-direction: column !important;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Panel Atas: Logo ── */
|
||||
.auth-left {
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
min-height: unset !important;
|
||||
padding: 44px 24px 36px !important;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(160deg, #ffffff 60%, #f0faf5 100%) !important;
|
||||
order: 0;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 52% !important;
|
||||
max-width: 190px !important;
|
||||
animation: none !important;
|
||||
filter: drop-shadow(0 8px 20px rgba(15,80,40,0.14)) !important;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 12px !important;
|
||||
font-size: 10px !important;
|
||||
letter-spacing: 2.5px !important;
|
||||
}
|
||||
|
||||
/* Dekorasi: sembunyikan lingkaran besar */
|
||||
.deco-circle.c1,
|
||||
.deco-circle.c2 { display: none !important; }
|
||||
.deco-circle.c3 { width: 90px !important; height: 90px !important; top: 12px !important; left: 12px !important; }
|
||||
|
||||
/* ── Panel Bawah: Form ── */
|
||||
.auth-right {
|
||||
width: 100% !important;
|
||||
flex: 1 !important;
|
||||
padding: 36px 24px 52px !important;
|
||||
align-items: flex-start !important;
|
||||
justify-content: center !important;
|
||||
border-radius: 28px 28px 0 0 !important;
|
||||
margin-top: -24px !important;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.auth-card {
|
||||
max-width: 100% !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.card-header-area {
|
||||
margin-bottom: 24px !important;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
font-size: 10px !important;
|
||||
padding: 4px 12px !important;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
font-size: 17px !important;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 15px !important;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
padding: 13px 12px 13px 40px !important;
|
||||
border-radius: 12px !important;
|
||||
font-size: 16px !important; /* cegah zoom iOS */
|
||||
}
|
||||
|
||||
.btn-login {
|
||||
padding: 15px !important;
|
||||
font-size: 15px !important;
|
||||
border-radius: 12px !important;
|
||||
margin-top: 8px !important;
|
||||
}
|
||||
|
||||
.links-area {
|
||||
display: flex !important;
|
||||
flex-direction: column !important;
|
||||
gap: 12px !important;
|
||||
align-items: center !important;
|
||||
margin-top: 22px !important;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
font-size: 13px !important;
|
||||
padding: 4px 0 !important;
|
||||
display: inline-block !important;
|
||||
}
|
||||
|
||||
.links-area .divider { display: none !important; }
|
||||
}
|
||||
|
||||
/* ─── Small Mobile ≤ 390px ─── */
|
||||
@media screen and (max-width: 390px) {
|
||||
.auth-left { padding: 36px 16px 28px !important; }
|
||||
.auth-left img { width: 46% !important; max-width: 165px !important; }
|
||||
.auth-right { padding: 28px 20px 44px !important; }
|
||||
}
|
||||
|
||||
/* ─── Landscape Mobile ─── */
|
||||
@media screen and (max-width: 768px) and (orientation: landscape) {
|
||||
.auth-left {
|
||||
padding: 20px 24px 18px !important;
|
||||
}
|
||||
.auth-left img { width: 28% !important; max-width: 110px !important; }
|
||||
.auth-left .brand-tagline { margin-top: 8px !important; font-size: 9px !important; }
|
||||
.auth-right {
|
||||
padding: 24px 24px 32px !important;
|
||||
border-radius: 20px 20px 0 0 !important;
|
||||
margin-top: -12px !important;
|
||||
}
|
||||
.card-header-area { margin-bottom: 14px !important; }
|
||||
.form-group { margin-bottom: 10px !important; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- TOP / LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
<div class="deco-circle c3"></div>
|
||||
<img src="{{ asset('tunggal.png') }}" alt="Green View Logo">
|
||||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- BOTTOM / RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
<div class="auth-card">
|
||||
|
||||
<div class="card-header-area">
|
||||
<div class="badge-pill">🏡 Real Estate</div>
|
||||
<h4>PT Tunggal Griya Sakinah<br>(GREEN VIEW)</h4>
|
||||
<p>Kab. Bondowoso, Jawa Timur</p>
|
||||
</div>
|
||||
|
||||
@if(session('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('login.proses') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group">
|
||||
<label>Username / Email</label>
|
||||
<div class="input-wrap">
|
||||
<span class="icon">👤</span>
|
||||
<input type="text" name="login" class="form-control" placeholder="Masukkan username atau email" required autocomplete="username">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Password</label>
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🔒</span>
|
||||
<input type="password" name="password" id="password" class="form-control" placeholder="Masukkan password" required autocomplete="current-password">
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword()" aria-label="Tampilkan/sembunyikan password">👁</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-login">
|
||||
Login
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="links-area">
|
||||
<a href="{{ route('register') }}">Belum punya akun? Register</a>
|
||||
<span class="divider">|</span>
|
||||
<a href="{{ route('password.forgot') }}">Lupa Password?</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function togglePassword() {
|
||||
const p = document.getElementById("password");
|
||||
p.type = p.type === "password" ? "text" : "password";
|
||||
}
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,520 @@
|
|||
@extends('layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
min-height: 100vh;
|
||||
background: #0a3d1e;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL (Logo) ─── */
|
||||
.auth-left {
|
||||
width: 55%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.auth-left::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background:
|
||||
radial-gradient(ellipse 60% 50% at 80% 110%, rgba(25,148,84,0.10) 0%, transparent 70%),
|
||||
radial-gradient(ellipse 50% 40% at -10% -10%, rgba(16,110,54,0.08) 0%, transparent 70%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 18px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
letter-spacing: 3px;
|
||||
text-transform: uppercase;
|
||||
color: #2d7a4f;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 68%;
|
||||
max-width: 340px;
|
||||
object-fit: contain;
|
||||
position: relative;
|
||||
filter: drop-shadow(0 12px 32px rgba(15,80,40,0.18));
|
||||
animation: floatLogo 5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes floatLogo {
|
||||
0%, 100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-10px); }
|
||||
}
|
||||
|
||||
.deco-circle {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
border: 1.5px solid rgba(25,148,84,0.12);
|
||||
pointer-events: none;
|
||||
}
|
||||
.deco-circle.c1 { width: 420px; height: 420px; bottom: -120px; right: -120px; }
|
||||
.deco-circle.c2 { width: 260px; height: 260px; bottom: -60px; right: -60px; }
|
||||
.deco-circle.c3 { width: 160px; height: 160px; top: 30px; left: 30px; }
|
||||
|
||||
/* ─── RIGHT PANEL (Form) ─── */
|
||||
.auth-right {
|
||||
width: 45%;
|
||||
background: linear-gradient(145deg, #1a6e3a 0%, #2e9e58 45%, #1a8040 100%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 48px 40px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.auth-right::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-right::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 340px; height: 340px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.07) 0%, transparent 70%);
|
||||
bottom: -80px; right: -80px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.blob-top {
|
||||
position: absolute;
|
||||
width: 240px; height: 240px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);
|
||||
top: -60px; left: -60px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* ─── CARD ─── */
|
||||
.auth-card {
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
animation: slideUp 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
from { opacity: 0; transform: translateY(28px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* ─── HEADER ─── */
|
||||
.card-header-area {
|
||||
text-align: center;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
display: inline-block;
|
||||
background: rgba(255,255,255,0.15);
|
||||
backdrop-filter: blur(6px);
|
||||
border: 1px solid rgba(255,255,255,0.25);
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2px;
|
||||
text-transform: uppercase;
|
||||
padding: 5px 14px;
|
||||
border-radius: 99px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
color: #ffffff;
|
||||
font-size: 18px;
|
||||
font-weight: 800;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
color: rgba(255,255,255,0.65);
|
||||
font-size: 12.5px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ─── ALERTS ─── */
|
||||
.alert {
|
||||
border-radius: 10px;
|
||||
font-size: 13px;
|
||||
padding: 10px 14px;
|
||||
margin-bottom: 16px;
|
||||
border: none;
|
||||
}
|
||||
.alert-danger { background: rgba(220,53,69,0.85); color: #fff; }
|
||||
.alert-success { background: rgba(25,135,84,0.85); color: #fff; }
|
||||
|
||||
/* ─── FORM GROUP ─── */
|
||||
.form-group {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
display: block;
|
||||
color: rgba(255,255,255,0.85);
|
||||
font-size: 12.5px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 7px;
|
||||
letter-spacing: 0.4px;
|
||||
}
|
||||
|
||||
.input-wrap {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.input-wrap .icon {
|
||||
position: absolute;
|
||||
left: 13px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: rgba(0,0,0,0.3);
|
||||
font-size: 15px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
width: 100%;
|
||||
padding: 11px 12px 11px 38px;
|
||||
border-radius: 10px;
|
||||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 16px; /* 16px mencegah auto-zoom iOS */
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
|
||||
.form-control:focus {
|
||||
border-color: rgba(255,255,255,0.6);
|
||||
box-shadow: 0 0 0 3px rgba(255,255,255,0.18);
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.toggle-eye {
|
||||
position: absolute;
|
||||
right: 12px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
cursor: pointer;
|
||||
color: #888;
|
||||
font-size: 15px;
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
line-height: 1;
|
||||
/* area sentuh lebih besar di mobile */
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* ─── LOGIN BUTTON ─── */
|
||||
.btn-login {
|
||||
width: 100%;
|
||||
padding: 14px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
color: #1a6e3a;
|
||||
font-size: 15px;
|
||||
font-weight: 800;
|
||||
font-family: inherit;
|
||||
letter-spacing: 0.5px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
margin-top: 4px;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.btn-login:hover {
|
||||
background: #f0faf4;
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-login:active {
|
||||
transform: translateY(0);
|
||||
background: #e4f5ec;
|
||||
}
|
||||
|
||||
/* ─── LINKS ─── */
|
||||
.links-area {
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
color: rgba(255,255,255,0.75);
|
||||
font-size: 12.5px;
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
}
|
||||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
.links-area .divider {
|
||||
color: rgba(255,255,255,0.35);
|
||||
margin: 0 8px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
/* ─── RESPONSIVE: Tablet ─── */
|
||||
@media (min-width: 769px) and (max-width: 1024px) {
|
||||
.auth-left { width: 40%; }
|
||||
.auth-right { width: 60%; padding: 40px 28px; }
|
||||
.auth-left img { width: 80%; }
|
||||
}
|
||||
|
||||
/* ─── RESPONSIVE: Mobile ─── */
|
||||
@media (max-width: 768px) {
|
||||
html, body { overflow-x: hidden; }
|
||||
|
||||
.auth-wrapper {
|
||||
flex-direction: column;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Panel Kiri: banner logo di atas ── */
|
||||
.auth-left {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
padding: 44px 24px 36px;
|
||||
flex-shrink: 0;
|
||||
/* gradient hijau tipis di background putih agar tidak terlalu polos */
|
||||
background: linear-gradient(160deg, #ffffff 60%, #f0faf5 100%);
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 48%;
|
||||
max-width: 180px;
|
||||
animation: none;
|
||||
filter: drop-shadow(0 8px 20px rgba(15,80,40,0.14));
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 12px;
|
||||
font-size: 10px;
|
||||
letter-spacing: 2.5px;
|
||||
}
|
||||
|
||||
/* Dekorasi lingkaran: sembunyikan yang besar, kecilkan yang kecil */
|
||||
.deco-circle.c1,
|
||||
.deco-circle.c2 { display: none; }
|
||||
.deco-circle.c3 { width: 90px; height: 90px; top: 12px; left: 12px; }
|
||||
|
||||
/* ── Panel Kanan: form di bawah, mengisi sisa layar ── */
|
||||
.auth-right {
|
||||
width: 100%;
|
||||
flex: 1;
|
||||
padding: 36px 24px 52px;
|
||||
/* align atas agar tidak ada ruang kosong aneh di HP pendek */
|
||||
align-items: flex-start;
|
||||
justify-content: center;
|
||||
/* border-radius atas untuk efek "card naik" */
|
||||
border-radius: 28px 28px 0 0;
|
||||
/* tarik ke atas sedikit agar overlap logo */
|
||||
margin-top: -20px;
|
||||
}
|
||||
|
||||
.auth-card {
|
||||
max-width: 100%;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.card-header-area {
|
||||
margin-bottom: 24px;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
font-size: 10px;
|
||||
padding: 4px 12px;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
font-size: 17px;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/* Form group sedikit lebih rapat */
|
||||
.form-group {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
font-size: 12px;
|
||||
}
|
||||
|
||||
/* Input lebih tinggi untuk kemudahan tap */
|
||||
.form-control {
|
||||
padding: 13px 12px 13px 40px;
|
||||
border-radius: 12px;
|
||||
}
|
||||
|
||||
/* Tombol login lebih besar */
|
||||
.btn-login {
|
||||
padding: 15px;
|
||||
font-size: 15px;
|
||||
border-radius: 12px;
|
||||
margin-top: 8px;
|
||||
}
|
||||
|
||||
/* Link login: tumpuk vertikal, jarak nyaman */
|
||||
.links-area {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
align-items: center;
|
||||
margin-top: 22px;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
font-size: 13px;
|
||||
/* area sentuh lebih besar */
|
||||
padding: 4px 0;
|
||||
display: inline-block;
|
||||
}
|
||||
|
||||
.links-area .divider { display: none; }
|
||||
}
|
||||
|
||||
/* ─── RESPONSIVE: Small Mobile (≤ 390px) ─── */
|
||||
@media (max-width: 390px) {
|
||||
.auth-left { padding: 36px 16px 28px; }
|
||||
.auth-left img { width: 44%; max-width: 160px; }
|
||||
.auth-right { padding: 28px 20px 44px; }
|
||||
}
|
||||
|
||||
/* ─── Landscape Mobile ─── */
|
||||
@media (max-width: 768px) and (orientation: landscape) {
|
||||
.auth-left {
|
||||
padding: 24px 24px 20px;
|
||||
}
|
||||
.auth-left img { width: 30%; max-width: 120px; }
|
||||
.auth-left .brand-tagline { margin-top: 8px; font-size: 9px; }
|
||||
.auth-right {
|
||||
padding: 24px 24px 32px;
|
||||
border-radius: 20px 20px 0 0;
|
||||
margin-top: -12px;
|
||||
}
|
||||
.card-header-area { margin-bottom: 16px; }
|
||||
.form-group { margin-bottom: 12px; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
<div class="deco-circle c3"></div>
|
||||
<img src="{{ asset('tunggal.png') }}" alt="Green View Logo">
|
||||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
<div class="auth-card">
|
||||
|
||||
<div class="card-header-area">
|
||||
<div class="badge-pill">🏡 Real Estate</div>
|
||||
<h4>PT Tunggal Griya Sakinah<br>(GREEN VIEW)</h4>
|
||||
<p>Kab. Bondowoso, Jawa Timur</p>
|
||||
</div>
|
||||
|
||||
@if(session('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('login.proses') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group">
|
||||
<label>Username / Email</label>
|
||||
<div class="input-wrap">
|
||||
<span class="icon">👤</span>
|
||||
<input type="text" name="login" class="form-control" placeholder="Masukkan username atau email" required autocomplete="username">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Password</label>
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🔒</span>
|
||||
<input type="password" name="password" id="password" class="form-control" placeholder="Masukkan password" required autocomplete="current-password">
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword()" aria-label="Tampilkan/sembunyikan password">👁</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-login">
|
||||
Login
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="links-area">
|
||||
<a href="{{ route('register') }}">Belum punya akun? Register</a>
|
||||
<span class="divider">|</span>
|
||||
<a href="{{ route('password.forgot') }}">Lupa Password?</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function togglePassword() {
|
||||
const p = document.getElementById("password");
|
||||
p.type = p.type === "password" ? "text" : "password";
|
||||
}
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,520 @@
|
|||
@extends('layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
html, body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
min-height: 100%;
|
||||
background: #0a3d1e;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
min-height: 100vh;
|
||||
flex-direction: row; /* desktop: side by side */
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL (Logo) ─── */
|
||||
.auth-left {
|
||||
width: 55%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.auth-left::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background:
|
||||
radial-gradient(ellipse 60% 50% at 80% 110%, rgba(25,148,84,0.10) 0%, transparent 70%),
|
||||
radial-gradient(ellipse 50% 40% at -10% -10%, rgba(16,110,54,0.08) 0%, transparent 70%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 18px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
letter-spacing: 3px;
|
||||
text-transform: uppercase;
|
||||
color: #2d7a4f;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 68%;
|
||||
max-width: 340px;
|
||||
object-fit: contain;
|
||||
position: relative;
|
||||
filter: drop-shadow(0 12px 32px rgba(15,80,40,0.18));
|
||||
animation: floatLogo 5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes floatLogo {
|
||||
0%, 100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-10px); }
|
||||
}
|
||||
|
||||
.deco-circle {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
border: 1.5px solid rgba(25,148,84,0.12);
|
||||
pointer-events: none;
|
||||
}
|
||||
.deco-circle.c1 { width: 420px; height: 420px; bottom: -120px; right: -120px; }
|
||||
.deco-circle.c2 { width: 260px; height: 260px; bottom: -60px; right: -60px; }
|
||||
.deco-circle.c3 { width: 160px; height: 160px; top: 30px; left: 30px; }
|
||||
|
||||
/* ─── RIGHT PANEL (Form) ─── */
|
||||
.auth-right {
|
||||
width: 45%;
|
||||
background: linear-gradient(145deg, #1a6e3a 0%, #2e9e58 45%, #1a8040 100%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 48px 40px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.auth-right::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-right::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 340px; height: 340px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.07) 0%, transparent 70%);
|
||||
bottom: -80px; right: -80px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.blob-top {
|
||||
position: absolute;
|
||||
width: 240px; height: 240px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);
|
||||
top: -60px; left: -60px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* ─── CARD ─── */
|
||||
.auth-card {
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
animation: slideUp 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
from { opacity: 0; transform: translateY(28px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* ─── HEADER ─── */
|
||||
.card-header-area {
|
||||
text-align: center;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
display: inline-block;
|
||||
background: rgba(255,255,255,0.15);
|
||||
backdrop-filter: blur(6px);
|
||||
border: 1px solid rgba(255,255,255,0.25);
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2px;
|
||||
text-transform: uppercase;
|
||||
padding: 5px 14px;
|
||||
border-radius: 99px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
color: #ffffff;
|
||||
font-size: 18px;
|
||||
font-weight: 800;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
color: rgba(255,255,255,0.65);
|
||||
font-size: 12.5px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ─── ALERTS ─── */
|
||||
.alert {
|
||||
border-radius: 10px;
|
||||
font-size: 13px;
|
||||
padding: 10px 14px;
|
||||
margin-bottom: 16px;
|
||||
border: none;
|
||||
}
|
||||
.alert-danger { background: rgba(220,53,69,0.85); color: #fff; }
|
||||
.alert-success { background: rgba(25,135,84,0.85); color: #fff; }
|
||||
|
||||
/* ─── FORM GROUP ─── */
|
||||
.form-group {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
display: block;
|
||||
color: rgba(255,255,255,0.85);
|
||||
font-size: 12.5px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 7px;
|
||||
letter-spacing: 0.4px;
|
||||
}
|
||||
|
||||
.input-wrap {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.input-wrap .icon {
|
||||
position: absolute;
|
||||
left: 13px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: rgba(0,0,0,0.3);
|
||||
font-size: 15px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
width: 100%;
|
||||
padding: 11px 12px 11px 38px;
|
||||
border-radius: 10px;
|
||||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 16px;
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
|
||||
.form-control:focus {
|
||||
border-color: rgba(255,255,255,0.6);
|
||||
box-shadow: 0 0 0 3px rgba(255,255,255,0.18);
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.toggle-eye {
|
||||
position: absolute;
|
||||
right: 12px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
cursor: pointer;
|
||||
color: #888;
|
||||
font-size: 15px;
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
line-height: 1;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* ─── LOGIN BUTTON ─── */
|
||||
.btn-login {
|
||||
width: 100%;
|
||||
padding: 14px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
color: #1a6e3a;
|
||||
font-size: 15px;
|
||||
font-weight: 800;
|
||||
font-family: inherit;
|
||||
letter-spacing: 0.5px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
margin-top: 4px;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.btn-login:hover {
|
||||
background: #f0faf4;
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-login:active {
|
||||
transform: translateY(0);
|
||||
background: #e4f5ec;
|
||||
}
|
||||
|
||||
/* ─── LINKS ─── */
|
||||
.links-area {
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
color: rgba(255,255,255,0.75);
|
||||
font-size: 12.5px;
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
}
|
||||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
.links-area .divider {
|
||||
color: rgba(255,255,255,0.35);
|
||||
margin: 0 8px;
|
||||
font-size: 11px;
|
||||
}
|
||||
|
||||
/* ─── RESPONSIVE: Tablet ─── */
|
||||
@media screen and (min-width: 769px) and (max-width: 1024px) {
|
||||
.auth-left { width: 40%; }
|
||||
.auth-right { width: 60%; padding: 40px 28px; }
|
||||
.auth-left img { width: 80%; }
|
||||
}
|
||||
|
||||
/* ══════════════════════════════════════════
|
||||
MOBILE ≤ 768px — LAYOUT: atas-bawah
|
||||
══════════════════════════════════════════ */
|
||||
@media screen and (max-width: 768px) {
|
||||
|
||||
/* Wrapper jadi kolom */
|
||||
.auth-wrapper {
|
||||
flex-direction: column !important;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Panel Atas: Logo ── */
|
||||
.auth-left {
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
min-height: unset !important;
|
||||
padding: 44px 24px 36px !important;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(160deg, #ffffff 60%, #f0faf5 100%) !important;
|
||||
order: 0;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 52% !important;
|
||||
max-width: 190px !important;
|
||||
animation: none !important;
|
||||
filter: drop-shadow(0 8px 20px rgba(15,80,40,0.14)) !important;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 12px !important;
|
||||
font-size: 10px !important;
|
||||
letter-spacing: 2.5px !important;
|
||||
}
|
||||
|
||||
/* Dekorasi: sembunyikan lingkaran besar */
|
||||
.deco-circle.c1,
|
||||
.deco-circle.c2 { display: none !important; }
|
||||
.deco-circle.c3 { width: 90px !important; height: 90px !important; top: 12px !important; left: 12px !important; }
|
||||
|
||||
/* ── Panel Bawah: Form ── */
|
||||
.auth-right {
|
||||
width: 100% !important;
|
||||
flex: 1 !important;
|
||||
padding: 36px 24px 52px !important;
|
||||
align-items: flex-start !important;
|
||||
justify-content: center !important;
|
||||
border-radius: 28px 28px 0 0 !important;
|
||||
margin-top: -24px !important;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.auth-card {
|
||||
max-width: 100% !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.card-header-area {
|
||||
margin-bottom: 24px !important;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
font-size: 10px !important;
|
||||
padding: 4px 12px !important;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
font-size: 17px !important;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 15px !important;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
padding: 13px 12px 13px 40px !important;
|
||||
border-radius: 12px !important;
|
||||
font-size: 16px !important; /* cegah zoom iOS */
|
||||
}
|
||||
|
||||
.btn-login {
|
||||
padding: 15px !important;
|
||||
font-size: 15px !important;
|
||||
border-radius: 12px !important;
|
||||
margin-top: 8px !important;
|
||||
}
|
||||
|
||||
.links-area {
|
||||
display: flex !important;
|
||||
flex-direction: column !important;
|
||||
gap: 12px !important;
|
||||
align-items: center !important;
|
||||
margin-top: 22px !important;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
font-size: 13px !important;
|
||||
padding: 4px 0 !important;
|
||||
display: inline-block !important;
|
||||
}
|
||||
|
||||
.links-area .divider { display: none !important; }
|
||||
}
|
||||
|
||||
/* ─── Small Mobile ≤ 390px ─── */
|
||||
@media screen and (max-width: 390px) {
|
||||
.auth-left { padding: 36px 16px 28px !important; }
|
||||
.auth-left img { width: 46% !important; max-width: 165px !important; }
|
||||
.auth-right { padding: 28px 20px 44px !important; }
|
||||
}
|
||||
|
||||
/* ─── Landscape Mobile ─── */
|
||||
@media screen and (max-width: 768px) and (orientation: landscape) {
|
||||
.auth-left {
|
||||
padding: 20px 24px 18px !important;
|
||||
}
|
||||
.auth-left img { width: 28% !important; max-width: 110px !important; }
|
||||
.auth-left .brand-tagline { margin-top: 8px !important; font-size: 9px !important; }
|
||||
.auth-right {
|
||||
padding: 24px 24px 32px !important;
|
||||
border-radius: 20px 20px 0 0 !important;
|
||||
margin-top: -12px !important;
|
||||
}
|
||||
.card-header-area { margin-bottom: 14px !important; }
|
||||
.form-group { margin-bottom: 10px !important; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- TOP / LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
<div class="deco-circle c3"></div>
|
||||
<img src="{{ asset('tunggal.png') }}" alt="Green View Logo">
|
||||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- BOTTOM / RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
<div class="auth-card">
|
||||
|
||||
<div class="card-header-area">
|
||||
<div class="badge-pill">🏡 Real Estate</div>
|
||||
<h4>PT Tunggal Griya Sakinah<br>(GREEN VIEW)</h4>
|
||||
<p>Kab. Bondowoso, Jawa Timur</p>
|
||||
</div>
|
||||
|
||||
@if(session('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('login.proses') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group">
|
||||
<label>Username / Email</label>
|
||||
<div class="input-wrap">
|
||||
<span class="icon">👤</span>
|
||||
<input type="text" name="login" class="form-control" placeholder="Masukkan username atau email" required autocomplete="username">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Password</label>
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🔒</span>
|
||||
<input type="password" name="password" id="password" class="form-control" placeholder="Masukkan password" required autocomplete="current-password">
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword()" aria-label="Tampilkan/sembunyikan password">👁</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-login">
|
||||
Login
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="links-area">
|
||||
<a href="{{ route('register') }}">Belum punya akun? Register</a>
|
||||
<span class="divider">|</span>
|
||||
<a href="{{ route('password.forgot') }}">Lupa Password?</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function togglePassword() {
|
||||
const p = document.getElementById("password");
|
||||
p.type = p.type === "password" ? "text" : "password";
|
||||
}
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,353 @@
|
|||
@extends('layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
background: #0a3d1e;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL ─── */
|
||||
.auth-left {
|
||||
width: 55%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background: #ffffff;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.auth-left::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background:
|
||||
radial-gradient(ellipse 60% 50% at 80% 110%, rgba(25,148,84,0.10) 0%, transparent 70%),
|
||||
radial-gradient(ellipse 50% 40% at -10% -10%, rgba(16,110,54,0.08) 0%, transparent 70%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.brand-tagline {
|
||||
margin-top: 18px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
letter-spacing: 3px;
|
||||
text-transform: uppercase;
|
||||
color: #2d7a4f;
|
||||
opacity: 0.7;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 68%;
|
||||
max-width: 340px;
|
||||
object-fit: contain;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
filter: drop-shadow(0 12px 32px rgba(15,80,40,0.18));
|
||||
animation: floatLogo 5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes floatLogo {
|
||||
0%, 100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-10px); }
|
||||
}
|
||||
|
||||
.deco-circle {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
border: 1.5px solid rgba(25,148,84,0.12);
|
||||
pointer-events: none;
|
||||
}
|
||||
.deco-circle.c1 { width: 420px; height: 420px; bottom: -120px; right: -120px; }
|
||||
.deco-circle.c2 { width: 260px; height: 260px; bottom: -60px; right: -60px; }
|
||||
.deco-circle.c3 { width: 160px; height: 160px; top: 30px; left: 30px; }
|
||||
|
||||
/* ─── RIGHT PANEL ─── */
|
||||
/* Warna hijau disamakan persis dengan login (gambar 2) */
|
||||
.auth-right {
|
||||
width: 45%;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(160deg, #3aaa5c 0%, #2e9e50 40%, #1f8a42 100%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 48px 48px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* noise texture */
|
||||
.auth-right::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* decorative blob bottom-right */
|
||||
.auth-right::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 340px; height: 340px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.07) 0%, transparent 70%);
|
||||
bottom: -80px; right: -80px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.blob-top {
|
||||
position: absolute;
|
||||
width: 240px; height: 240px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);
|
||||
top: -60px; left: -60px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* ─── CARD ─── */
|
||||
.auth-card {
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
animation: slideUp 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
from { opacity: 0; transform: translateY(28px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* ─── HEADER ─── */
|
||||
.card-header-area {
|
||||
text-align: center;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.badge-pill {
|
||||
display: inline-block;
|
||||
background: rgba(255,255,255,0.18);
|
||||
backdrop-filter: blur(6px);
|
||||
border: 1px solid rgba(255,255,255,0.28);
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2px;
|
||||
text-transform: uppercase;
|
||||
padding: 5px 14px;
|
||||
border-radius: 99px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
color: #ffffff;
|
||||
font-size: 20px;
|
||||
font-weight: 800;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
color: rgba(255,255,255,0.70);
|
||||
font-size: 12.5px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ─── ALERTS ─── */
|
||||
.alert {
|
||||
border-radius: 10px;
|
||||
font-size: 13px;
|
||||
padding: 10px 14px;
|
||||
margin-bottom: 16px;
|
||||
border: none;
|
||||
}
|
||||
.alert-danger { background: rgba(220,53,69,0.85); color: #fff; }
|
||||
.alert-success { background: rgba(25,135,84,0.85); color: #fff; }
|
||||
|
||||
/* ─── FORM GROUP ─── */
|
||||
.form-group {
|
||||
margin-bottom: 18px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
display: block;
|
||||
color: rgba(255,255,255,0.88);
|
||||
font-size: 12.5px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 7px;
|
||||
letter-spacing: 0.4px;
|
||||
}
|
||||
|
||||
.input-wrap {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.input-wrap .icon {
|
||||
position: absolute;
|
||||
left: 13px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: rgba(0,0,0,0.3);
|
||||
font-size: 15px;
|
||||
pointer-events: none;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 11px 12px 11px 38px;
|
||||
border-radius: 10px;
|
||||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 14px;
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
|
||||
.form-control:focus {
|
||||
border-color: rgba(255,255,255,0.6);
|
||||
box-shadow: 0 0 0 3px rgba(255,255,255,0.18);
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
/* ─── BUTTON ─── */
|
||||
.btn-login {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
color: #1a6e3a;
|
||||
font-size: 14.5px;
|
||||
font-weight: 800;
|
||||
font-family: inherit;
|
||||
letter-spacing: 0.5px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.btn-login:hover {
|
||||
background: #f0faf4;
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-login:active { transform: translateY(0); }
|
||||
|
||||
/* ─── LINKS ─── */
|
||||
.links-area {
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
color: rgba(255,255,255,0.75);
|
||||
font-size: 12.5px;
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
}
|
||||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
/* ─── RESPONSIVE ─── */
|
||||
@media (max-width: 768px) {
|
||||
.auth-left { display: none; }
|
||||
.auth-right { width: 100%; padding: 40px 28px; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
<div class="deco-circle c3"></div>
|
||||
<img src="{{ asset('tunggal.png') }}" alt="Green View Logo">
|
||||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
<div class="auth-card">
|
||||
|
||||
<div class="card-header-area">
|
||||
<div class="badge-pill">🔐 Verifikasi</div>
|
||||
<h4>Verifikasi OTP</h4>
|
||||
<p>Masukkan kode OTP yang dikirim ke email Anda</p>
|
||||
</div>
|
||||
|
||||
@if(session('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('password.verifyOtp') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group">
|
||||
<label>Kode OTP</label>
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🔑</span>
|
||||
<input
|
||||
type="text"
|
||||
name="otp"
|
||||
class="form-control"
|
||||
placeholder="Masukkan kode OTP"
|
||||
required
|
||||
maxlength="6"
|
||||
autocomplete="one-time-code"
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-login">Verifikasi</button>
|
||||
|
||||
</form>
|
||||
|
||||
<div class="links-area">
|
||||
<a href="{{ route('login') }}">← Kembali ke Login</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,493 @@
|
|||
@extends('layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
html, body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
min-height: 100%;
|
||||
background: #0a3d1e;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
min-height: 100vh;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL ─── */
|
||||
.auth-left {
|
||||
width: 55%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background: #ffffff;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.auth-left::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background:
|
||||
radial-gradient(ellipse 60% 50% at 80% 110%, rgba(25,148,84,0.10) 0%, transparent 70%),
|
||||
radial-gradient(ellipse 50% 40% at -10% -10%, rgba(16,110,54,0.08) 0%, transparent 70%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.brand-tagline {
|
||||
margin-top: 18px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
letter-spacing: 3px;
|
||||
text-transform: uppercase;
|
||||
color: #2d7a4f;
|
||||
opacity: 0.7;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 68%;
|
||||
max-width: 340px;
|
||||
object-fit: contain;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
filter: drop-shadow(0 12px 32px rgba(15,80,40,0.18));
|
||||
animation: floatLogo 5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes floatLogo {
|
||||
0%, 100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-10px); }
|
||||
}
|
||||
|
||||
.deco-circle {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
border: 1.5px solid rgba(25,148,84,0.12);
|
||||
pointer-events: none;
|
||||
}
|
||||
.deco-circle.c1 { width: 420px; height: 420px; bottom: -120px; right: -120px; }
|
||||
.deco-circle.c2 { width: 260px; height: 260px; bottom: -60px; right: -60px; }
|
||||
.deco-circle.c3 { width: 160px; height: 160px; top: 30px; left: 30px; }
|
||||
|
||||
/* ─── RIGHT PANEL ─── */
|
||||
.auth-right {
|
||||
width: 45%;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(160deg, #3aaa5c 0%, #2e9e50 40%, #1f8a42 100%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 48px 48px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.auth-right::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.04'/%3E%3C/svg%3E");
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-right::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 340px; height: 340px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.07) 0%, transparent 70%);
|
||||
bottom: -80px; right: -80px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.blob-top {
|
||||
position: absolute;
|
||||
width: 240px; height: 240px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);
|
||||
top: -60px; left: -60px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* ─── CARD ─── */
|
||||
.auth-card {
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
animation: slideUp 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
from { opacity: 0; transform: translateY(28px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* ─── HEADER ─── */
|
||||
.card-header-area {
|
||||
text-align: center;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.badge-pill {
|
||||
display: inline-block;
|
||||
background: rgba(255,255,255,0.18);
|
||||
backdrop-filter: blur(6px);
|
||||
border: 1px solid rgba(255,255,255,0.28);
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2px;
|
||||
text-transform: uppercase;
|
||||
padding: 5px 14px;
|
||||
border-radius: 99px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
color: #ffffff;
|
||||
font-size: 20px;
|
||||
font-weight: 800;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
color: rgba(255,255,255,0.70);
|
||||
font-size: 12.5px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ─── ALERTS ─── */
|
||||
.alert {
|
||||
border-radius: 10px;
|
||||
font-size: 13px;
|
||||
padding: 10px 14px;
|
||||
margin-bottom: 16px;
|
||||
border: none;
|
||||
}
|
||||
.alert-danger { background: rgba(220,53,69,0.85); color: #fff; }
|
||||
.alert-success { background: rgba(25,135,84,0.85); color: #fff; }
|
||||
|
||||
/* ─── FORM GROUP ─── */
|
||||
.form-group {
|
||||
margin-bottom: 18px;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
display: block;
|
||||
color: rgba(255,255,255,0.88);
|
||||
font-size: 12.5px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 7px;
|
||||
letter-spacing: 0.4px;
|
||||
}
|
||||
|
||||
.input-wrap {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.input-wrap .icon {
|
||||
position: absolute;
|
||||
left: 13px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: rgba(0,0,0,0.3);
|
||||
font-size: 15px;
|
||||
pointer-events: none;
|
||||
z-index: 2;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 11px 12px 11px 38px;
|
||||
border-radius: 10px;
|
||||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 16px; /* cegah auto-zoom iOS */
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
letter-spacing: 2px; /* biar kode OTP lebih mudah dibaca */
|
||||
}
|
||||
|
||||
.form-control::placeholder {
|
||||
color: #aab7aa;
|
||||
letter-spacing: normal;
|
||||
}
|
||||
|
||||
.form-control:focus {
|
||||
border-color: rgba(255,255,255,0.6);
|
||||
box-shadow: 0 0 0 3px rgba(255,255,255,0.18);
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
/* ─── BUTTON ─── */
|
||||
.btn-login {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 13px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
color: #1a6e3a;
|
||||
font-size: 14.5px;
|
||||
font-weight: 800;
|
||||
font-family: inherit;
|
||||
letter-spacing: 0.5px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
margin-top: 4px;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.btn-login:hover {
|
||||
background: #f0faf4;
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-login:active {
|
||||
transform: translateY(0);
|
||||
background: #e4f5ec;
|
||||
}
|
||||
|
||||
/* ─── LINKS ─── */
|
||||
.links-area {
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
color: rgba(255,255,255,0.75);
|
||||
font-size: 12.5px;
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
}
|
||||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
/* ─── RESPONSIVE: Tablet ─── */
|
||||
@media screen and (min-width: 769px) and (max-width: 1024px) {
|
||||
.auth-left { width: 40%; }
|
||||
.auth-right { width: 60%; padding: 40px 28px; }
|
||||
.auth-left img { width: 80%; }
|
||||
}
|
||||
|
||||
/* ══════════════════════════════════════════
|
||||
MOBILE ≤ 768px — LAYOUT: atas-bawah
|
||||
══════════════════════════════════════════ */
|
||||
@media screen and (max-width: 768px) {
|
||||
|
||||
.auth-wrapper {
|
||||
flex-direction: column !important;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Panel Atas: Logo ── */
|
||||
.auth-left {
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
min-height: unset !important;
|
||||
padding: 44px 24px 36px !important;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(160deg, #ffffff 60%, #f0faf5 100%) !important;
|
||||
order: 0;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 50% !important;
|
||||
max-width: 185px !important;
|
||||
animation: none !important;
|
||||
filter: drop-shadow(0 8px 20px rgba(15,80,40,0.14)) !important;
|
||||
}
|
||||
|
||||
.brand-tagline {
|
||||
margin-top: 12px !important;
|
||||
font-size: 10px !important;
|
||||
letter-spacing: 2.5px !important;
|
||||
}
|
||||
|
||||
.deco-circle.c1,
|
||||
.deco-circle.c2 { display: none !important; }
|
||||
.deco-circle.c3 { width: 90px !important; height: 90px !important; top: 12px !important; left: 12px !important; }
|
||||
|
||||
/* ── Panel Bawah: Form ── */
|
||||
.auth-right {
|
||||
width: 100% !important;
|
||||
flex: 1 !important;
|
||||
padding: 36px 24px 52px !important;
|
||||
align-items: flex-start !important;
|
||||
justify-content: center !important;
|
||||
border-radius: 28px 28px 0 0 !important;
|
||||
margin-top: -24px !important;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.auth-card {
|
||||
max-width: 100% !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.card-header-area {
|
||||
margin-bottom: 24px !important;
|
||||
}
|
||||
|
||||
.badge-pill {
|
||||
font-size: 10px !important;
|
||||
padding: 4px 12px !important;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
font-size: 18px !important;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 15px !important;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
padding: 13px 12px 13px 40px !important;
|
||||
border-radius: 12px !important;
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.btn-login {
|
||||
padding: 15px !important;
|
||||
font-size: 15px !important;
|
||||
border-radius: 12px !important;
|
||||
margin-top: 8px !important;
|
||||
}
|
||||
|
||||
.links-area {
|
||||
margin-top: 22px !important;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
font-size: 13px !important;
|
||||
padding: 4px 0 !important;
|
||||
display: inline-block !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* ─── Small Mobile ≤ 390px ─── */
|
||||
@media screen and (max-width: 390px) {
|
||||
.auth-left { padding: 36px 16px 28px !important; }
|
||||
.auth-left img { width: 46% !important; max-width: 160px !important; }
|
||||
.auth-right { padding: 28px 20px 44px !important; }
|
||||
}
|
||||
|
||||
/* ─── Landscape Mobile ─── */
|
||||
@media screen and (max-width: 768px) and (orientation: landscape) {
|
||||
.auth-left {
|
||||
padding: 18px 24px 16px !important;
|
||||
}
|
||||
.auth-left img { width: 26% !important; max-width: 100px !important; }
|
||||
.brand-tagline { margin-top: 6px !important; font-size: 9px !important; }
|
||||
.auth-right {
|
||||
padding: 22px 24px 32px !important;
|
||||
border-radius: 20px 20px 0 0 !important;
|
||||
margin-top: -10px !important;
|
||||
}
|
||||
.card-header-area { margin-bottom: 16px !important; }
|
||||
.form-group { margin-bottom: 10px !important; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- TOP / LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
<div class="deco-circle c3"></div>
|
||||
<img src="{{ asset('tunggal.png') }}" alt="Green View Logo">
|
||||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- BOTTOM / RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
<div class="auth-card">
|
||||
|
||||
<div class="card-header-area">
|
||||
<div class="badge-pill">🔐 Verifikasi</div>
|
||||
<h4>Verifikasi OTP</h4>
|
||||
<p>Masukkan kode OTP yang dikirim ke email Anda</p>
|
||||
</div>
|
||||
|
||||
@if(session('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('password.verifyOtp') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group">
|
||||
<label>Kode OTP</label>
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🔑</span>
|
||||
<input
|
||||
type="text"
|
||||
name="otp"
|
||||
class="form-control"
|
||||
placeholder="Masukkan kode OTP"
|
||||
required
|
||||
maxlength="6"
|
||||
autocomplete="one-time-code"
|
||||
inputmode="numeric"
|
||||
pattern="[0-9]*"
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-login">Verifikasi</button>
|
||||
|
||||
</form>
|
||||
|
||||
<div class="links-area">
|
||||
<a href="{{ route('login') }}">← Kembali ke Login</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,372 @@
|
|||
@extends('layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
background: #0a3d1e;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL (Logo) ─── */
|
||||
.auth-left {
|
||||
width: 55%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.auth-left::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background:
|
||||
radial-gradient(ellipse 60% 50% at 80% 110%, rgba(25,148,84,0.10) 0%, transparent 70%),
|
||||
radial-gradient(ellipse 50% 40% at -10% -10%, rgba(16,110,54,0.08) 0%, transparent 70%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 18px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
letter-spacing: 3px;
|
||||
text-transform: uppercase;
|
||||
color: #2d7a4f;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 68%;
|
||||
max-width: 340px;
|
||||
object-fit: contain;
|
||||
position: relative;
|
||||
filter: drop-shadow(0 12px 32px rgba(15,80,40,0.18));
|
||||
animation: floatLogo 5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes floatLogo {
|
||||
0%, 100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-10px); }
|
||||
}
|
||||
|
||||
.deco-circle {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
border: 1.5px solid rgba(25,148,84,0.12);
|
||||
pointer-events: none;
|
||||
}
|
||||
.deco-circle.c1 { width: 420px; height: 420px; bottom: -120px; right: -120px; }
|
||||
.deco-circle.c2 { width: 260px; height: 260px; bottom: -60px; right: -60px; }
|
||||
.deco-circle.c3 { width: 160px; height: 160px; top: 30px; left: 30px; }
|
||||
|
||||
/* ─── RIGHT PANEL (Form) ─── */
|
||||
.auth-right {
|
||||
width: 45%;
|
||||
background: linear-gradient(145deg, #1a6e3a 0%, #2e9e58 45%, #1a8040 100%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 48px 40px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.auth-right::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-right::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 340px; height: 340px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.07) 0%, transparent 70%);
|
||||
bottom: -80px; right: -80px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.blob-top {
|
||||
position: absolute;
|
||||
width: 240px; height: 240px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);
|
||||
top: -60px; left: -60px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* ─── CARD ─── */
|
||||
.auth-card {
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
animation: slideUp 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
from { opacity: 0; transform: translateY(28px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* ─── HEADER ─── */
|
||||
.card-header-area {
|
||||
text-align: center;
|
||||
margin-bottom: 26px;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
display: inline-block;
|
||||
background: rgba(255,255,255,0.15);
|
||||
backdrop-filter: blur(6px);
|
||||
border: 1px solid rgba(255,255,255,0.25);
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2px;
|
||||
text-transform: uppercase;
|
||||
padding: 5px 14px;
|
||||
border-radius: 99px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
color: #ffffff;
|
||||
font-size: 18px;
|
||||
font-weight: 800;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
color: rgba(255,255,255,0.65);
|
||||
font-size: 12.5px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ─── ALERTS ─── */
|
||||
.alert {
|
||||
border-radius: 10px;
|
||||
font-size: 13px;
|
||||
padding: 10px 14px;
|
||||
margin-bottom: 16px;
|
||||
border: none;
|
||||
}
|
||||
.alert-danger { background: rgba(220,53,69,0.85); color: #fff; }
|
||||
.alert-success { background: rgba(25,135,84,0.85); color: #fff; }
|
||||
|
||||
/* ─── FORM ─── */
|
||||
.form-group {
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.input-wrap {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.input-wrap .icon {
|
||||
position: absolute;
|
||||
left: 13px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
font-size: 14px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
width: 100%;
|
||||
padding: 11px 12px 11px 38px;
|
||||
border-radius: 10px;
|
||||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 14px;
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
|
||||
.form-control:focus {
|
||||
border-color: rgba(255,255,255,0.6);
|
||||
box-shadow: 0 0 0 3px rgba(255,255,255,0.18);
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.toggle-eye {
|
||||
position: absolute;
|
||||
right: 12px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
cursor: pointer;
|
||||
color: #888;
|
||||
font-size: 14px;
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/* ─── BUTTON ─── */
|
||||
.btn-register {
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
color: #1a6e3a;
|
||||
font-size: 14.5px;
|
||||
font-weight: 800;
|
||||
font-family: inherit;
|
||||
letter-spacing: 0.5px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
margin-top: 6px;
|
||||
}
|
||||
|
||||
.btn-register:hover {
|
||||
background: #f0faf4;
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-register:active { transform: translateY(0); }
|
||||
|
||||
/* ─── LINKS ─── */
|
||||
.links-area {
|
||||
text-align: center;
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
color: rgba(255,255,255,0.75);
|
||||
font-size: 12.5px;
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
}
|
||||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
/* ─── RESPONSIVE ─── */
|
||||
@media (max-width: 768px) {
|
||||
.auth-left { display: none; }
|
||||
.auth-right { width: 100%; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
<div class="deco-circle c3"></div>
|
||||
<img src="{{ asset('tunggal.png') }}" alt="Green View Logo">
|
||||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
<div class="auth-card">
|
||||
|
||||
<div class="card-header-area">
|
||||
<div class="badge-pill">✨ Daftar Akun</div>
|
||||
<h4>PT Tunggal Griya Sakinah<br>(GREEN VIEW)</h4>
|
||||
<p>Buat akun penghuni baru</p>
|
||||
</div>
|
||||
|
||||
@if(session('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
@if($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
@foreach($errors->all() as $error)
|
||||
<div>{{ $error }}</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('register.proses') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-wrap">
|
||||
<span class="icon">👤</span>
|
||||
<input name="name" class="form-control" placeholder="Nama Lengkap" value="{{ old('name') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🪪</span>
|
||||
<input name="username" class="form-control" placeholder="Username" value="{{ old('username') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-wrap">
|
||||
<span class="icon">✉️</span>
|
||||
<input type="email" name="email" class="form-control" placeholder="Email" value="{{ old('email') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🔒</span>
|
||||
<input type="password" name="password" id="password" class="form-control" placeholder="Password" required>
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword()">👁</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-register">
|
||||
Daftar Sekarang
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="links-area">
|
||||
<a href="{{ route('login') }}">Sudah punya akun? Login di sini</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function togglePassword() {
|
||||
const p = document.getElementById("password");
|
||||
p.type = p.type === "password" ? "text" : "password";
|
||||
}
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,510 @@
|
|||
@extends('layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
html, body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
min-height: 100%;
|
||||
background: #0a3d1e;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL (Logo) ─── */
|
||||
.auth-left {
|
||||
width: 55%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.auth-left::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background:
|
||||
radial-gradient(ellipse 60% 50% at 80% 110%, rgba(25,148,84,0.10) 0%, transparent 70%),
|
||||
radial-gradient(ellipse 50% 40% at -10% -10%, rgba(16,110,54,0.08) 0%, transparent 70%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 18px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
letter-spacing: 3px;
|
||||
text-transform: uppercase;
|
||||
color: #2d7a4f;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 68%;
|
||||
max-width: 340px;
|
||||
object-fit: contain;
|
||||
position: relative;
|
||||
filter: drop-shadow(0 12px 32px rgba(15,80,40,0.18));
|
||||
animation: floatLogo 5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes floatLogo {
|
||||
0%, 100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-10px); }
|
||||
}
|
||||
|
||||
.deco-circle {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
border: 1.5px solid rgba(25,148,84,0.12);
|
||||
pointer-events: none;
|
||||
}
|
||||
.deco-circle.c1 { width: 420px; height: 420px; bottom: -120px; right: -120px; }
|
||||
.deco-circle.c2 { width: 260px; height: 260px; bottom: -60px; right: -60px; }
|
||||
.deco-circle.c3 { width: 160px; height: 160px; top: 30px; left: 30px; }
|
||||
|
||||
/* ─── RIGHT PANEL (Form) ─── */
|
||||
.auth-right {
|
||||
width: 45%;
|
||||
background: linear-gradient(145deg, #1a6e3a 0%, #2e9e58 45%, #1a8040 100%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 48px 40px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.auth-right::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-right::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 340px; height: 340px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.07) 0%, transparent 70%);
|
||||
bottom: -80px; right: -80px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.blob-top {
|
||||
position: absolute;
|
||||
width: 240px; height: 240px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);
|
||||
top: -60px; left: -60px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* ─── CARD ─── */
|
||||
.auth-card {
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
animation: slideUp 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
from { opacity: 0; transform: translateY(28px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* ─── HEADER ─── */
|
||||
.card-header-area {
|
||||
text-align: center;
|
||||
margin-bottom: 26px;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
display: inline-block;
|
||||
background: rgba(255,255,255,0.15);
|
||||
backdrop-filter: blur(6px);
|
||||
border: 1px solid rgba(255,255,255,0.25);
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2px;
|
||||
text-transform: uppercase;
|
||||
padding: 5px 14px;
|
||||
border-radius: 99px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
color: #ffffff;
|
||||
font-size: 18px;
|
||||
font-weight: 800;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
color: rgba(255,255,255,0.65);
|
||||
font-size: 12.5px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ─── ALERTS ─── */
|
||||
.alert {
|
||||
border-radius: 10px;
|
||||
font-size: 13px;
|
||||
padding: 10px 14px;
|
||||
margin-bottom: 16px;
|
||||
border: none;
|
||||
}
|
||||
.alert-danger { background: rgba(220,53,69,0.85); color: #fff; }
|
||||
.alert-success { background: rgba(25,135,84,0.85); color: #fff; }
|
||||
|
||||
/* ─── FORM ─── */
|
||||
.form-group {
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.input-wrap {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.input-wrap .icon {
|
||||
position: absolute;
|
||||
left: 13px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
font-size: 14px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
width: 100%;
|
||||
padding: 11px 12px 11px 38px;
|
||||
border-radius: 10px;
|
||||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 16px; /* 16px cegah auto-zoom iOS */
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
|
||||
.form-control:focus {
|
||||
border-color: rgba(255,255,255,0.6);
|
||||
box-shadow: 0 0 0 3px rgba(255,255,255,0.18);
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.toggle-eye {
|
||||
position: absolute;
|
||||
right: 12px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
cursor: pointer;
|
||||
color: #888;
|
||||
font-size: 14px;
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
line-height: 1;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* ─── BUTTON ─── */
|
||||
.btn-register {
|
||||
width: 100%;
|
||||
padding: 13px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
color: #1a6e3a;
|
||||
font-size: 14.5px;
|
||||
font-weight: 800;
|
||||
font-family: inherit;
|
||||
letter-spacing: 0.5px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
margin-top: 6px;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.btn-register:hover {
|
||||
background: #f0faf4;
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-register:active {
|
||||
transform: translateY(0);
|
||||
background: #e4f5ec;
|
||||
}
|
||||
|
||||
/* ─── LINKS ─── */
|
||||
.links-area {
|
||||
text-align: center;
|
||||
margin-top: 18px;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
color: rgba(255,255,255,0.75);
|
||||
font-size: 12.5px;
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
}
|
||||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
/* ─── RESPONSIVE: Tablet ─── */
|
||||
@media screen and (min-width: 769px) and (max-width: 1024px) {
|
||||
.auth-left { width: 40%; }
|
||||
.auth-right { width: 60%; padding: 40px 28px; }
|
||||
.auth-left img { width: 80%; }
|
||||
}
|
||||
|
||||
/* ══════════════════════════════════════════
|
||||
MOBILE ≤ 768px — LAYOUT: atas-bawah
|
||||
══════════════════════════════════════════ */
|
||||
@media screen and (max-width: 768px) {
|
||||
|
||||
.auth-wrapper {
|
||||
flex-direction: column !important;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Panel Atas: Logo ── */
|
||||
.auth-left {
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
min-height: unset !important;
|
||||
padding: 40px 24px 32px !important;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(160deg, #ffffff 60%, #f0faf5 100%) !important;
|
||||
order: 0;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 50% !important;
|
||||
max-width: 185px !important;
|
||||
animation: none !important;
|
||||
filter: drop-shadow(0 8px 20px rgba(15,80,40,0.14)) !important;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 12px !important;
|
||||
font-size: 10px !important;
|
||||
letter-spacing: 2.5px !important;
|
||||
}
|
||||
|
||||
.deco-circle.c1,
|
||||
.deco-circle.c2 { display: none !important; }
|
||||
.deco-circle.c3 { width: 90px !important; height: 90px !important; top: 12px !important; left: 12px !important; }
|
||||
|
||||
/* ── Panel Bawah: Form ── */
|
||||
.auth-right {
|
||||
width: 100% !important;
|
||||
flex: 1 !important;
|
||||
padding: 32px 24px 48px !important;
|
||||
align-items: flex-start !important;
|
||||
justify-content: center !important;
|
||||
border-radius: 28px 28px 0 0 !important;
|
||||
margin-top: -24px !important;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.auth-card {
|
||||
max-width: 100% !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.card-header-area {
|
||||
margin-bottom: 20px !important;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
font-size: 10px !important;
|
||||
padding: 4px 12px !important;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 12px !important;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
padding: 12px 12px 12px 40px !important;
|
||||
border-radius: 12px !important;
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.btn-register {
|
||||
padding: 14px !important;
|
||||
font-size: 15px !important;
|
||||
border-radius: 12px !important;
|
||||
margin-top: 8px !important;
|
||||
}
|
||||
|
||||
.links-area {
|
||||
margin-top: 18px !important;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
font-size: 13px !important;
|
||||
padding: 4px 0 !important;
|
||||
display: inline-block !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* ─── Small Mobile ≤ 390px ─── */
|
||||
@media screen and (max-width: 390px) {
|
||||
.auth-left { padding: 32px 16px 24px !important; }
|
||||
.auth-left img { width: 46% !important; max-width: 160px !important; }
|
||||
.auth-right { padding: 26px 20px 40px !important; }
|
||||
}
|
||||
|
||||
/* ─── Landscape Mobile ─── */
|
||||
@media screen and (max-width: 768px) and (orientation: landscape) {
|
||||
.auth-left {
|
||||
padding: 18px 24px 16px !important;
|
||||
}
|
||||
.auth-left img { width: 26% !important; max-width: 100px !important; }
|
||||
.auth-left .brand-tagline { margin-top: 6px !important; font-size: 9px !important; }
|
||||
.auth-right {
|
||||
padding: 22px 24px 30px !important;
|
||||
border-radius: 20px 20px 0 0 !important;
|
||||
margin-top: -10px !important;
|
||||
}
|
||||
.card-header-area { margin-bottom: 12px !important; }
|
||||
.form-group { margin-bottom: 9px !important; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- TOP / LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
<div class="deco-circle c3"></div>
|
||||
<img src="{{ asset('tunggal.png') }}" alt="Green View Logo">
|
||||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- BOTTOM / RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
<div class="auth-card">
|
||||
|
||||
<div class="card-header-area">
|
||||
<div class="badge-pill">✨ Daftar Akun</div>
|
||||
<h4>PT Tunggal Griya Sakinah<br>(GREEN VIEW)</h4>
|
||||
<p>Buat akun penghuni baru</p>
|
||||
</div>
|
||||
|
||||
@if(session('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
@if($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
@foreach($errors->all() as $error)
|
||||
<div>{{ $error }}</div>
|
||||
@endforeach
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('register.proses') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-wrap">
|
||||
<span class="icon">👤</span>
|
||||
<input name="name" class="form-control" placeholder="Nama Lengkap" value="{{ old('name') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🪪</span>
|
||||
<input name="username" class="form-control" placeholder="Username" value="{{ old('username') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-wrap">
|
||||
<span class="icon">✉️</span>
|
||||
<input type="email" name="email" class="form-control" placeholder="Email" value="{{ old('email') }}" required>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🔒</span>
|
||||
<input type="password" name="password" id="password" class="form-control" placeholder="Password" required autocomplete="new-password">
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword()" aria-label="Tampilkan/sembunyikan password">👁</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-register">
|
||||
Daftar Sekarang
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="links-area">
|
||||
<a href="{{ route('login') }}">Sudah punya akun? Login di sini</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function togglePassword() {
|
||||
const p = document.getElementById("password");
|
||||
p.type = p.type === "password" ? "text" : "password";
|
||||
}
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,365 @@
|
|||
@extends('layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
background: #0a3d1e;
|
||||
}
|
||||
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL (Logo) ─── */
|
||||
.auth-left {
|
||||
width: 55%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.auth-left::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background:
|
||||
radial-gradient(ellipse 60% 50% at 80% 110%, rgba(25,148,84,0.10) 0%, transparent 70%),
|
||||
radial-gradient(ellipse 50% 40% at -10% -10%, rgba(16,110,54,0.08) 0%, transparent 70%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 18px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
letter-spacing: 3px;
|
||||
text-transform: uppercase;
|
||||
color: #2d7a4f;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 68%;
|
||||
max-width: 340px;
|
||||
object-fit: contain;
|
||||
position: relative;
|
||||
filter: drop-shadow(0 12px 32px rgba(15,80,40,0.18));
|
||||
animation: floatLogo 5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes floatLogo {
|
||||
0%, 100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-10px); }
|
||||
}
|
||||
|
||||
.deco-circle {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
border: 1.5px solid rgba(25,148,84,0.12);
|
||||
pointer-events: none;
|
||||
}
|
||||
.deco-circle.c1 { width: 420px; height: 420px; bottom: -120px; right: -120px; }
|
||||
.deco-circle.c2 { width: 260px; height: 260px; bottom: -60px; right: -60px; }
|
||||
.deco-circle.c3 { width: 160px; height: 160px; top: 30px; left: 30px; }
|
||||
|
||||
/* ─── RIGHT PANEL (Form) ─── */
|
||||
.auth-right {
|
||||
width: 45%;
|
||||
background: linear-gradient(145deg, #1a6e3a 0%, #2e9e58 45%, #1a8040 100%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 48px 40px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.auth-right::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-right::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 340px; height: 340px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.07) 0%, transparent 70%);
|
||||
bottom: -80px; right: -80px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.blob-top {
|
||||
position: absolute;
|
||||
width: 240px; height: 240px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);
|
||||
top: -60px; left: -60px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* ─── CARD ─── */
|
||||
.auth-card {
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
animation: slideUp 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
from { opacity: 0; transform: translateY(28px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* ─── HEADER ─── */
|
||||
.card-header-area {
|
||||
text-align: center;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
display: inline-block;
|
||||
background: rgba(255,255,255,0.15);
|
||||
backdrop-filter: blur(6px);
|
||||
border: 1px solid rgba(255,255,255,0.25);
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2px;
|
||||
text-transform: uppercase;
|
||||
padding: 5px 14px;
|
||||
border-radius: 99px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
color: #ffffff;
|
||||
font-size: 18px;
|
||||
font-weight: 800;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
color: rgba(255,255,255,0.65);
|
||||
font-size: 12.5px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ─── ALERTS ─── */
|
||||
.alert {
|
||||
border-radius: 10px;
|
||||
font-size: 13px;
|
||||
padding: 10px 14px;
|
||||
margin-bottom: 16px;
|
||||
border: none;
|
||||
}
|
||||
.alert-danger { background: rgba(220,53,69,0.85); color: #fff; }
|
||||
.alert-success { background: rgba(25,135,84,0.85); color: #fff; }
|
||||
|
||||
/* ─── FORM GROUP ─── */
|
||||
.form-group {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
display: block;
|
||||
color: rgba(255,255,255,0.85);
|
||||
font-size: 12.5px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 7px;
|
||||
letter-spacing: 0.4px;
|
||||
}
|
||||
|
||||
.input-wrap {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.input-wrap .icon {
|
||||
position: absolute;
|
||||
left: 13px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: rgba(0,0,0,0.3);
|
||||
font-size: 15px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
width: 100%;
|
||||
padding: 11px 12px 11px 38px;
|
||||
border-radius: 10px;
|
||||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 14px;
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
|
||||
.form-control:focus {
|
||||
border-color: rgba(255,255,255,0.6);
|
||||
box-shadow: 0 0 0 3px rgba(255,255,255,0.18);
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.toggle-eye {
|
||||
position: absolute;
|
||||
right: 12px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
cursor: pointer;
|
||||
color: #888;
|
||||
font-size: 15px;
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
/* ─── SUBMIT BUTTON ─── */
|
||||
.btn-login {
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
color: #1a6e3a;
|
||||
font-size: 14.5px;
|
||||
font-weight: 800;
|
||||
font-family: inherit;
|
||||
letter-spacing: 0.5px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
margin-top: 4px;
|
||||
}
|
||||
|
||||
.btn-login:hover {
|
||||
background: #f0faf4;
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-login:active { transform: translateY(0); }
|
||||
|
||||
/* ─── BACK LINK ─── */
|
||||
.links-area {
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
color: rgba(255,255,255,0.75);
|
||||
font-size: 12.5px;
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
}
|
||||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
/* ─── RESPONSIVE ─── */
|
||||
@media (max-width: 768px) {
|
||||
.auth-left { display: none; }
|
||||
.auth-right { width: 100%; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
<div class="deco-circle c3"></div>
|
||||
<img src="{{ asset('tunggal.png') }}" alt="Green View Logo">
|
||||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
<div class="auth-card">
|
||||
|
||||
<div class="card-header-area">
|
||||
<div class="badge-pill">🏡 Real Estate</div>
|
||||
<h4>PT Tunggal Griya Sakinah<br>(GREEN VIEW)</h4>
|
||||
<p>Reset Password</p>
|
||||
</div>
|
||||
|
||||
@if(session('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
{{ $errors->first() }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('password.update') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group">
|
||||
<label>Password Baru</label>
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🔒</span>
|
||||
<input type="password" name="password" id="password" class="form-control"
|
||||
placeholder="Masukkan password baru" required>
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword('password', this)">👁</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Konfirmasi Password</label>
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🔒</span>
|
||||
<input type="password" name="password_confirmation" id="password_confirmation"
|
||||
class="form-control" placeholder="Ulangi password baru" required>
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword('password_confirmation', this)">👁</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-login">
|
||||
Reset Password
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function togglePassword(id, btn) {
|
||||
const input = document.getElementById(id);
|
||||
input.type = input.type === 'password' ? 'text' : 'password';
|
||||
}
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,514 @@
|
|||
@extends('layouts.auth')
|
||||
|
||||
@section('content')
|
||||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
html, body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
min-height: 100%;
|
||||
background: #0a3d1e;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
flex-direction: row;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL (Logo) ─── */
|
||||
.auth-left {
|
||||
width: 55%;
|
||||
position: relative;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
overflow: hidden;
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.auth-left::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background:
|
||||
radial-gradient(ellipse 60% 50% at 80% 110%, rgba(25,148,84,0.10) 0%, transparent 70%),
|
||||
radial-gradient(ellipse 50% 40% at -10% -10%, rgba(16,110,54,0.08) 0%, transparent 70%);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 18px;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
letter-spacing: 3px;
|
||||
text-transform: uppercase;
|
||||
color: #2d7a4f;
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 68%;
|
||||
max-width: 340px;
|
||||
object-fit: contain;
|
||||
position: relative;
|
||||
filter: drop-shadow(0 12px 32px rgba(15,80,40,0.18));
|
||||
animation: floatLogo 5s ease-in-out infinite;
|
||||
}
|
||||
|
||||
@keyframes floatLogo {
|
||||
0%, 100% { transform: translateY(0); }
|
||||
50% { transform: translateY(-10px); }
|
||||
}
|
||||
|
||||
.deco-circle {
|
||||
position: absolute;
|
||||
border-radius: 50%;
|
||||
border: 1.5px solid rgba(25,148,84,0.12);
|
||||
pointer-events: none;
|
||||
}
|
||||
.deco-circle.c1 { width: 420px; height: 420px; bottom: -120px; right: -120px; }
|
||||
.deco-circle.c2 { width: 260px; height: 260px; bottom: -60px; right: -60px; }
|
||||
.deco-circle.c3 { width: 160px; height: 160px; top: 30px; left: 30px; }
|
||||
|
||||
/* ─── RIGHT PANEL (Form) ─── */
|
||||
.auth-right {
|
||||
width: 45%;
|
||||
background: linear-gradient(145deg, #1a6e3a 0%, #2e9e58 45%, #1a8040 100%);
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: 48px 40px;
|
||||
position: relative;
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.auth-right::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='300' height='300'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.75' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='300' height='300' filter='url(%23n)' opacity='0.035'/%3E%3C/svg%3E");
|
||||
opacity: 0.5;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.auth-right::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
width: 340px; height: 340px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.07) 0%, transparent 70%);
|
||||
bottom: -80px; right: -80px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.blob-top {
|
||||
position: absolute;
|
||||
width: 240px; height: 240px;
|
||||
background: radial-gradient(circle, rgba(255,255,255,0.06) 0%, transparent 70%);
|
||||
top: -60px; left: -60px;
|
||||
border-radius: 50%;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* ─── CARD ─── */
|
||||
.auth-card {
|
||||
width: 100%;
|
||||
max-width: 360px;
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
animation: slideUp 0.55s cubic-bezier(0.22, 1, 0.36, 1) both;
|
||||
}
|
||||
|
||||
@keyframes slideUp {
|
||||
from { opacity: 0; transform: translateY(28px); }
|
||||
to { opacity: 1; transform: translateY(0); }
|
||||
}
|
||||
|
||||
/* ─── HEADER ─── */
|
||||
.card-header-area {
|
||||
text-align: center;
|
||||
margin-bottom: 32px;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
display: inline-block;
|
||||
background: rgba(255,255,255,0.15);
|
||||
backdrop-filter: blur(6px);
|
||||
border: 1px solid rgba(255,255,255,0.25);
|
||||
color: #fff;
|
||||
font-size: 11px;
|
||||
font-weight: 700;
|
||||
letter-spacing: 2px;
|
||||
text-transform: uppercase;
|
||||
padding: 5px 14px;
|
||||
border-radius: 99px;
|
||||
margin-bottom: 14px;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
color: #ffffff;
|
||||
font-size: 18px;
|
||||
font-weight: 800;
|
||||
line-height: 1.3;
|
||||
margin-bottom: 6px;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
color: rgba(255,255,255,0.65);
|
||||
font-size: 12.5px;
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
/* ─── ALERTS ─── */
|
||||
.alert {
|
||||
border-radius: 10px;
|
||||
font-size: 13px;
|
||||
padding: 10px 14px;
|
||||
margin-bottom: 16px;
|
||||
border: none;
|
||||
}
|
||||
.alert-danger { background: rgba(220,53,69,0.85); color: #fff; }
|
||||
.alert-success { background: rgba(25,135,84,0.85); color: #fff; }
|
||||
|
||||
/* ─── FORM GROUP ─── */
|
||||
.form-group {
|
||||
margin-bottom: 18px;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
display: block;
|
||||
color: rgba(255,255,255,0.85);
|
||||
font-size: 12.5px;
|
||||
font-weight: 600;
|
||||
margin-bottom: 7px;
|
||||
letter-spacing: 0.4px;
|
||||
}
|
||||
|
||||
.input-wrap {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.input-wrap .icon {
|
||||
position: absolute;
|
||||
left: 13px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: rgba(0,0,0,0.3);
|
||||
font-size: 15px;
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
width: 100%;
|
||||
padding: 11px 42px 11px 38px;
|
||||
border-radius: 10px;
|
||||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 16px; /* cegah auto-zoom iOS */
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
|
||||
.form-control:focus {
|
||||
border-color: rgba(255,255,255,0.6);
|
||||
box-shadow: 0 0 0 3px rgba(255,255,255,0.18);
|
||||
background: #ffffff;
|
||||
}
|
||||
|
||||
.toggle-eye {
|
||||
position: absolute;
|
||||
right: 12px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
cursor: pointer;
|
||||
color: #888;
|
||||
font-size: 15px;
|
||||
background: none;
|
||||
border: none;
|
||||
padding: 0;
|
||||
line-height: 1;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
/* ─── SUBMIT BUTTON ─── */
|
||||
.btn-login {
|
||||
width: 100%;
|
||||
padding: 13px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
color: #1a6e3a;
|
||||
font-size: 14.5px;
|
||||
font-weight: 800;
|
||||
font-family: inherit;
|
||||
letter-spacing: 0.5px;
|
||||
cursor: pointer;
|
||||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
margin-top: 4px;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.btn-login:hover {
|
||||
background: #f0faf4;
|
||||
transform: translateY(-2px);
|
||||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-login:active {
|
||||
transform: translateY(0);
|
||||
background: #e4f5ec;
|
||||
}
|
||||
|
||||
/* ─── BACK LINK ─── */
|
||||
.links-area {
|
||||
text-align: center;
|
||||
margin-top: 20px;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
color: rgba(255,255,255,0.75);
|
||||
font-size: 12.5px;
|
||||
text-decoration: none;
|
||||
transition: color 0.15s;
|
||||
}
|
||||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
/* ─── RESPONSIVE: Tablet ─── */
|
||||
@media screen and (min-width: 769px) and (max-width: 1024px) {
|
||||
.auth-left { width: 40%; }
|
||||
.auth-right { width: 60%; padding: 40px 28px; }
|
||||
.auth-left img { width: 80%; }
|
||||
}
|
||||
|
||||
/* ══════════════════════════════════════════
|
||||
MOBILE ≤ 768px — LAYOUT: atas-bawah
|
||||
══════════════════════════════════════════ */
|
||||
@media screen and (max-width: 768px) {
|
||||
|
||||
.auth-wrapper {
|
||||
flex-direction: column !important;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Panel Atas: Logo ── */
|
||||
.auth-left {
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
min-height: unset !important;
|
||||
padding: 44px 24px 36px !important;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(160deg, #ffffff 60%, #f0faf5 100%) !important;
|
||||
order: 0;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 50% !important;
|
||||
max-width: 185px !important;
|
||||
animation: none !important;
|
||||
filter: drop-shadow(0 8px 20px rgba(15,80,40,0.14)) !important;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 12px !important;
|
||||
font-size: 10px !important;
|
||||
letter-spacing: 2.5px !important;
|
||||
}
|
||||
|
||||
.deco-circle.c1,
|
||||
.deco-circle.c2 { display: none !important; }
|
||||
.deco-circle.c3 { width: 90px !important; height: 90px !important; top: 12px !important; left: 12px !important; }
|
||||
|
||||
/* ── Panel Bawah: Form ── */
|
||||
.auth-right {
|
||||
width: 100% !important;
|
||||
flex: 1 !important;
|
||||
padding: 36px 24px 52px !important;
|
||||
align-items: flex-start !important;
|
||||
justify-content: center !important;
|
||||
border-radius: 28px 28px 0 0 !important;
|
||||
margin-top: -24px !important;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.auth-card {
|
||||
max-width: 100% !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.card-header-area {
|
||||
margin-bottom: 24px !important;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
font-size: 10px !important;
|
||||
padding: 4px 12px !important;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 15px !important;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
padding: 13px 42px 13px 40px !important;
|
||||
border-radius: 12px !important;
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.btn-login {
|
||||
padding: 15px !important;
|
||||
font-size: 15px !important;
|
||||
border-radius: 12px !important;
|
||||
margin-top: 8px !important;
|
||||
}
|
||||
|
||||
.links-area {
|
||||
margin-top: 22px !important;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
font-size: 13px !important;
|
||||
padding: 4px 0 !important;
|
||||
display: inline-block !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* ─── Small Mobile ≤ 390px ─── */
|
||||
@media screen and (max-width: 390px) {
|
||||
.auth-left { padding: 36px 16px 28px !important; }
|
||||
.auth-left img { width: 46% !important; max-width: 160px !important; }
|
||||
.auth-right { padding: 28px 20px 44px !important; }
|
||||
}
|
||||
|
||||
/* ─── Landscape Mobile ─── */
|
||||
@media screen and (max-width: 768px) and (orientation: landscape) {
|
||||
.auth-left {
|
||||
padding: 18px 24px 16px !important;
|
||||
}
|
||||
.auth-left img { width: 26% !important; max-width: 100px !important; }
|
||||
.auth-left .brand-tagline { margin-top: 6px !important; font-size: 9px !important; }
|
||||
.auth-right {
|
||||
padding: 22px 24px 32px !important;
|
||||
border-radius: 20px 20px 0 0 !important;
|
||||
margin-top: -10px !important;
|
||||
}
|
||||
.card-header-area { margin-bottom: 16px !important; }
|
||||
.form-group { margin-bottom: 10px !important; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- TOP / LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
<div class="deco-circle c3"></div>
|
||||
<img src="{{ asset('tunggal.png') }}" alt="Green View Logo">
|
||||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- BOTTOM / RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
<div class="auth-card">
|
||||
|
||||
<div class="card-header-area">
|
||||
<div class="badge-pill">🏡 Real Estate</div>
|
||||
<h4>PT Tunggal Griya Sakinah<br>(GREEN VIEW)</h4>
|
||||
<p>Reset Password</p>
|
||||
</div>
|
||||
|
||||
@if(session('error'))
|
||||
<div class="alert alert-danger">{{ session('error') }}</div>
|
||||
@endif
|
||||
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success">{{ session('success') }}</div>
|
||||
@endif
|
||||
|
||||
@if ($errors->any())
|
||||
<div class="alert alert-danger">
|
||||
{{ $errors->first() }}
|
||||
</div>
|
||||
@endif
|
||||
|
||||
<form method="POST" action="{{ route('password.update') }}">
|
||||
@csrf
|
||||
|
||||
<div class="form-group">
|
||||
<label>Password Baru</label>
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🔒</span>
|
||||
<input type="password" name="password" id="password" class="form-control"
|
||||
placeholder="Masukkan password baru" required autocomplete="new-password">
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword('password', this)" aria-label="Tampilkan/sembunyikan password">👁</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group">
|
||||
<label>Konfirmasi Password</label>
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🔒</span>
|
||||
<input type="password" name="password_confirmation" id="password_confirmation"
|
||||
class="form-control" placeholder="Ulangi password baru" required autocomplete="new-password">
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword('password_confirmation', this)" aria-label="Tampilkan/sembunyikan password">👁</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<button type="submit" class="btn-login">
|
||||
Reset Password
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="links-area">
|
||||
<a href="{{ route('login') }}">← Kembali ke Login</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
<script>
|
||||
function togglePassword(id, btn) {
|
||||
const input = document.getElementById(id);
|
||||
input.type = input.type === 'password' ? 'text' : 'password';
|
||||
}
|
||||
</script>
|
||||
|
||||
@endsection
|
||||
|
|
@ -0,0 +1,813 @@
|
|||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
|
||||
<head>
|
||||
|
||||
<meta charset="utf-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="description" content="">
|
||||
<meta name="author" content="">
|
||||
|
||||
<title>Green View</title>
|
||||
|
||||
<!-- Custom fonts for this template-->
|
||||
<link href="{{ asset('/') }}sbadmin2/vendor/fontawesome-free/css/all.min.css" rel="stylesheet" type="text/css">
|
||||
<link
|
||||
href="{{ asset('/') }}sbadmin2/https://fonts.googleapis.com/css?family=Nunito:200,200i,300,300i,400,400i,600,600i,700,700i,800,800i,900,900i"
|
||||
rel="stylesheet">
|
||||
|
||||
<!-- Custom styles for this template-->
|
||||
<link href="{{ asset('/') }}sbadmin2/css/sb-admin-2.min.css" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.datatables.net/1.13.6/css/jquery.dataTables.min.css">
|
||||
|
||||
<link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.0/css/all.min.css" rel="stylesheet">
|
||||
|
||||
<link rel="stylesheet" href="https://cdn.datatables.net/1.13.6/css/dataTables.bootstrap4.min.css">
|
||||
@stack('styles')
|
||||
<style>
|
||||
.navbar-nav .nav-link {
|
||||
transition: 0.3s;
|
||||
}
|
||||
|
||||
.navbar-nav .nav-link:hover {
|
||||
color: #198754 !important;
|
||||
transform: translateY(-2px);
|
||||
}
|
||||
|
||||
.kavling-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(10, 1fr);
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.kavling {
|
||||
padding: 15px;
|
||||
text-align: center;
|
||||
border-radius: 8px;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.kosong {
|
||||
background: #28a745;
|
||||
}
|
||||
|
||||
.kosong:hover {
|
||||
background: #218838;
|
||||
}
|
||||
|
||||
.terisi {
|
||||
background: #dc3545;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
|
||||
.disabled {
|
||||
background: #ccc;
|
||||
}
|
||||
|
||||
.kavling {
|
||||
padding: 15px;
|
||||
border-radius: 8px;
|
||||
text-align: center;
|
||||
font-weight: bold;
|
||||
color: white;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.kosong {
|
||||
background: #28a745;
|
||||
}
|
||||
|
||||
.kosong:hover {
|
||||
background: #218838;
|
||||
}
|
||||
|
||||
.terisi {
|
||||
background: #dc3545;
|
||||
cursor: not-allowed;
|
||||
}
|
||||
</style>
|
||||
|
||||
</head>
|
||||
|
||||
<body id="page-top" class="user-mode">
|
||||
@stack('scripts')
|
||||
@php
|
||||
$isExpired = false;
|
||||
|
||||
if (auth()->check()) {
|
||||
$penghuni = \App\Models\Penghuni::where('email', auth()->user()->email)->first();
|
||||
|
||||
if ($penghuni && $penghuni->status_huni == 'Kontrak' && $penghuni->tanggal_keluar) {
|
||||
$isExpired = now()->gt(\Carbon\Carbon::parse($penghuni->tanggal_keluar));
|
||||
}
|
||||
}
|
||||
@endphp
|
||||
{{-- 🔔 NOTIFIKASI REALTIME --}}
|
||||
@if(session('success'))
|
||||
<div class="alert alert-success alert-dismissible fade show position-fixed"
|
||||
style="top:20px; right:20px; z-index:9999; min-width:250px;">
|
||||
{{ session('success') }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
@if(session('error'))
|
||||
<div class="alert alert-danger alert-dismissible fade show position-fixed"
|
||||
style="top:20px; right:20px; z-index:9999; min-width:250px;">
|
||||
{{ session('error') }}
|
||||
<button type="button" class="close" data-dismiss="alert">×</button>
|
||||
</div>
|
||||
@endif
|
||||
|
||||
|
||||
<!-- Page Wrapper -->
|
||||
<div id="wrapper">
|
||||
|
||||
@if(auth()->check())
|
||||
|
||||
{{-- 🔥 ADMIN --}}
|
||||
@if(auth()->user()->role == 'admin')
|
||||
@include('components.sidebar')
|
||||
@endif
|
||||
|
||||
{{-- 🔥 RT --}}
|
||||
@if(auth()->user()->role == 'rt')
|
||||
@include('components.sidebar_rt')
|
||||
@endif
|
||||
|
||||
@endif
|
||||
|
||||
<!-- Content Wrapper -->
|
||||
<div id="content-wrapper" class="d-flex flex-column">
|
||||
|
||||
<!-- Main Content -->
|
||||
<div id="content">
|
||||
|
||||
<!-- Topbar -->
|
||||
@if(auth()->check() && auth()->user()->role == 'user')
|
||||
<nav class="navbar-pro fixed-top">
|
||||
<div class="navbar-pro-inner">
|
||||
|
||||
{{-- ===== KIRI: LOGO + MENU ===== --}}
|
||||
<div class="navbar-left">
|
||||
|
||||
{{-- LOGO --}}
|
||||
<a class="navbar-pro-brand" href="{{ route('user.home') }}">
|
||||
<div class="brand-icon">
|
||||
<svg width="18" height="18" viewBox="0 0 24 24" fill="none">
|
||||
<path d="M12 3C8 3 4 7 4 11c0 2.5 1.5 4.5 3 6h10c1.5-1.5 3-3.5 3-6 0-4-4-8-8-8z"
|
||||
fill="rgba(255,255,255,0.25)" />
|
||||
<path d="M7 19c0-2.8 2.2-5 5-7 2.8 2 5 4.2 5 7H7z" fill="white" />
|
||||
<line x1="12" y1="12" x2="12" y2="7" stroke="white" stroke-width="1.5"
|
||||
stroke-linecap="round" />
|
||||
</svg>
|
||||
</div>
|
||||
<span class="brand-name">GREEN VIEW</span>
|
||||
</a>
|
||||
|
||||
{{-- SEPARATOR --}}
|
||||
<div class="brand-sep"></div>
|
||||
|
||||
{{-- MENU --}}
|
||||
<ul class="navbar-pro-menu">
|
||||
<li>
|
||||
<a href="{{ route('user.home') }}"
|
||||
class="pro-nav-link {{ request()->routeIs('user.home') ? 'active' : '' }}">
|
||||
<i class="fas fa-home"></i>
|
||||
<span>Beranda</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ route('user.rumah') }}"
|
||||
class="pro-nav-link {{ request()->routeIs('user.rumah') ? 'active' : '' }}">
|
||||
<i class="fas fa-building"></i>
|
||||
<span>Rumah</span>
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="{{ route('user.iuran.index') }}"
|
||||
class="pro-nav-link {{ request()->routeIs('user.iuran.*') ? 'active' : '' }}">
|
||||
<i class="fas fa-wallet"></i>
|
||||
<span>Iuran</span>
|
||||
</a>
|
||||
</li>
|
||||
<li class="has-dropdown">
|
||||
@if($isExpired)
|
||||
<a class="pro-nav-link disabled-link" href="#"
|
||||
onclick="alert('Kontrak Anda telah berakhir'); return false;">
|
||||
<i class="fas fa-comments"></i>
|
||||
<span>Pengaduan</span>
|
||||
</a>
|
||||
@else
|
||||
<a class="pro-nav-link {{ request()->routeIs('user.layanan.*') ? 'active' : '' }}"
|
||||
href="#">
|
||||
<i class="fas fa-comments"></i>
|
||||
<span>Pengaduan</span>
|
||||
<i class="fas fa-chevron-down chevron-icon"></i>
|
||||
</a>
|
||||
<div class="pro-dropdown">
|
||||
<a href="{{ route('user.layanan.create') }}" class="pro-dropdown-item">
|
||||
<span class="drop-emoji">✍️</span>
|
||||
<div>
|
||||
<div class="drop-label">Buat Pengaduan</div>
|
||||
<div class="drop-sub">Kirim laporan baru</div>
|
||||
</div>
|
||||
</a>
|
||||
<a href="{{ route('user.layanan.status') }}" class="pro-dropdown-item">
|
||||
<span class="drop-emoji">📊</span>
|
||||
<div>
|
||||
<div class="drop-label">Status Pengaduan</div>
|
||||
<div class="drop-sub">Pantau laporan Anda</div>
|
||||
</div>
|
||||
</a>
|
||||
</div>
|
||||
@endif
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
|
||||
{{-- ===== KANAN: PROFIL + LOGOUT ===== --}}
|
||||
<div class="navbar-right">
|
||||
|
||||
{{-- PROFILE --}}
|
||||
<a href="{{ route('user.profil') }}" class="pro-profile">
|
||||
<div class="pro-avatar-wrap">
|
||||
<img src="{{ auth()->user()->photo
|
||||
? asset('profile/' . auth()->user()->photo)
|
||||
: 'https://i.pravatar.cc/50?img=3' }}" class="pro-avatar" alt="Avatar">
|
||||
<span class="avatar-dot"></span>
|
||||
</div>
|
||||
<div class="pro-profile-info">
|
||||
<span class="pro-name">{{ auth()->user()->name }}</span>
|
||||
<span class="pro-role">Penghuni</span>
|
||||
</div>
|
||||
</a>
|
||||
|
||||
{{-- DIVIDER --}}
|
||||
<div class="nav-divider"></div>
|
||||
|
||||
{{-- LOGOUT --}}
|
||||
<form action="{{ route('logout') }}" method="POST">
|
||||
@csrf
|
||||
<button type="submit" class="pro-logout-btn" title="Logout">
|
||||
<i class="fas fa-sign-out-alt"></i>
|
||||
</button>
|
||||
</form>
|
||||
|
||||
</div>
|
||||
|
||||
{{-- HAMBURGER MOBILE --}}
|
||||
<button class="hamburger" id="hamburgerBtn" onclick="toggleMobileNav()">
|
||||
<span></span><span></span><span></span>
|
||||
</button>
|
||||
|
||||
</div>
|
||||
|
||||
{{-- MOBILE DRAWER --}}
|
||||
<div class="mobile-drawer" id="mobileDrawer">
|
||||
<a href="{{ route('user.home') }}"
|
||||
class="mobile-item {{ request()->routeIs('user.home') ? 'active' : '' }}">
|
||||
<i class="fas fa-home"></i> Beranda
|
||||
</a>
|
||||
<a href="{{ route('user.rumah') }}"
|
||||
class="mobile-item {{ request()->routeIs('user.rumah') ? 'active' : '' }}">
|
||||
<i class="fas fa-building"></i> Rumah
|
||||
</a>
|
||||
<a href="{{ route('user.iuran.index') }}"
|
||||
class="mobile-item {{ request()->routeIs('user.iuran.*') ? 'active' : '' }}">
|
||||
<i class="fas fa-wallet"></i> Iuran
|
||||
</a>
|
||||
@if(!$isExpired)
|
||||
<a href="{{ route('user.layanan.create') }}" class="mobile-item">
|
||||
<i class="fas fa-comments"></i> Buat Pengaduan
|
||||
</a>
|
||||
<a href="{{ route('user.layanan.status') }}" class="mobile-item">
|
||||
<i class="fas fa-list"></i> Status Pengaduan
|
||||
</a>
|
||||
@endif
|
||||
<div class="mobile-bottom-row">
|
||||
<a href="{{ route('user.profil') }}" class="mobile-profile-pill">
|
||||
<img src="{{ auth()->user()->photo
|
||||
? asset('profile/' . auth()->user()->photo)
|
||||
: 'https://i.pravatar.cc/50?img=3' }}" class="mobile-avatar">
|
||||
<span>{{ auth()->user()->name }}</span>
|
||||
</a>
|
||||
<form action="{{ route('logout') }}" method="POST">
|
||||
@csrf
|
||||
<button type="submit" class="mobile-logout-btn">
|
||||
<i class="fas fa-sign-out-alt"></i> Keluar
|
||||
</button>
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
@endif
|
||||
|
||||
<!-- End of Topbar -->
|
||||
|
||||
<!-- Begin Page Content -->
|
||||
@yield('content')
|
||||
<!-- /.container-fluid -->
|
||||
|
||||
</div>
|
||||
<!-- End of Main Content -->
|
||||
|
||||
<!-- Footer -->
|
||||
<x-footer />
|
||||
<!-- End of Footer -->
|
||||
|
||||
</div>
|
||||
<!-- End of Content Wrapper -->
|
||||
|
||||
</div>
|
||||
<!-- End of Page Wrapper -->
|
||||
|
||||
<!-- Scroll to Top Button-->
|
||||
<a class="scroll-to-top rounded" href="#page-top">
|
||||
<i class="fas fa-angle-up"></i>
|
||||
</a>
|
||||
|
||||
<!-- Logout Modal-->
|
||||
<div class="modal fade" id="logoutModal" tabindex="-1" role="dialog" aria-labelledby="exampleModalLabel"
|
||||
aria-hidden="true">
|
||||
<div class="modal-dialog" role="document">
|
||||
<div class="modal-content">
|
||||
<div class="modal-header">
|
||||
<h5 class="modal-title" id="exampleModalLabel">Ready to Leave?</h5>
|
||||
<button class="close" type="button" data-dismiss="modal" aria-label="Close">
|
||||
<span aria-hidden="true">×</span>
|
||||
</button>
|
||||
</div>
|
||||
<div class="modal-body">Select "Logout" below if you are ready to end your current session.</div>
|
||||
<div class="modal-footer">
|
||||
<button class="btn btn-secondary" type="button" data-dismiss="modal">Cancel</button>
|
||||
<a class="btn btn-primary" href="login.html">Logout</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Bootstrap core JavaScript-->
|
||||
<script src="{{ asset('/') }}sbadmin2/vendor/jquery/jquery.min.js"></script>
|
||||
<script src="{{ asset('/') }}sbadmin2/vendor/bootstrap/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
<!-- Core plugin JavaScript-->
|
||||
<script src="{{ asset('/') }}sbadmin2/vendor/jquery-easing/jquery.easing.min.js"></script>
|
||||
|
||||
<!-- Custom scripts for all pages-->
|
||||
<script src="{{ asset('/') }}sbadmin2/js/sb-admin-2.min.js"></script>
|
||||
|
||||
<script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
<script src="https://code.jquery.com/jquery-3.6.0.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@4.6.2/dist/js/bootstrap.bundle.min.js"></script>
|
||||
|
||||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/js/bootstrap.bundle.min.js"></script>
|
||||
<script src="https://cdn.jsdelivr.net/npm/chart.js"></script>
|
||||
|
||||
<!-- DataTables JS (pastikan jQuery sudah ada sebelumnya) -->
|
||||
<script src="https://cdn.datatables.net/1.13.6/js/jquery.dataTables.min.js"></script>
|
||||
<script src="https://cdn.datatables.net/1.13.6/js/dataTables.bootstrap4.min.js"></script>
|
||||
|
||||
@yield('scripts')
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
||||
<style>
|
||||
/* ======================================== */
|
||||
/* 🌿 NAVBAR PRO — GREEN GRADIENT EDITION */
|
||||
/* ======================================== */
|
||||
|
||||
.navbar-pro * { box-sizing: border-box; }
|
||||
.navbar-pro ul { list-style: none; margin: 0; padding: 0; }
|
||||
.navbar-pro a { text-decoration: none; }
|
||||
|
||||
.navbar-pro {
|
||||
position: fixed;
|
||||
top: 0; left: 0; right: 0;
|
||||
z-index: 9999;
|
||||
}
|
||||
|
||||
.navbar-pro::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: linear-gradient(135deg,
|
||||
#064e3b 0%, #065f46 20%, #047857 45%, #059669 70%, #10b981 100%
|
||||
);
|
||||
box-shadow:
|
||||
0 4px 24px rgba(5,150,105,0.35),
|
||||
0 1px 0 rgba(255,255,255,0.12) inset,
|
||||
0 -1px 0 rgba(0,0,0,0.1) inset;
|
||||
}
|
||||
|
||||
.navbar-pro::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
bottom: 0; left: 0; right: 0;
|
||||
height: 2px;
|
||||
background: linear-gradient(90deg,
|
||||
transparent 0%, rgba(255,255,255,0.4) 30%,
|
||||
rgba(167,243,208,0.6) 50%, rgba(255,255,255,0.4) 70%, transparent 100%
|
||||
);
|
||||
}
|
||||
|
||||
.navbar-pro-inner {
|
||||
position: relative;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
height: 64px;
|
||||
padding: 0 24px;
|
||||
max-width: 1600px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.navbar-left {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
}
|
||||
|
||||
.navbar-pro-brand {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 9px;
|
||||
color: #fff !important;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
font-weight: 900;
|
||||
font-size: 15px;
|
||||
letter-spacing: 1.8px;
|
||||
text-transform: uppercase;
|
||||
flex-shrink: 0;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
.navbar-pro-brand:hover { opacity: 0.9; transform: translateY(-1px); }
|
||||
|
||||
.brand-icon {
|
||||
width: 36px; height: 36px;
|
||||
background: rgba(255,255,255,0.2);
|
||||
border: 1.5px solid rgba(255,255,255,0.35);
|
||||
border-radius: 10px;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
backdrop-filter: blur(4px);
|
||||
box-shadow: 0 2px 10px rgba(0,0,0,0.15), inset 0 1px 0 rgba(255,255,255,0.2);
|
||||
flex-shrink: 0;
|
||||
transition: 0.2s;
|
||||
}
|
||||
.navbar-pro-brand:hover .brand-icon { background: rgba(255,255,255,0.28); transform: rotate(-5deg) scale(1.05); }
|
||||
.brand-name { color: #fff; text-shadow: 0 1px 3px rgba(0,0,0,0.2); }
|
||||
|
||||
.brand-sep {
|
||||
width: 1px; height: 28px;
|
||||
background: rgba(255,255,255,0.25);
|
||||
margin: 0 10px;
|
||||
flex-shrink: 0;
|
||||
}
|
||||
|
||||
.navbar-pro-menu {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 2px;
|
||||
}
|
||||
|
||||
.pro-nav-link {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 7px;
|
||||
padding: 8px 15px;
|
||||
border-radius: 10px;
|
||||
color: rgba(255,255,255,0.82) !important;
|
||||
font-size: 13.5px;
|
||||
font-weight: 600;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
transition: all 0.2s ease;
|
||||
white-space: nowrap;
|
||||
position: relative;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
.pro-nav-link i:not(.chevron-icon) { font-size: 13px; opacity: 0.85; }
|
||||
.pro-nav-link:hover {
|
||||
background: rgba(255,255,255,0.15);
|
||||
color: #ffffff !important;
|
||||
border-color: rgba(255,255,255,0.2);
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 4px 12px rgba(0,0,0,0.12);
|
||||
}
|
||||
.pro-nav-link.active {
|
||||
background: rgba(255,255,255,0.22);
|
||||
color: #ffffff !important;
|
||||
border-color: rgba(255,255,255,0.3);
|
||||
box-shadow: 0 4px 14px rgba(0,0,0,0.15), inset 0 1px 0 rgba(255,255,255,0.25);
|
||||
text-shadow: 0 1px 2px rgba(0,0,0,0.1);
|
||||
}
|
||||
|
||||
.chevron-icon {
|
||||
font-size: 9px !important;
|
||||
margin-left: 1px;
|
||||
opacity: 0.7;
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
.has-dropdown:hover .chevron-icon { transform: rotate(180deg); opacity: 1; }
|
||||
|
||||
/* ── DROPDOWN FIX ── */
|
||||
.has-dropdown {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.has-dropdown::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
right: 0;
|
||||
height: 16px;
|
||||
background: transparent;
|
||||
z-index: 99;
|
||||
}
|
||||
|
||||
.pro-dropdown {
|
||||
position: absolute;
|
||||
top: 100%;
|
||||
left: 0;
|
||||
background: #fff;
|
||||
border: 1px solid rgba(5,150,105,0.15);
|
||||
border-radius: 14px;
|
||||
padding: 18px 8px 8px;
|
||||
min-width: 230px;
|
||||
box-shadow: 0 20px 50px rgba(0,0,0,0.15), 0 4px 15px rgba(5,150,105,0.1);
|
||||
opacity: 0;
|
||||
pointer-events: none;
|
||||
visibility: hidden;
|
||||
transition: opacity 0.2s ease, visibility 0.2s ease;
|
||||
z-index: 100;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.has-dropdown:hover .pro-dropdown {
|
||||
opacity: 1;
|
||||
pointer-events: auto;
|
||||
visibility: visible;
|
||||
}
|
||||
|
||||
.pro-dropdown::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
top: 10px; left: 20px;
|
||||
width: 12px; height: 12px;
|
||||
background: #fff;
|
||||
border: 1px solid rgba(5,150,105,0.15);
|
||||
border-bottom: none; border-right: none;
|
||||
transform: rotate(45deg);
|
||||
}
|
||||
|
||||
.pro-dropdown-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
padding: 11px 13px;
|
||||
border-radius: 10px;
|
||||
color: #374151;
|
||||
font-size: 13.5px;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
transition: all 0.2s;
|
||||
}
|
||||
.pro-dropdown-item:hover {
|
||||
background: linear-gradient(135deg, #ecfdf5, #d1fae5);
|
||||
color: #065f46;
|
||||
transform: translateX(3px);
|
||||
}
|
||||
.drop-emoji { font-size: 20px; flex-shrink: 0; }
|
||||
.drop-label { font-weight: 700; font-size: 13.5px; color: #1f2937; }
|
||||
.drop-sub { font-size: 11.5px; color: #6b7280; margin-top: 1px; }
|
||||
.pro-dropdown-item:hover .drop-label { color: #065f46; }
|
||||
|
||||
/* ── KANAN ── */
|
||||
.navbar-right {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.nav-divider {
|
||||
width: 1px; height: 30px;
|
||||
background: rgba(255,255,255,0.25);
|
||||
}
|
||||
|
||||
.pro-profile {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 10px;
|
||||
padding: 5px 14px 5px 5px;
|
||||
border-radius: 50px;
|
||||
background: rgba(255,255,255,0.15);
|
||||
border: 1.5px solid rgba(255,255,255,0.25);
|
||||
transition: all 0.2s;
|
||||
color: #fff !important;
|
||||
backdrop-filter: blur(4px);
|
||||
}
|
||||
.pro-profile:hover {
|
||||
background: rgba(255,255,255,0.25);
|
||||
border-color: rgba(255,255,255,0.4);
|
||||
transform: translateY(-1px);
|
||||
box-shadow: 0 6px 18px rgba(0,0,0,0.15);
|
||||
color: #fff !important;
|
||||
}
|
||||
|
||||
.pro-avatar-wrap { position: relative; flex-shrink: 0; }
|
||||
.pro-avatar {
|
||||
width: 36px; height: 36px;
|
||||
border-radius: 50%;
|
||||
object-fit: cover;
|
||||
display: block;
|
||||
border: 2px solid rgba(255,255,255,0.5);
|
||||
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
|
||||
}
|
||||
.avatar-dot {
|
||||
position: absolute;
|
||||
bottom: 1px; right: 1px;
|
||||
width: 10px; height: 10px;
|
||||
background: #fde047;
|
||||
border-radius: 50%;
|
||||
border: 2px solid rgba(6,95,70,0.8);
|
||||
box-shadow: 0 0 6px rgba(253,224,71,0.6);
|
||||
}
|
||||
|
||||
.pro-profile-info { display: flex; flex-direction: column; line-height: 1.2; }
|
||||
.pro-name {
|
||||
font-size: 13px; font-weight: 700; color: #fff;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
max-width: 110px; overflow: hidden;
|
||||
text-overflow: ellipsis; white-space: nowrap;
|
||||
text-shadow: 0 1px 2px rgba(0,0,0,0.15);
|
||||
}
|
||||
.pro-role {
|
||||
font-size: 10px; color: #a7f3d0;
|
||||
font-weight: 700; text-transform: uppercase; letter-spacing: 0.8px;
|
||||
}
|
||||
|
||||
.pro-logout-btn {
|
||||
width: 38px; height: 38px;
|
||||
border-radius: 10px;
|
||||
border: 1.5px solid rgba(255,255,255,0.25);
|
||||
background: rgba(255,255,255,0.12);
|
||||
color: rgba(255,255,255,0.85);
|
||||
cursor: pointer;
|
||||
display: flex; align-items: center; justify-content: center;
|
||||
font-size: 14px;
|
||||
transition: all 0.2s;
|
||||
backdrop-filter: blur(4px);
|
||||
}
|
||||
.pro-logout-btn:hover {
|
||||
background: rgba(239,68,68,0.25);
|
||||
border-color: rgba(252,165,165,0.5);
|
||||
color: #fca5a5;
|
||||
transform: scale(1.08);
|
||||
box-shadow: 0 4px 14px rgba(239,68,68,0.3);
|
||||
}
|
||||
|
||||
/* ── HAMBURGER ── */
|
||||
.hamburger {
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
gap: 5px;
|
||||
background: rgba(255,255,255,0.15);
|
||||
border: 1px solid rgba(255,255,255,0.2);
|
||||
border-radius: 8px;
|
||||
cursor: pointer;
|
||||
padding: 8px;
|
||||
}
|
||||
.hamburger span {
|
||||
display: block;
|
||||
width: 20px; height: 2px;
|
||||
background: rgba(255,255,255,0.9);
|
||||
border-radius: 2px;
|
||||
transition: 0.3s;
|
||||
}
|
||||
|
||||
/* ── MOBILE DRAWER ── */
|
||||
.mobile-drawer {
|
||||
display: none;
|
||||
flex-direction: column;
|
||||
gap: 3px;
|
||||
padding: 10px 16px 16px;
|
||||
position: relative;
|
||||
background: linear-gradient(180deg, #047857, #065f46);
|
||||
border-top: 1px solid rgba(255,255,255,0.1);
|
||||
}
|
||||
.mobile-drawer.open { display: flex; }
|
||||
|
||||
.mobile-item {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 12px;
|
||||
padding: 12px 14px;
|
||||
border-radius: 10px;
|
||||
color: rgba(255,255,255,0.82);
|
||||
font-size: 14px;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
font-weight: 600;
|
||||
transition: all 0.2s;
|
||||
border: 1px solid transparent;
|
||||
}
|
||||
.mobile-item i { width: 18px; text-align: center; color: #6ee7b7; }
|
||||
.mobile-item:hover,
|
||||
.mobile-item.active {
|
||||
background: rgba(255,255,255,0.15);
|
||||
color: #fff;
|
||||
border-color: rgba(255,255,255,0.15);
|
||||
}
|
||||
|
||||
.mobile-bottom-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: space-between;
|
||||
padding: 12px 4px 4px;
|
||||
margin-top: 8px;
|
||||
border-top: 1px solid rgba(255,255,255,0.15);
|
||||
gap: 10px;
|
||||
}
|
||||
|
||||
.mobile-profile-pill {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
color: rgba(255,255,255,0.9);
|
||||
font-size: 13px;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
font-weight: 700;
|
||||
}
|
||||
.mobile-avatar {
|
||||
width: 32px; height: 32px;
|
||||
border-radius: 50%;
|
||||
object-fit: cover;
|
||||
border: 2px solid rgba(255,255,255,0.4);
|
||||
}
|
||||
|
||||
.mobile-logout-btn {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
padding: 8px 14px;
|
||||
border-radius: 8px;
|
||||
border: 1px solid rgba(252,165,165,0.4);
|
||||
background: rgba(239,68,68,0.15);
|
||||
color: #fca5a5;
|
||||
font-size: 13px;
|
||||
font-weight: 600;
|
||||
font-family: 'Nunito', sans-serif;
|
||||
cursor: pointer;
|
||||
transition: 0.2s;
|
||||
}
|
||||
.mobile-logout-btn:hover { background: rgba(239,68,68,0.3); color: #fff; }
|
||||
|
||||
/* ── CONTENT OFFSET ── */
|
||||
.user-mode #content { margin-top: 64px; }
|
||||
|
||||
@media (max-width: 768px) {
|
||||
.user-mode #content { margin-top: 64px; }
|
||||
}
|
||||
|
||||
@media (max-width: 992px) {
|
||||
.navbar-pro-menu,
|
||||
.navbar-right { display: none; }
|
||||
.hamburger { display: flex; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<script>
|
||||
setTimeout(() => {
|
||||
$('.alert').fadeOut('slow');
|
||||
}, 3000);
|
||||
</script>
|
||||
|
||||
<script>
|
||||
// Dark Toggle
|
||||
const toggle = document.getElementById("darkToggle");
|
||||
if (toggle) {
|
||||
toggle.addEventListener("click", () => {
|
||||
document.body.classList.toggle("dark");
|
||||
const isDark = document.body.classList.contains("dark");
|
||||
localStorage.setItem("darkMode", isDark);
|
||||
toggle.querySelector('.dark-icon').textContent = isDark ? '☀️' : '🌙';
|
||||
});
|
||||
if (localStorage.getItem("darkMode") === "true") {
|
||||
document.body.classList.add("dark");
|
||||
toggle.querySelector('.dark-icon').textContent = '☀️';
|
||||
}
|
||||
}
|
||||
|
||||
// Hamburger Mobile
|
||||
function toggleMobileNav() {
|
||||
const drawer = document.getElementById('mobileDrawer');
|
||||
drawer.classList.toggle('open');
|
||||
}
|
||||
</script>
|
||||
|
|
@ -114,25 +114,11 @@
|
|||
height: 3px;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(1)::before {
|
||||
background: #064e3b;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(2)::before {
|
||||
background: #dc2626;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(3)::before {
|
||||
background: #2563eb;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(4)::before {
|
||||
background: #7c3aed;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(5)::before {
|
||||
background: #d97706;
|
||||
}
|
||||
.stat-card:nth-child(1)::before { background: #064e3b; }
|
||||
.stat-card:nth-child(2)::before { background: #dc2626; }
|
||||
.stat-card:nth-child(3)::before { background: #2563eb; }
|
||||
.stat-card:nth-child(4)::before { background: #7c3aed; }
|
||||
.stat-card:nth-child(5)::before { background: #d97706; }
|
||||
|
||||
.stat-card:hover {
|
||||
transform: translateY(-3px);
|
||||
|
|
@ -150,30 +136,11 @@
|
|||
font-size: 1rem;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(1) .stat-icon {
|
||||
background: #d1fae5;
|
||||
color: #064e3b;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(2) .stat-icon {
|
||||
background: #fee2e2;
|
||||
color: #dc2626;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(3) .stat-icon {
|
||||
background: #dbeafe;
|
||||
color: #2563eb;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(4) .stat-icon {
|
||||
background: #ede9fe;
|
||||
color: #7c3aed;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(5) .stat-icon {
|
||||
background: #fef3c7;
|
||||
color: #d97706;
|
||||
}
|
||||
.stat-card:nth-child(1) .stat-icon { background: #d1fae5; color: #064e3b; }
|
||||
.stat-card:nth-child(2) .stat-icon { background: #fee2e2; color: #dc2626; }
|
||||
.stat-card:nth-child(3) .stat-icon { background: #dbeafe; color: #2563eb; }
|
||||
.stat-card:nth-child(4) .stat-icon { background: #ede9fe; color: #7c3aed; }
|
||||
.stat-card:nth-child(5) .stat-icon { background: #fef3c7; color: #d97706; }
|
||||
|
||||
.stat-value {
|
||||
font-size: 1.6rem;
|
||||
|
|
@ -182,25 +149,11 @@
|
|||
margin-bottom: 5px;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(1) .stat-value {
|
||||
color: #064e3b;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(2) .stat-value {
|
||||
color: #dc2626;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(3) .stat-value {
|
||||
color: #2563eb;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(4) .stat-value {
|
||||
color: #7c3aed;
|
||||
}
|
||||
|
||||
.stat-card:nth-child(5) .stat-value {
|
||||
color: #d97706;
|
||||
}
|
||||
.stat-card:nth-child(1) .stat-value { color: #064e3b; }
|
||||
.stat-card:nth-child(2) .stat-value { color: #dc2626; }
|
||||
.stat-card:nth-child(3) .stat-value { color: #2563eb; }
|
||||
.stat-card:nth-child(4) .stat-value { color: #7c3aed; }
|
||||
.stat-card:nth-child(5) .stat-value { color: #d97706; }
|
||||
|
||||
.stat-label {
|
||||
font-size: 0.78rem;
|
||||
|
|
@ -236,9 +189,7 @@
|
|||
gap: 9px;
|
||||
}
|
||||
|
||||
.card-header i {
|
||||
color: #064e3b;
|
||||
}
|
||||
.card-header i { color: #064e3b; }
|
||||
|
||||
.card-header span {
|
||||
font-size: 0.75rem;
|
||||
|
|
@ -262,6 +213,7 @@
|
|||
|
||||
.field-wrap {
|
||||
flex: 1;
|
||||
min-width: 0;
|
||||
}
|
||||
|
||||
.field-label {
|
||||
|
|
@ -298,9 +250,7 @@
|
|||
cursor: pointer;
|
||||
}
|
||||
|
||||
.field-select:hover {
|
||||
border-color: #94a3b8;
|
||||
}
|
||||
.field-select:hover { border-color: #94a3b8; }
|
||||
|
||||
.field-select:focus {
|
||||
border-color: #064e3b;
|
||||
|
|
@ -332,9 +282,7 @@
|
|||
box-shadow: 0 8px 22px rgba(6, 78, 59, 0.38);
|
||||
}
|
||||
|
||||
.btn-cetak:active {
|
||||
transform: translateY(0);
|
||||
}
|
||||
.btn-cetak:active { transform: translateY(0); }
|
||||
|
||||
/* ─── INFO STRIP ─── */
|
||||
.info-strip {
|
||||
|
|
@ -394,7 +342,6 @@
|
|||
width: 24px;
|
||||
height: 24px;
|
||||
background: #d1fae5;
|
||||
color: #064e3b;
|
||||
border-radius: 50%;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
|
|
@ -443,9 +390,18 @@
|
|||
|
||||
.form-row-inline {
|
||||
flex-direction: column;
|
||||
align-items: stretch; /* ← FIX: was missing, caused right-align */
|
||||
gap: 0.75rem;
|
||||
}
|
||||
|
||||
.field-wrap {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.field-select {
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.hero-text h2 {
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
|
|
@ -557,7 +513,8 @@
|
|||
<select name="tahun" class="field-select">
|
||||
@for($y = date('Y'); $y >= date('Y') - 4; $y--)
|
||||
<option value="{{ $y }}" {{ (request('tahun', date('Y')) == $y) ? 'selected' : '' }}>
|
||||
{{ $y }}</option>
|
||||
{{ $y }}
|
||||
</option>
|
||||
@endfor
|
||||
</select>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -3,22 +3,24 @@
|
|||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<title>Lupa Password - Green View</title>
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
html, body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
min-height: 100%;
|
||||
background: #0a3d1e;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
flex-direction: row;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL (Logo) ─── */
|
||||
|
|
@ -217,10 +219,12 @@
|
|||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 14px;
|
||||
font-size: 16px; /* cegah auto-zoom iOS */
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
|
|
@ -234,7 +238,7 @@
|
|||
/* ─── BUTTON ─── */
|
||||
.btn-submit {
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
padding: 13px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
|
|
@ -246,6 +250,7 @@
|
|||
cursor: pointer;
|
||||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.btn-submit:hover {
|
||||
|
|
@ -254,7 +259,10 @@
|
|||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-submit:active { transform: translateY(0); }
|
||||
.btn-submit:active {
|
||||
transform: translateY(0);
|
||||
background: #e4f5ec;
|
||||
}
|
||||
|
||||
/* ─── LINKS ─── */
|
||||
.links-area {
|
||||
|
|
@ -271,10 +279,139 @@
|
|||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
/* ─── RESPONSIVE ─── */
|
||||
@media (max-width: 768px) {
|
||||
.auth-left { display: none; }
|
||||
.auth-right { width: 100%; }
|
||||
/* ─── RESPONSIVE: Tablet ─── */
|
||||
@media screen and (min-width: 769px) and (max-width: 1024px) {
|
||||
.auth-left { width: 40%; }
|
||||
.auth-right { width: 60%; padding: 40px 28px; }
|
||||
.auth-left img { width: 80%; }
|
||||
}
|
||||
|
||||
/* ══════════════════════════════════════════
|
||||
MOBILE ≤ 768px — LAYOUT: atas-bawah
|
||||
══════════════════════════════════════════ */
|
||||
@media screen and (max-width: 768px) {
|
||||
|
||||
.auth-wrapper {
|
||||
flex-direction: column !important;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Panel Atas: Logo ── */
|
||||
.auth-left {
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
min-height: unset !important;
|
||||
padding: 44px 24px 36px !important;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(160deg, #ffffff 60%, #f0faf5 100%) !important;
|
||||
order: 0;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 50% !important;
|
||||
max-width: 185px !important;
|
||||
animation: none !important;
|
||||
filter: drop-shadow(0 8px 20px rgba(15,80,40,0.14)) !important;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 12px !important;
|
||||
font-size: 10px !important;
|
||||
letter-spacing: 2.5px !important;
|
||||
}
|
||||
|
||||
.deco-circle.c1,
|
||||
.deco-circle.c2 { display: none !important; }
|
||||
.deco-circle.c3 { width: 90px !important; height: 90px !important; top: 12px !important; left: 12px !important; }
|
||||
|
||||
/* ── Panel Bawah: Form ── */
|
||||
.auth-right {
|
||||
width: 100% !important;
|
||||
flex: 1 !important;
|
||||
padding: 36px 24px 52px !important;
|
||||
align-items: flex-start !important;
|
||||
justify-content: center !important;
|
||||
border-radius: 28px 28px 0 0 !important;
|
||||
margin-top: -24px !important;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.auth-card {
|
||||
max-width: 100% !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.card-header-area {
|
||||
margin-bottom: 20px !important;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
font-size: 10px !important;
|
||||
padding: 4px 12px !important;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
font-size: 18px !important;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.info-box {
|
||||
font-size: 12px !important;
|
||||
padding: 10px 12px !important;
|
||||
margin-bottom: 18px !important;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 14px !important;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
padding: 13px 12px 13px 40px !important;
|
||||
border-radius: 12px !important;
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.btn-submit {
|
||||
padding: 14px !important;
|
||||
font-size: 15px !important;
|
||||
border-radius: 12px !important;
|
||||
}
|
||||
|
||||
.links-area {
|
||||
margin-top: 22px !important;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
font-size: 13px !important;
|
||||
padding: 4px 0 !important;
|
||||
display: inline-block !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* ─── Small Mobile ≤ 390px ─── */
|
||||
@media screen and (max-width: 390px) {
|
||||
.auth-left { padding: 36px 16px 28px !important; }
|
||||
.auth-left img { width: 46% !important; max-width: 160px !important; }
|
||||
.auth-right { padding: 28px 20px 44px !important; }
|
||||
}
|
||||
|
||||
/* ─── Landscape Mobile ─── */
|
||||
@media screen and (max-width: 768px) and (orientation: landscape) {
|
||||
.auth-left {
|
||||
padding: 18px 24px 16px !important;
|
||||
}
|
||||
.auth-left img { width: 26% !important; max-width: 100px !important; }
|
||||
.auth-left .brand-tagline { margin-top: 6px !important; font-size: 9px !important; }
|
||||
.auth-right {
|
||||
padding: 22px 24px 32px !important;
|
||||
border-radius: 20px 20px 0 0 !important;
|
||||
margin-top: -10px !important;
|
||||
}
|
||||
.card-header-area { margin-bottom: 14px !important; }
|
||||
.form-group { margin-bottom: 10px !important; }
|
||||
}
|
||||
</style>
|
||||
</head>
|
||||
|
|
@ -283,7 +420,7 @@
|
|||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- LEFT: Logo Panel --}}
|
||||
{{-- TOP / LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
|
|
@ -292,7 +429,7 @@
|
|||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- RIGHT: Form Panel --}}
|
||||
{{-- BOTTOM / RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
|
|
@ -326,7 +463,7 @@
|
|||
<div class="form-group">
|
||||
<div class="input-wrap">
|
||||
<span class="icon">✉️</span>
|
||||
<input type="email" name="email" class="form-control" placeholder="Masukkan email Anda" required>
|
||||
<input type="email" name="email" class="form-control" placeholder="Masukkan email Anda" required autocomplete="email">
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -4,19 +4,23 @@
|
|||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
html, body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
min-height: 100vh;
|
||||
min-height: 100%;
|
||||
background: #0a3d1e;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
min-height: 100vh;
|
||||
flex-direction: row; /* desktop: side by side */
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL (Logo) ─── */
|
||||
|
|
@ -210,7 +214,7 @@
|
|||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 16px; /* 16px mencegah auto-zoom iOS */
|
||||
font-size: 16px;
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
|
|
@ -238,7 +242,6 @@
|
|||
border: none;
|
||||
padding: 0;
|
||||
line-height: 1;
|
||||
/* area sentuh lebih besar di mobile */
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
display: flex;
|
||||
|
|
@ -298,154 +301,151 @@
|
|||
}
|
||||
|
||||
/* ─── RESPONSIVE: Tablet ─── */
|
||||
@media (min-width: 769px) and (max-width: 1024px) {
|
||||
@media screen and (min-width: 769px) and (max-width: 1024px) {
|
||||
.auth-left { width: 40%; }
|
||||
.auth-right { width: 60%; padding: 40px 28px; }
|
||||
.auth-left img { width: 80%; }
|
||||
}
|
||||
|
||||
/* ─── RESPONSIVE: Mobile ─── */
|
||||
@media (max-width: 768px) {
|
||||
html, body { overflow-x: hidden; }
|
||||
/* ══════════════════════════════════════════
|
||||
MOBILE ≤ 768px — LAYOUT: atas-bawah
|
||||
══════════════════════════════════════════ */
|
||||
@media screen and (max-width: 768px) {
|
||||
|
||||
/* Wrapper jadi kolom */
|
||||
.auth-wrapper {
|
||||
flex-direction: column;
|
||||
flex-direction: column !important;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Panel Kiri: banner logo di atas ── */
|
||||
/* ── Panel Atas: Logo ── */
|
||||
.auth-left {
|
||||
width: 100%;
|
||||
height: auto;
|
||||
padding: 44px 24px 36px;
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
min-height: unset !important;
|
||||
padding: 44px 24px 36px !important;
|
||||
flex-shrink: 0;
|
||||
/* gradient hijau tipis di background putih agar tidak terlalu polos */
|
||||
background: linear-gradient(160deg, #ffffff 60%, #f0faf5 100%);
|
||||
background: linear-gradient(160deg, #ffffff 60%, #f0faf5 100%) !important;
|
||||
order: 0;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 48%;
|
||||
max-width: 180px;
|
||||
animation: none;
|
||||
filter: drop-shadow(0 8px 20px rgba(15,80,40,0.14));
|
||||
width: 52% !important;
|
||||
max-width: 190px !important;
|
||||
animation: none !important;
|
||||
filter: drop-shadow(0 8px 20px rgba(15,80,40,0.14)) !important;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 12px;
|
||||
font-size: 10px;
|
||||
letter-spacing: 2.5px;
|
||||
margin-top: 12px !important;
|
||||
font-size: 10px !important;
|
||||
letter-spacing: 2.5px !important;
|
||||
}
|
||||
|
||||
/* Dekorasi lingkaran: sembunyikan yang besar, kecilkan yang kecil */
|
||||
/* Dekorasi: sembunyikan lingkaran besar */
|
||||
.deco-circle.c1,
|
||||
.deco-circle.c2 { display: none; }
|
||||
.deco-circle.c3 { width: 90px; height: 90px; top: 12px; left: 12px; }
|
||||
.deco-circle.c2 { display: none !important; }
|
||||
.deco-circle.c3 { width: 90px !important; height: 90px !important; top: 12px !important; left: 12px !important; }
|
||||
|
||||
/* ── Panel Kanan: form di bawah, mengisi sisa layar ── */
|
||||
/* ── Panel Bawah: Form ── */
|
||||
.auth-right {
|
||||
width: 100%;
|
||||
flex: 1;
|
||||
padding: 36px 24px 52px;
|
||||
/* align atas agar tidak ada ruang kosong aneh di HP pendek */
|
||||
align-items: flex-start;
|
||||
justify-content: center;
|
||||
/* border-radius atas untuk efek "card naik" */
|
||||
border-radius: 28px 28px 0 0;
|
||||
/* tarik ke atas sedikit agar overlap logo */
|
||||
margin-top: -20px;
|
||||
width: 100% !important;
|
||||
flex: 1 !important;
|
||||
padding: 36px 24px 52px !important;
|
||||
align-items: flex-start !important;
|
||||
justify-content: center !important;
|
||||
border-radius: 28px 28px 0 0 !important;
|
||||
margin-top: -24px !important;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.auth-card {
|
||||
max-width: 100%;
|
||||
width: 100%;
|
||||
max-width: 100% !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.card-header-area {
|
||||
margin-bottom: 24px;
|
||||
margin-bottom: 24px !important;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
font-size: 10px;
|
||||
padding: 4px 12px;
|
||||
font-size: 10px !important;
|
||||
padding: 4px 12px !important;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
font-size: 17px;
|
||||
font-size: 17px !important;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
font-size: 12px;
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
/* Form group sedikit lebih rapat */
|
||||
.form-group {
|
||||
margin-bottom: 15px;
|
||||
margin-bottom: 15px !important;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
font-size: 12px;
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
/* Input lebih tinggi untuk kemudahan tap */
|
||||
.form-control {
|
||||
padding: 13px 12px 13px 40px;
|
||||
border-radius: 12px;
|
||||
padding: 13px 12px 13px 40px !important;
|
||||
border-radius: 12px !important;
|
||||
font-size: 16px !important; /* cegah zoom iOS */
|
||||
}
|
||||
|
||||
/* Tombol login lebih besar */
|
||||
.btn-login {
|
||||
padding: 15px;
|
||||
font-size: 15px;
|
||||
border-radius: 12px;
|
||||
margin-top: 8px;
|
||||
padding: 15px !important;
|
||||
font-size: 15px !important;
|
||||
border-radius: 12px !important;
|
||||
margin-top: 8px !important;
|
||||
}
|
||||
|
||||
/* Link login: tumpuk vertikal, jarak nyaman */
|
||||
.links-area {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
gap: 12px;
|
||||
align-items: center;
|
||||
margin-top: 22px;
|
||||
display: flex !important;
|
||||
flex-direction: column !important;
|
||||
gap: 12px !important;
|
||||
align-items: center !important;
|
||||
margin-top: 22px !important;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
font-size: 13px;
|
||||
/* area sentuh lebih besar */
|
||||
padding: 4px 0;
|
||||
display: inline-block;
|
||||
font-size: 13px !important;
|
||||
padding: 4px 0 !important;
|
||||
display: inline-block !important;
|
||||
}
|
||||
|
||||
.links-area .divider { display: none; }
|
||||
.links-area .divider { display: none !important; }
|
||||
}
|
||||
|
||||
/* ─── RESPONSIVE: Small Mobile (≤ 390px) ─── */
|
||||
@media (max-width: 390px) {
|
||||
.auth-left { padding: 36px 16px 28px; }
|
||||
.auth-left img { width: 44%; max-width: 160px; }
|
||||
.auth-right { padding: 28px 20px 44px; }
|
||||
/* ─── Small Mobile ≤ 390px ─── */
|
||||
@media screen and (max-width: 390px) {
|
||||
.auth-left { padding: 36px 16px 28px !important; }
|
||||
.auth-left img { width: 46% !important; max-width: 165px !important; }
|
||||
.auth-right { padding: 28px 20px 44px !important; }
|
||||
}
|
||||
|
||||
/* ─── Landscape Mobile ─── */
|
||||
@media (max-width: 768px) and (orientation: landscape) {
|
||||
@media screen and (max-width: 768px) and (orientation: landscape) {
|
||||
.auth-left {
|
||||
padding: 24px 24px 20px;
|
||||
padding: 20px 24px 18px !important;
|
||||
}
|
||||
.auth-left img { width: 30%; max-width: 120px; }
|
||||
.auth-left .brand-tagline { margin-top: 8px; font-size: 9px; }
|
||||
.auth-left img { width: 28% !important; max-width: 110px !important; }
|
||||
.auth-left .brand-tagline { margin-top: 8px !important; font-size: 9px !important; }
|
||||
.auth-right {
|
||||
padding: 24px 24px 32px;
|
||||
border-radius: 20px 20px 0 0;
|
||||
margin-top: -12px;
|
||||
padding: 24px 24px 32px !important;
|
||||
border-radius: 20px 20px 0 0 !important;
|
||||
margin-top: -12px !important;
|
||||
}
|
||||
.card-header-area { margin-bottom: 16px; }
|
||||
.form-group { margin-bottom: 12px; }
|
||||
.card-header-area { margin-bottom: 14px !important; }
|
||||
.form-group { margin-bottom: 10px !important; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- LEFT: Logo Panel --}}
|
||||
{{-- TOP / LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
|
|
@ -454,7 +454,7 @@
|
|||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- RIGHT: Form Panel --}}
|
||||
{{-- BOTTOM / RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
|
|
|
|||
|
|
@ -4,20 +4,23 @@
|
|||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
html, body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
min-height: 100%;
|
||||
background: #0a3d1e;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
flex-direction: row;
|
||||
min-height: 100vh;
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
|
|
@ -82,7 +85,6 @@
|
|||
.deco-circle.c3 { width: 160px; height: 160px; top: 30px; left: 30px; }
|
||||
|
||||
/* ─── RIGHT PANEL ─── */
|
||||
/* Warna hijau disamakan persis dengan login (gambar 2) */
|
||||
.auth-right {
|
||||
width: 45%;
|
||||
flex-shrink: 0;
|
||||
|
|
@ -95,7 +97,6 @@
|
|||
overflow: hidden;
|
||||
}
|
||||
|
||||
/* noise texture */
|
||||
.auth-right::before {
|
||||
content: '';
|
||||
position: absolute;
|
||||
|
|
@ -105,7 +106,6 @@
|
|||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* decorative blob bottom-right */
|
||||
.auth-right::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
|
|
@ -224,13 +224,19 @@
|
|||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 14px;
|
||||
font-size: 16px; /* cegah auto-zoom iOS */
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
letter-spacing: 2px; /* biar kode OTP lebih mudah dibaca */
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
.form-control::placeholder {
|
||||
color: #aab7aa;
|
||||
letter-spacing: normal;
|
||||
}
|
||||
|
||||
.form-control:focus {
|
||||
border-color: rgba(255,255,255,0.6);
|
||||
|
|
@ -242,7 +248,7 @@
|
|||
.btn-login {
|
||||
display: block;
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
padding: 13px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
|
|
@ -255,6 +261,7 @@
|
|||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
margin-top: 4px;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.btn-login:hover {
|
||||
|
|
@ -263,7 +270,10 @@
|
|||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-login:active { transform: translateY(0); }
|
||||
.btn-login:active {
|
||||
transform: translateY(0);
|
||||
background: #e4f5ec;
|
||||
}
|
||||
|
||||
/* ─── LINKS ─── */
|
||||
.links-area {
|
||||
|
|
@ -280,16 +290,144 @@
|
|||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
/* ─── RESPONSIVE ─── */
|
||||
@media (max-width: 768px) {
|
||||
.auth-left { display: none; }
|
||||
.auth-right { width: 100%; padding: 40px 28px; }
|
||||
/* ─── RESPONSIVE: Tablet ─── */
|
||||
@media screen and (min-width: 769px) and (max-width: 1024px) {
|
||||
.auth-left { width: 40%; }
|
||||
.auth-right { width: 60%; padding: 40px 28px; }
|
||||
.auth-left img { width: 80%; }
|
||||
}
|
||||
|
||||
/* ══════════════════════════════════════════
|
||||
MOBILE ≤ 768px — LAYOUT: atas-bawah
|
||||
══════════════════════════════════════════ */
|
||||
@media screen and (max-width: 768px) {
|
||||
|
||||
.auth-wrapper {
|
||||
flex-direction: column !important;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Panel Atas: Logo ── */
|
||||
.auth-left {
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
min-height: unset !important;
|
||||
padding: 44px 24px 36px !important;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(160deg, #ffffff 60%, #f0faf5 100%) !important;
|
||||
order: 0;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 50% !important;
|
||||
max-width: 185px !important;
|
||||
animation: none !important;
|
||||
filter: drop-shadow(0 8px 20px rgba(15,80,40,0.14)) !important;
|
||||
}
|
||||
|
||||
.brand-tagline {
|
||||
margin-top: 12px !important;
|
||||
font-size: 10px !important;
|
||||
letter-spacing: 2.5px !important;
|
||||
}
|
||||
|
||||
.deco-circle.c1,
|
||||
.deco-circle.c2 { display: none !important; }
|
||||
.deco-circle.c3 { width: 90px !important; height: 90px !important; top: 12px !important; left: 12px !important; }
|
||||
|
||||
/* ── Panel Bawah: Form ── */
|
||||
.auth-right {
|
||||
width: 100% !important;
|
||||
flex: 1 !important;
|
||||
padding: 36px 24px 52px !important;
|
||||
align-items: flex-start !important;
|
||||
justify-content: center !important;
|
||||
border-radius: 28px 28px 0 0 !important;
|
||||
margin-top: -24px !important;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.auth-card {
|
||||
max-width: 100% !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.card-header-area {
|
||||
margin-bottom: 24px !important;
|
||||
}
|
||||
|
||||
.badge-pill {
|
||||
font-size: 10px !important;
|
||||
padding: 4px 12px !important;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
font-size: 18px !important;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 15px !important;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
padding: 13px 12px 13px 40px !important;
|
||||
border-radius: 12px !important;
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.btn-login {
|
||||
padding: 15px !important;
|
||||
font-size: 15px !important;
|
||||
border-radius: 12px !important;
|
||||
margin-top: 8px !important;
|
||||
}
|
||||
|
||||
.links-area {
|
||||
margin-top: 22px !important;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
font-size: 13px !important;
|
||||
padding: 4px 0 !important;
|
||||
display: inline-block !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* ─── Small Mobile ≤ 390px ─── */
|
||||
@media screen and (max-width: 390px) {
|
||||
.auth-left { padding: 36px 16px 28px !important; }
|
||||
.auth-left img { width: 46% !important; max-width: 160px !important; }
|
||||
.auth-right { padding: 28px 20px 44px !important; }
|
||||
}
|
||||
|
||||
/* ─── Landscape Mobile ─── */
|
||||
@media screen and (max-width: 768px) and (orientation: landscape) {
|
||||
.auth-left {
|
||||
padding: 18px 24px 16px !important;
|
||||
}
|
||||
.auth-left img { width: 26% !important; max-width: 100px !important; }
|
||||
.brand-tagline { margin-top: 6px !important; font-size: 9px !important; }
|
||||
.auth-right {
|
||||
padding: 22px 24px 32px !important;
|
||||
border-radius: 20px 20px 0 0 !important;
|
||||
margin-top: -10px !important;
|
||||
}
|
||||
.card-header-area { margin-bottom: 16px !important; }
|
||||
.form-group { margin-bottom: 10px !important; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- LEFT: Logo Panel --}}
|
||||
{{-- TOP / LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
|
|
@ -298,7 +436,7 @@
|
|||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- RIGHT: Form Panel --}}
|
||||
{{-- BOTTOM / RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
|
|
@ -333,6 +471,8 @@ class="form-control"
|
|||
required
|
||||
maxlength="6"
|
||||
autocomplete="one-time-code"
|
||||
inputmode="numeric"
|
||||
pattern="[0-9]*"
|
||||
>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
|||
|
|
@ -4,20 +4,23 @@
|
|||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
html, body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
min-height: 100%;
|
||||
background: #0a3d1e;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
flex-direction: row;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL (Logo) ─── */
|
||||
|
|
@ -201,10 +204,12 @@
|
|||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 14px;
|
||||
font-size: 16px; /* 16px cegah auto-zoom iOS */
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
|
|
@ -227,12 +232,17 @@
|
|||
border: none;
|
||||
padding: 0;
|
||||
line-height: 1;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
/* ─── BUTTON ─── */
|
||||
.btn-register {
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
padding: 13px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
|
|
@ -245,6 +255,7 @@
|
|||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
margin-top: 6px;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.btn-register:hover {
|
||||
|
|
@ -253,7 +264,10 @@
|
|||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-register:active { transform: translateY(0); }
|
||||
.btn-register:active {
|
||||
transform: translateY(0);
|
||||
background: #e4f5ec;
|
||||
}
|
||||
|
||||
/* ─── LINKS ─── */
|
||||
.links-area {
|
||||
|
|
@ -270,16 +284,140 @@
|
|||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
/* ─── RESPONSIVE ─── */
|
||||
@media (max-width: 768px) {
|
||||
.auth-left { display: none; }
|
||||
.auth-right { width: 100%; }
|
||||
/* ─── RESPONSIVE: Tablet ─── */
|
||||
@media screen and (min-width: 769px) and (max-width: 1024px) {
|
||||
.auth-left { width: 40%; }
|
||||
.auth-right { width: 60%; padding: 40px 28px; }
|
||||
.auth-left img { width: 80%; }
|
||||
}
|
||||
|
||||
/* ══════════════════════════════════════════
|
||||
MOBILE ≤ 768px — LAYOUT: atas-bawah
|
||||
══════════════════════════════════════════ */
|
||||
@media screen and (max-width: 768px) {
|
||||
|
||||
.auth-wrapper {
|
||||
flex-direction: column !important;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Panel Atas: Logo ── */
|
||||
.auth-left {
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
min-height: unset !important;
|
||||
padding: 40px 24px 32px !important;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(160deg, #ffffff 60%, #f0faf5 100%) !important;
|
||||
order: 0;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 50% !important;
|
||||
max-width: 185px !important;
|
||||
animation: none !important;
|
||||
filter: drop-shadow(0 8px 20px rgba(15,80,40,0.14)) !important;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 12px !important;
|
||||
font-size: 10px !important;
|
||||
letter-spacing: 2.5px !important;
|
||||
}
|
||||
|
||||
.deco-circle.c1,
|
||||
.deco-circle.c2 { display: none !important; }
|
||||
.deco-circle.c3 { width: 90px !important; height: 90px !important; top: 12px !important; left: 12px !important; }
|
||||
|
||||
/* ── Panel Bawah: Form ── */
|
||||
.auth-right {
|
||||
width: 100% !important;
|
||||
flex: 1 !important;
|
||||
padding: 32px 24px 48px !important;
|
||||
align-items: flex-start !important;
|
||||
justify-content: center !important;
|
||||
border-radius: 28px 28px 0 0 !important;
|
||||
margin-top: -24px !important;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.auth-card {
|
||||
max-width: 100% !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.card-header-area {
|
||||
margin-bottom: 20px !important;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
font-size: 10px !important;
|
||||
padding: 4px 12px !important;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 12px !important;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
padding: 12px 12px 12px 40px !important;
|
||||
border-radius: 12px !important;
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.btn-register {
|
||||
padding: 14px !important;
|
||||
font-size: 15px !important;
|
||||
border-radius: 12px !important;
|
||||
margin-top: 8px !important;
|
||||
}
|
||||
|
||||
.links-area {
|
||||
margin-top: 18px !important;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
font-size: 13px !important;
|
||||
padding: 4px 0 !important;
|
||||
display: inline-block !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* ─── Small Mobile ≤ 390px ─── */
|
||||
@media screen and (max-width: 390px) {
|
||||
.auth-left { padding: 32px 16px 24px !important; }
|
||||
.auth-left img { width: 46% !important; max-width: 160px !important; }
|
||||
.auth-right { padding: 26px 20px 40px !important; }
|
||||
}
|
||||
|
||||
/* ─── Landscape Mobile ─── */
|
||||
@media screen and (max-width: 768px) and (orientation: landscape) {
|
||||
.auth-left {
|
||||
padding: 18px 24px 16px !important;
|
||||
}
|
||||
.auth-left img { width: 26% !important; max-width: 100px !important; }
|
||||
.auth-left .brand-tagline { margin-top: 6px !important; font-size: 9px !important; }
|
||||
.auth-right {
|
||||
padding: 22px 24px 30px !important;
|
||||
border-radius: 20px 20px 0 0 !important;
|
||||
margin-top: -10px !important;
|
||||
}
|
||||
.card-header-area { margin-bottom: 12px !important; }
|
||||
.form-group { margin-bottom: 9px !important; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- LEFT: Logo Panel --}}
|
||||
{{-- TOP / LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
|
|
@ -288,7 +426,7 @@
|
|||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- RIGHT: Form Panel --}}
|
||||
{{-- BOTTOM / RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
|
|
@ -343,8 +481,8 @@
|
|||
<div class="form-group">
|
||||
<div class="input-wrap">
|
||||
<span class="icon">🔒</span>
|
||||
<input type="password" name="password" id="password" class="form-control" placeholder="Password" required>
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword()">👁</button>
|
||||
<input type="password" name="password" id="password" class="form-control" placeholder="Password" required autocomplete="new-password">
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword()" aria-label="Tampilkan/sembunyikan password">👁</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -4,19 +4,23 @@
|
|||
|
||||
<link href="https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
|
||||
|
||||
<style>
|
||||
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
|
||||
|
||||
body {
|
||||
html, body {
|
||||
font-family: 'Plus Jakarta Sans', sans-serif;
|
||||
height: 100vh;
|
||||
overflow: hidden;
|
||||
min-height: 100%;
|
||||
background: #0a3d1e;
|
||||
overflow-x: hidden;
|
||||
}
|
||||
|
||||
/* ─── WRAPPER ─── */
|
||||
.auth-wrapper {
|
||||
display: flex;
|
||||
height: 100vh;
|
||||
flex-direction: row;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ─── LEFT PANEL (Logo) ─── */
|
||||
|
|
@ -205,15 +209,17 @@
|
|||
|
||||
.form-control {
|
||||
width: 100%;
|
||||
padding: 11px 12px 11px 38px;
|
||||
padding: 11px 42px 11px 38px;
|
||||
border-radius: 10px;
|
||||
border: 1.5px solid rgba(255,255,255,0.2);
|
||||
background: rgba(255,255,255,0.94);
|
||||
color: #1a2e1a;
|
||||
font-size: 14px;
|
||||
font-size: 16px; /* cegah auto-zoom iOS */
|
||||
font-family: inherit;
|
||||
outline: none;
|
||||
transition: border 0.2s, box-shadow 0.2s;
|
||||
-webkit-appearance: none;
|
||||
appearance: none;
|
||||
}
|
||||
|
||||
.form-control::placeholder { color: #aab7aa; }
|
||||
|
|
@ -236,12 +242,18 @@
|
|||
border: none;
|
||||
padding: 0;
|
||||
line-height: 1;
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
/* ─── SUBMIT BUTTON ─── */
|
||||
.btn-login {
|
||||
width: 100%;
|
||||
padding: 12px;
|
||||
padding: 13px;
|
||||
border-radius: 10px;
|
||||
border: none;
|
||||
background: #ffffff;
|
||||
|
|
@ -254,6 +266,7 @@
|
|||
transition: transform 0.15s, box-shadow 0.2s, background 0.2s;
|
||||
box-shadow: 0 4px 18px rgba(0,0,0,0.15);
|
||||
margin-top: 4px;
|
||||
-webkit-tap-highlight-color: transparent;
|
||||
}
|
||||
|
||||
.btn-login:hover {
|
||||
|
|
@ -262,7 +275,10 @@
|
|||
box-shadow: 0 8px 24px rgba(0,0,0,0.2);
|
||||
}
|
||||
|
||||
.btn-login:active { transform: translateY(0); }
|
||||
.btn-login:active {
|
||||
transform: translateY(0);
|
||||
background: #e4f5ec;
|
||||
}
|
||||
|
||||
/* ─── BACK LINK ─── */
|
||||
.links-area {
|
||||
|
|
@ -279,16 +295,144 @@
|
|||
|
||||
.links-area a:hover { color: #fff; }
|
||||
|
||||
/* ─── RESPONSIVE ─── */
|
||||
@media (max-width: 768px) {
|
||||
.auth-left { display: none; }
|
||||
.auth-right { width: 100%; }
|
||||
/* ─── RESPONSIVE: Tablet ─── */
|
||||
@media screen and (min-width: 769px) and (max-width: 1024px) {
|
||||
.auth-left { width: 40%; }
|
||||
.auth-right { width: 60%; padding: 40px 28px; }
|
||||
.auth-left img { width: 80%; }
|
||||
}
|
||||
|
||||
/* ══════════════════════════════════════════
|
||||
MOBILE ≤ 768px — LAYOUT: atas-bawah
|
||||
══════════════════════════════════════════ */
|
||||
@media screen and (max-width: 768px) {
|
||||
|
||||
.auth-wrapper {
|
||||
flex-direction: column !important;
|
||||
min-height: 100vh;
|
||||
}
|
||||
|
||||
/* ── Panel Atas: Logo ── */
|
||||
.auth-left {
|
||||
width: 100% !important;
|
||||
height: auto !important;
|
||||
min-height: unset !important;
|
||||
padding: 44px 24px 36px !important;
|
||||
flex-shrink: 0;
|
||||
background: linear-gradient(160deg, #ffffff 60%, #f0faf5 100%) !important;
|
||||
order: 0;
|
||||
}
|
||||
|
||||
.auth-left img {
|
||||
width: 50% !important;
|
||||
max-width: 185px !important;
|
||||
animation: none !important;
|
||||
filter: drop-shadow(0 8px 20px rgba(15,80,40,0.14)) !important;
|
||||
}
|
||||
|
||||
.auth-left .brand-tagline {
|
||||
margin-top: 12px !important;
|
||||
font-size: 10px !important;
|
||||
letter-spacing: 2.5px !important;
|
||||
}
|
||||
|
||||
.deco-circle.c1,
|
||||
.deco-circle.c2 { display: none !important; }
|
||||
.deco-circle.c3 { width: 90px !important; height: 90px !important; top: 12px !important; left: 12px !important; }
|
||||
|
||||
/* ── Panel Bawah: Form ── */
|
||||
.auth-right {
|
||||
width: 100% !important;
|
||||
flex: 1 !important;
|
||||
padding: 36px 24px 52px !important;
|
||||
align-items: flex-start !important;
|
||||
justify-content: center !important;
|
||||
border-radius: 28px 28px 0 0 !important;
|
||||
margin-top: -24px !important;
|
||||
order: 1;
|
||||
}
|
||||
|
||||
.auth-card {
|
||||
max-width: 100% !important;
|
||||
width: 100% !important;
|
||||
}
|
||||
|
||||
.card-header-area {
|
||||
margin-bottom: 24px !important;
|
||||
}
|
||||
|
||||
.card-header-area .badge-pill {
|
||||
font-size: 10px !important;
|
||||
padding: 4px 12px !important;
|
||||
}
|
||||
|
||||
.card-header-area h4 {
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.card-header-area p {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-group {
|
||||
margin-bottom: 15px !important;
|
||||
}
|
||||
|
||||
.form-group label {
|
||||
font-size: 12px !important;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
padding: 13px 42px 13px 40px !important;
|
||||
border-radius: 12px !important;
|
||||
font-size: 16px !important;
|
||||
}
|
||||
|
||||
.btn-login {
|
||||
padding: 15px !important;
|
||||
font-size: 15px !important;
|
||||
border-radius: 12px !important;
|
||||
margin-top: 8px !important;
|
||||
}
|
||||
|
||||
.links-area {
|
||||
margin-top: 22px !important;
|
||||
}
|
||||
|
||||
.links-area a {
|
||||
font-size: 13px !important;
|
||||
padding: 4px 0 !important;
|
||||
display: inline-block !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* ─── Small Mobile ≤ 390px ─── */
|
||||
@media screen and (max-width: 390px) {
|
||||
.auth-left { padding: 36px 16px 28px !important; }
|
||||
.auth-left img { width: 46% !important; max-width: 160px !important; }
|
||||
.auth-right { padding: 28px 20px 44px !important; }
|
||||
}
|
||||
|
||||
/* ─── Landscape Mobile ─── */
|
||||
@media screen and (max-width: 768px) and (orientation: landscape) {
|
||||
.auth-left {
|
||||
padding: 18px 24px 16px !important;
|
||||
}
|
||||
.auth-left img { width: 26% !important; max-width: 100px !important; }
|
||||
.auth-left .brand-tagline { margin-top: 6px !important; font-size: 9px !important; }
|
||||
.auth-right {
|
||||
padding: 22px 24px 32px !important;
|
||||
border-radius: 20px 20px 0 0 !important;
|
||||
margin-top: -10px !important;
|
||||
}
|
||||
.card-header-area { margin-bottom: 16px !important; }
|
||||
.form-group { margin-bottom: 10px !important; }
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class="auth-wrapper">
|
||||
|
||||
{{-- LEFT: Logo Panel --}}
|
||||
{{-- TOP / LEFT: Logo Panel --}}
|
||||
<div class="auth-left">
|
||||
<div class="deco-circle c1"></div>
|
||||
<div class="deco-circle c2"></div>
|
||||
|
|
@ -297,7 +441,7 @@
|
|||
<span class="brand-tagline">Real Estate • Bondowoso</span>
|
||||
</div>
|
||||
|
||||
{{-- RIGHT: Form Panel --}}
|
||||
{{-- BOTTOM / RIGHT: Form Panel --}}
|
||||
<div class="auth-right">
|
||||
<div class="blob-top"></div>
|
||||
|
||||
|
|
@ -331,8 +475,8 @@
|
|||
<div class="input-wrap">
|
||||
<span class="icon">🔒</span>
|
||||
<input type="password" name="password" id="password" class="form-control"
|
||||
placeholder="Masukkan password baru" required>
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword('password', this)">👁</button>
|
||||
placeholder="Masukkan password baru" required autocomplete="new-password">
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword('password', this)" aria-label="Tampilkan/sembunyikan password">👁</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -341,8 +485,8 @@
|
|||
<div class="input-wrap">
|
||||
<span class="icon">🔒</span>
|
||||
<input type="password" name="password_confirmation" id="password_confirmation"
|
||||
class="form-control" placeholder="Ulangi password baru" required>
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword('password_confirmation', this)">👁</button>
|
||||
class="form-control" placeholder="Ulangi password baru" required autocomplete="new-password">
|
||||
<button type="button" class="toggle-eye" onclick="togglePassword('password_confirmation', this)" aria-label="Tampilkan/sembunyikan password">👁</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
@ -350,6 +494,11 @@ class="form-control" placeholder="Ulangi password baru" required>
|
|||
Reset Password
|
||||
</button>
|
||||
</form>
|
||||
|
||||
<div class="links-area">
|
||||
<a href="{{ route('login') }}">← Kembali ke Login</a>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
|
|
|||
|
|
@ -377,13 +377,6 @@ class="mobile-item {{ request()->routeIs('user.iuran.*') ? 'active' : '' }}">
|
|||
|
||||
@yield('scripts')
|
||||
|
||||
<div class="mobile-nav d-lg-none">
|
||||
<a href="{{ route('user.home') }}"><i class="fas fa-home"></i></a>
|
||||
<a href="{{ route('user.iuran.index') }}"><i class="fas fa-wallet"></i></a>
|
||||
<a href="{{ route('user.layanan.create') }}"><i class="fas fa-plus"></i></a>
|
||||
<a href="{{ route('user.layanan.status') }}"><i class="fas fa-list"></i></a>
|
||||
</div>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
|
|
@ -530,7 +523,6 @@ class="mobile-item {{ request()->routeIs('user.iuran.*') ? 'active' : '' }}">
|
|||
position: relative;
|
||||
}
|
||||
|
||||
/* Jembatan invisible menutup celah antara link dan dropdown */
|
||||
.has-dropdown::after {
|
||||
content: '';
|
||||
position: absolute;
|
||||
|
|
@ -795,7 +787,6 @@ class="mobile-item {{ request()->routeIs('user.iuran.*') ? 'active' : '' }}">
|
|||
setTimeout(() => {
|
||||
$('.alert').fadeOut('slow');
|
||||
}, 3000);
|
||||
|
||||
</script>
|
||||
|
||||
<script>
|
||||
|
|
|
|||
Loading…
Reference in New Issue