diff --git a/public/css/user/main.css b/public/css/user/main.css new file mode 100644 index 0000000..a474478 --- /dev/null +++ b/public/css/user/main.css @@ -0,0 +1,1125 @@ +/* +Template name: Nova (Customized for Flo.do) +Status: SLIDER FIXED & VARIABLES APPLIED +*/ + +/* ========================================= + 1. GLOBAL VARIABLES + ========================================= */ +:root, +[data-bs-theme=light] { + /* --- BRAND COLORS --- */ + --bs-primary: #3B8181; + /* Teal Utama */ + --bs-primary-rgb: 59, 129, 129; + --bs-primary-hover: #2f6666; + /* Hover Teal */ + + --bs-link-hover-color: #2a6161; + /* Link Hover Spesifik */ + + --flo-accent: #E05D44; + /* Merah Bata (Tombol Aksi) */ + --flo-accent-hover: #c04d36; + + /* --- STANDARD COLORS (Grayscale) --- */ + --bs-white: #ffffff; + --bs-white-rgb: 255, 255, 255; + + --bs-black: #000000; + /* Hitam Pekat */ + --bs-black-rgb: 0, 0, 0; + + --bs-gray-100: #f8f9fa; + /* Background Light */ + --bs-gray-200: #e9ecef; + /* Border Light */ + --bs-gray-300: #dee2e6; + /* Border Standard */ + --bs-gray-400: #ced4da; + --bs-gray-500: #adb5bd; + /* Icons / Disabled Text */ + --bs-gray-600: #6c757d; + /* Body Text */ + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + /* Dark Text */ + --bs-gray-900: #212529; + /* Heading Text */ + + /* --- THEME ASSIGNMENTS --- */ + --bs-body-bg: var(--bs-white); + --bs-body-color: var(--bs-gray-600); + --bs-heading-color: var(--bs-gray-900); + + /* Legacy Template Vars */ + --bs-secondary-rgb: 108, 117, 125; + --inverse-color-rgb: 33, 37, 41; + + /* --- LAYOUT --- */ + --navbar-height: 80px; + --header-spacing: 120px; +} + +/* ========================================= + 2. BASE STYLES + ========================================= */ +body { + font: 1rem/1.7 "Inter", sans-serif; + background-color: var(--bs-body-bg); + color: var(--bs-body-color); + -webkit-font-smoothing: antialiased; +} + +a { + transition: 0.3s all ease-in-out; + color: var(--bs-primary); + text-decoration: underline; +} + +a:hover { + text-decoration: none; + color: var(--bs-link-hover-color); + /* Updated Variable */ +} + +h1, +h2, +h3, +h4, +h5, +h6 { + color: var(--bs-heading-color); +} + +.container { + max-width: 1140px; +} + +.section { + padding: 70px 0; + scroll-margin-top: 60px; +} + +@media (max-width: 767.98px) { + .section { + padding: 40px 0; + } +} + +/* Helpers */ +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem 0 rgba(var(--bs-black-rgb), 0.05) !important; +} + +.shadow { + box-shadow: 0 0.5rem 1rem 0 rgba(var(--bs-black-rgb), 0.05) !important; +} + +.text-teal { + color: var(--bs-primary) !important; +} + +.fw-bold { + font-weight: 700 !important; +} + +.cursor-pointer { + cursor: pointer; +} + +.x-small { + font-size: 0.75rem; +} + +/* Buttons Default */ +.btn { + padding: 8px 26px; + background-color: var(--bs-primary); + color: var(--bs-white); + border: 1px solid transparent; + border-radius: 36px; + position: relative; + font-weight: 600; +} + +.btn:hover, +.btn:active, +.btn:focus { + color: var(--bs-white); + background-color: var(--bs-primary-hover) !important; + border: 1px solid var(--bs-primary-hover) !important; +} + +/* Form Controls */ +.form-control { + padding-top: 10px; + padding-bottom: 10px; + border-width: 1px; + font-size: 16px; + background-color: transparent; + border-color: rgba(var(--inverse-color-rgb), 0.1); +} + +.form-control:focus { + outline: none; + box-shadow: none; + border-color: var(--bs-primary); +} + +/* ========================================= + 3. NAVBAR + ========================================= */ +.fbs__net-navbar { + position: fixed !important; + top: 0; + left: 0; + right: 0; + width: 100%; + z-index: 99999; + background-color: var(--bs-white) !important; + border: none; + transition: 0.3s all ease-in-out; +} + +@media (min-width: 992px) { + .fbs__net-navbar { + padding: 0; + } +} + +.fbs__net-navbar .navbar-brand { + color: var(--bs-white); + font-size: 30px; + font-weight: bold; +} + +.fbs__net-navbar .navbar-brand .logo.dark { + display: none; +} + +.fbs__net-navbar .navbar-brand .logo.light { + display: block; +} + +/* Nav Links */ +.fbs__net-navbar .navbar-nav>li>.nav-link { + position: relative; + padding: 22px 10px; + font-size: 0.9375rem; + color: rgba(var(--inverse-color-rgb), 1); + transition: 0.3s all ease; +} + +.fbs__net-navbar .navbar-nav>li>.nav-link:hover, +.fbs__net-navbar .navbar-nav>li>.nav-link.active { + color: var(--bs-primary) !important; +} + +/* Animation Underline */ +.fbs__net-navbar .navbar-nav>li>.nav-link:before { + content: ""; + position: absolute; + width: calc(100% - 20px); + height: 1.5px; + bottom: 0; + left: 10px; + background: var(--bs-primary); + transform: scaleX(0); + transform-origin: bottom right; + transition: transform 0.35s ease-out; +} + +.fbs__net-navbar .navbar-nav>li>.nav-link:hover::before, +.fbs__net-navbar .navbar-nav>li>.nav-link.active:before { + transform: scaleX(1); + transform-origin: bottom left; +} + +/* Mobile Toggler */ +.fbs__net-navbar .fbs__net-navbar-toggler { + width: 50px; + height: 50px; + border-radius: 50%; + background-color: var(--bs-black); + color: var(--bs-white); + border: none; + display: none; +} + +@media (max-width: 991.98px) { + .fbs__net-navbar .navbar-nav>li>.nav-link { + padding-top: 10px; + padding-bottom: 10px; + } + + .fbs__net-navbar .fbs__net-navbar-toggler { + display: flex; + } +} + +/* Navbar Scrolled Active */ +.fbs__net-navbar.active { + box-shadow: 0 0.1875rem 0.375rem rgba(var(--bs-black-rgb), 0.05) !important; +} + +.fbs__net-navbar.active .navbar-brand { + color: rgba(var(--inverse-color-rgb), 1) !important; +} + + +/* ========================================= + 4. HERO SECTION + ========================================= */ +.hero__v6 { + padding: 10rem 0 !important; +} + +.hero__v6 .hero-subtitle, +.subtitle { + background: color-mix(in srgb, var(--bs-secondary-rgb), transparent 80%); + color: var(--bs-primary); + display: inline-block; + padding: 5px 12px; + border-radius: 7px; + font-weight: 600; + font-size: 0.75rem; + margin-bottom: 10px; +} + +.hero__v6 .hero-title { + font-size: 48px; +} + +@media (max-width: 1199.98px) { + .hero__v6 .hero-title { + font-size: 40px; + } +} + +@media (max-width: 991.98px) { + .hero__v6 .hero-title { + font-size: 30px; + } +} + +/* Images */ +.hero-image-wrapper { + position: relative; + height: 400px; + margin-top: -50px; + width: 100%; +} + +.arch-img { + position: absolute; + width: 55%; + height: 350px; + object-fit: cover; + border-radius: 200px 200px 0 0; +} + +.img-1 { + top: 0; + left: 0; + z-index: 1; +} + +.img-2 { + top: 50px; + right: 0; + z-index: 2; + border: 4px solid var(--bs-white); +} + +@media (max-width: 991px) { + .hero-image-wrapper { + height: 400px; + margin-top: 30px; + } + + .arch-img { + height: 300px; + } + + .img-2 { + top: 60px; + } +} + + +/* ========================================= + 5. LANDING SECTIONS + ========================================= */ +.section-buket { + padding-top: 80px !important; + padding-bottom: 80px; + background-color: var(--bs-gray-100); +} + +.section-foto { + padding-top: 80px; + padding-bottom: 80px; + background-color: var(--bs-white); +} + +.buket-title, +.foto-title { + font-weight: 800; + font-size: 2.5rem; + color: var(--bs-heading-color); + margin-bottom: 1.5rem; +} + +.buket-desc, +.foto-desc { + color: var(--bs-body-color); + line-height: 1.8; + font-size: 1.1rem; + margin-bottom: 2rem; +} + +/* Images */ +.buket-img, +.foto-img { + width: 100%; + object-fit: cover; + border-radius: 1rem; + box-shadow: 0 4px 6px rgba(0, 0, 0, 0.05); + transition: transform 0.3s ease; +} + +.buket-img:hover, +.foto-img:hover { + transform: scale(1.02); +} + +.buket-img.main-img { + height: 300px; +} + +.buket-img.secondary-img { + height: 250px; +} + +.mt-n-custom { + margin-top: -1.5rem !important; +} + +/* Custom Buttons */ +.btn-buket, +.btn-foto { + background-color: var(--flo-accent); + border: 1px solid var(--flo-accent); + color: var(--bs-white); + padding: 10px 30px; + border-radius: 50px; + font-weight: 600; + transition: all 0.3s ease; +} + +.btn-buket:hover, +.btn-foto:hover { + background-color: var(--flo-accent-hover); + color: var(--bs-white); + transform: translateY(-2px); +} + + +/* ========================================= + 6. KATALOG PAGES + ========================================= */ +.section-katalogbuket, +.section-bookingfoto { + background-color: var(--bs-white); + padding-top: var(--header-spacing); + padding-bottom: 50px; +} + +.katalogbuket-title, +.bookingfoto-title { + font-weight: 800; + font-size: 2rem; + color: var(--bs-black); + /* Menggunakan Black Pekat sesuai request */ +} + +/* Search */ +.katalogbuket-search-wrapper { + position: relative; + max-width: 500px; + margin: 0 auto; +} + +.katalogbuket-search-input { + background-color: var(--bs-gray-100); + border: none; + border-radius: 50px; + padding: 12px 20px 12px 45px; + font-size: 0.95rem; +} + +.katalogbuket-search-input:focus { + background-color: var(--bs-white); + box-shadow: 0 0 0 2px var(--bs-gray-200); +} + +.search-icon { + position: absolute; + left: 15px; + top: 50%; + transform: translateY(-50%); + color: var(--bs-gray-500); +} + +/* Filter Box */ +.katalogbuket-filter-box { + border: 1px solid var(--bs-gray-200); + border-radius: 16px; + padding: 24px; + background-color: var(--bs-white); +} + +.katalogbuket-category-list a { + text-decoration: none; + color: var(--bs-gray-600); + font-size: 0.95rem; + display: flex; + justify-content: space-between; + align-items: center; + transition: color 0.2s; +} + +.katalogbuket-category-list a:hover { + color: var(--bs-black); + font-weight: 600; +} + +.btn-size { + width: 40px; + height: 40px; + border-radius: 50%; + border: 1px solid var(--bs-gray-200); + background-color: var(--bs-gray-100); + color: var(--bs-gray-800); + font-size: 0.85rem; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.3s; +} + +.btn-size:hover { + border-color: var(--bs-black); +} + +.btn-size.active { + background-color: var(--bs-black); + color: var(--bs-white); + border-color: var(--bs-black); +} + +.btn-katalogbuket-dark { + background-color: var(--bs-black); + color: var(--bs-white); + border-radius: 50px; + padding: 10px; + font-weight: 600; + width: 100%; + border: none; + transition: all 0.3s; +} + +.btn-katalogbuket-dark:hover { + background-color: var(--bs-gray-800); + color: var(--bs-white); +} + +/* Grid Cards (Buket) */ +.katalogbuket-card { + cursor: pointer; + transition: transform 0.3s; + padding: 8px 10px; + border: 1px solid var(--bs-gray-200); + border-radius: 12px; +} + +.katalogbuket-card:hover { + transform: translateY(-5px); +} + +.katalogbuket-card .img-wrapper img { + width: 100%; + height: 200px; + object-fit: cover; + background-color: var(--bs-gray-100); + transition: transform 0.5s ease; +} + +.katalogbuket-card:hover .img-wrapper img { + transform: scale(1.03); +} + +.katalogbuket-product-title { + font-weight: 700; + font-size: 1rem; + margin-bottom: 4px; + color: var(--bs-black); +} + +.katalogbuket-product-price { + font-size: 0.9rem; + color: var(--bs-gray-600); + font-weight: 500; +} + +/* Grid Cards (Foto - Clean) */ +.bookingfoto-card { + background: transparent; + border: none; + padding: 0; + width: 100%; + max-width: 180px; + margin: 0 auto; + cursor: pointer; + transition: transform 0.3s ease; +} + +@media (max-width: 991px) { + .bookingfoto-card { + width: 100% !important; + } +} + +.bookingfoto-card:hover { + transform: translateY(-5px); +} + +.bookingfoto-card .img-wrapper { + width: 100%; + position: relative; + overflow: hidden; + border-radius: 20px; +} + +.bookingfoto-card .img-wrapper img { + width: 100%; + aspect-ratio: 1 / 1; + object-fit: cover; + display: block; + transition: transform 0.5s ease; +} + +.bookingfoto-card:hover .img-wrapper img { + transform: scale(1.05); +} + +.bookingfoto-product-title { + font-weight: 700; + font-size: 1.1rem; + margin-bottom: 4px; + color: var(--bs-heading-color); +} + +.bookingfoto-product-price { + font-size: 0.95rem; + color: var(--bs-gray-600); + font-weight: 500; + margin-bottom: 0; +} + + +/* ========================================= + 7. DETAIL PAGES + ========================================= */ +.section-detailbuket, +.section-detailfoto { + background-color: var(--bs-white); + padding-top: var(--header-spacing); + padding-bottom: 80px; +} + +.detailbuket-title { + font-weight: 800; + font-size: 2.2rem; + color: var(--bs-heading-color); + margin-bottom: 10px; +} + +.detailbuket-price { + font-weight: 700; + font-size: 1.5rem; + color: var(--bs-gray-800); + margin-bottom: 20px; +} + +/* Image Frame */ +.detailbuket-img-frame { + background-color: var(--bs-white); + padding: 15px; + border-radius: 20px; + box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08); + border: 1px solid #f0f0f0; +} + +.detailbuket-img-frame img { + width: 100%; + border-radius: 12px; + object-fit: cover; + aspect-ratio: 1 / 1; +} + +/* Specs & Note */ +.detailbuket-specs .icon-box { + width: 40px; + height: 40px; + border-radius: 50%; + font-size: 1.2rem; + background-color: rgba(var(--bs-primary-rgb), 0.1); + color: var(--bs-primary); + display: flex; + align-items: center; + justify-content: center; +} + +.vr { + width: 1px; + background-color: var(--bs-black); +} + +.detailbuket-note { + font-size: 0.95rem; + color: var(--bs-gray-700); + background-color: var(--bs-gray-100); + padding: 15px; + border-radius: 8px; + border-left: 4px solid var(--bs-primary); +} + +/* Detail Foto */ +.detailfoto-card { + background: var(--bs-white); + border: 1px solid var(--bs-gray-200); + border-radius: 16px; +} + +.detailfoto-thumb { + width: 120px; + height: 120px; + object-fit: cover; + box-shadow: 0 4px 10px rgba(0, 0, 0, 0.1); +} + +.detailfoto-addon-item { + display: flex; + justify-content: space-between; + align-items: center; + padding: 15px; + margin-bottom: 10px; + border: 1px solid var(--bs-gray-200); + border-radius: 12px; + background: var(--bs-white); +} + +/* Counter & Date */ +.detailfoto-counter { + display: flex; + align-items: center; + gap: 10px; +} + +.detailfoto-counter input { + width: 40px !important; + border: none; + background: transparent; + text-align: center; + font-weight: bold; + padding: 0; +} + +.btn-counter { + width: 28px; + height: 28px; + border: 1px solid var(--bs-gray-300); + background: var(--bs-white); + border-radius: 6px; + display: flex; + align-items: center; + justify-content: center; + cursor: pointer; + font-size: 14px; + transition: all 0.2s; +} + +.btn-counter:hover { + background: var(--bs-primary); + color: var(--bs-white); + border-color: var(--bs-primary); +} + +.detailfoto-date-grid { + display: grid; + grid-template-columns: repeat(7, 1fr); + text-align: center; + gap: 10px; +} + +.date-item { + height: 35px; + width: 35px; + margin: 0 auto; + display: flex; + align-items: center; + justify-content: center; + border-radius: 50%; + font-size: 0.9rem; + cursor: pointer; + transition: all 0.2s; +} + +.date-item:hover:not(.disabled) { + background-color: var(--bs-gray-200); + color: var(--bs-primary); +} + +.date-item.selected { + background-color: var(--bs-primary); + color: var(--bs-white); +} + +.date-item.disabled { + color: var(--bs-gray-400); + cursor: default; +} + +.btn-time { + width: 100%; + border: 1px solid var(--bs-primary); + color: var(--bs-primary); + border-radius: 50px; + padding: 8px; + font-size: 0.9rem; +} + +.btn-time:hover, +.btn-time.active { + background-color: var(--bs-primary); + color: var(--bs-white); +} + +/* Detail Buttons */ +.btn-detailbuket-primary, +.btn-detailfoto-primary { + background-color: var(--bs-primary); + border: 1px solid var(--bs-primary); + color: var(--bs-white); + padding: 12px 30px; + border-radius: 50px; + font-weight: 600; + text-align: center; + display: inline-block; + transition: all 0.3s; +} + +.btn-detailbuket-primary:hover, +.btn-detailfoto-primary:hover { + background-color: var(--bs-primary-hover); + color: var(--bs-white); + transform: translateY(-3px); +} + +.btn-detailbuket-secondary, +.btn-detailfoto-outline { + background-color: var(--bs-white); + border: 1px solid #dee2e6; + color: var(--bs-primary); + padding: 12px 30px; + border-radius: 50px; + font-weight: 600; + text-align: center; +} + +.btn-detailbuket-secondary:hover, +.btn-detailfoto-outline:hover { + background-color: var(--bs-gray-100); + border-color: var(--bs-primary); +} + + +/* ========================================= + 8. FORMULIR PAGES + ========================================= */ +.section-formulirbuket, +.section-formulirfoto { + background-color: var(--bs-white); + padding-top: var(--header-spacing); + padding-bottom: 80px; +} + +.formulirbuket-page-title, +.formulirfoto-page-title { + font-weight: 800; + font-size: 2rem; + color: var(--bs-heading-color); +} + +/* Inputs & Cards */ +.formulirbuket-input, +.formulirfoto-input { + border: 1px solid var(--bs-gray-300); + border-radius: 10px; + padding: 12px 15px; + font-size: 0.95rem; + width: 100%; +} + +.formulirbuket-input:focus, +.formulirfoto-input:focus { + border-color: var(--bs-primary); + box-shadow: 0 0 0 4px rgba(59, 129, 129, 0.1); +} + +.formulirfoto-card, +.formulirfoto-payment-box, +.formulirbuket-product-summary { + background: var(--bs-white); + border: 1px solid #e0e0e0; + border-radius: 12px; + padding: 24px; +} + +.formulirbuket-product-summary { + padding: 15px; +} + +.formulirbuket-product-summary img { + width: 60px; + height: 60px; + object-fit: cover; +} + +/* Bank & Upload */ +.formulirbuket-bank-card, +.formulirfoto-bank-card { + border: 1px solid #e0e0e0; + border-radius: 10px; + padding: 12px; + background: var(--bs-white); +} + +.formulirbuket-upload-area, +.formulirfoto-upload-area { + border: 2px dashed var(--bs-gray-300); + border-radius: 12px; + background-color: var(--bs-gray-100); + transition: all 0.3s; +} + +.formulirbuket-upload-area:hover, +.formulirfoto-upload-area:hover { + border-color: var(--bs-primary); + background-color: var(--bs-gray-200); +} + +/* Buttons */ +.formulirbuket-btn-submit, +.formulirfoto-btn-submit { + background-color: var(--bs-primary); + color: var(--bs-white); + width: 100%; + padding: 12px; + border-radius: 50px; + border: none; + font-weight: 600; +} + +.formulirbuket-btn-submit:hover, +.formulirfoto-btn-submit:hover { + background-color: var(--bs-primary-hover); +} + +.formulirbuket-btn-cancel, +.formulirfoto-btn-cancel { + background-color: var(--bs-white); + color: var(--bs-gray-600); + width: 100%; + padding: 12px; + border-radius: 50px; + border: 1px solid var(--bs-gray-300); + text-align: center; + display: block; +} + +.formulirbuket-btn-cancel:hover, +.formulirfoto-btn-cancel:hover { + background-color: var(--bs-gray-100); + color: var(--bs-gray-800); +} + + +/* ========================================= + 9. FAQ SECTION (Fixes) + ========================================= */ +.faq__v2 { + background-color: rgba(var(--inverse-color-rgb), 0.02); +} + +.faq__v2 .subtitle { + background-color: rgba(var(--bs-secondary-rgb), 0.2); + color: var(--bs-primary); + padding: 5px 12px; + border-radius: 7px; + font-weight: 600; + font-size: 0.75rem; +} + +.faq__v2 .custom-accordion .accordion-item { + border: none; + margin-bottom: 10px; + border-radius: 10px; + overflow: hidden; + transition: 0.3s all ease-in-out; +} + +.faq__v2 .custom-accordion .accordion-button { + font-size: 18px; + font-weight: 500; + color: var(--bs-heading-color); + padding: 20px; + border: none; + outline: none; +} + +.faq__v2 .custom-accordion .accordion-button:focus { + box-shadow: none !important; + border-color: transparent; +} + +.faq__v2 .custom-accordion .accordion-button:not(.collapsed) { + background-color: transparent; + color: var(--bs-primary); + box-shadow: none; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); +} + +/* Icon */ +.faq__v2 .custom-accordion .accordion-button::after { + content: "\f4fe"; + font-family: "bootstrap-icons"; + color: var(--bs-primary); + font-size: 30px; + background-image: none; + transform: rotate(0deg); + width: auto; + height: auto; +} + +.faq__v2 .custom-accordion .accordion-button:not(.collapsed)::after { + content: "\f2ea"; + transform: rotate(0deg); +} + + +/* ========================================= + 10. FOOTER & UTILS + ========================================= */ +.footer { + background-color: rgba(var(--bs-primary-rgb), 0.05); + color: var(--bs-heading-color); + font-size: 0.9rem; +} + +.footer-menu a { + color: var(--bs-black); + text-decoration: none; +} + +.footer-menu a:hover { + color: var(--bs-primary-hover); +} + +.copyright-bar { + background-color: var(--bs-primary); + color: var(--bs-white); +} + +.back-to-top { + position: fixed; + visibility: hidden; + opacity: 0; + right: 15px; + bottom: 15px; + z-index: 996; + background: var(--bs-primary); + width: 44px; + height: 44px; + border-radius: 50px; + display: flex; + align-items: center; + justify-content: center; + transition: all 0.4s; +} + +.back-to-top i { + font-size: 28px; + color: var(--bs-white); + line-height: 0; +} + +.back-to-top:hover { + background: var(--bs-primary-hover); + transform: translateY(-3px); +} + +.back-to-top.active { + visibility: visible; + opacity: 1; + bottom: 30px; +} + +/* SLIDER RANGE FIX (Black Handles & Track) */ +.noUi-connect { + background: var(--bs-black); + /* Batang Hitam */ +} + +.noUi-horizontal { + height: 6px; + border: none; + background: var(--bs-gray-200); + /* Track Abu */ +} + +.noUi-handle { + background: var(--bs-black); + border: 2px solid var(--bs-white); + border-radius: 50%; + width: 18px !important; + height: 18px !important; + right: -9px !important; + top: -6px !important; + /* Fix Posisi Vertikal */ + box-shadow: 0 2px 5px rgba(0, 0, 0, 0.2); + cursor: pointer; +} + +.noUi-handle:before, +.noUi-handle:after { + display: none; +} + +@keyframes slideInRight { + from { + opacity: 0; + transform: translateX(20px); + } + + to { + opacity: 1; + transform: translateX(0); + } +} + +.fade-in-right { + animation: slideInRight 0.5s ease forwards; +} \ No newline at end of file