*{box-sizing:border-box;margin:0;padding:0}
:root{--primary:#087ea4;--secondary:#ff7a00;--dark:#12303b;--light:#f5f8fa;--white:#fff;--text:#24343b;--muted:#71818a}
html{scroll-behavior:smooth}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;background:var(--light);color:var(--text);font-size:14px;padding-bottom:68px}
a{text-decoration:none;color:inherit}
button,input,select{font:inherit}
.container{width:100%;max-width:1200px;margin:auto;padding:0 14px}
.topbar{position:sticky;top:0;z-index:1000;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-bottom:1px solid #edf1f3}
.topbar-inner{height:58px;display:flex;align-items:center;justify-content:space-between;padding:0 14px}
.brand{display:flex;align-items:center;gap:8px;font-size:18px;font-weight:800;color:var(--dark)}
.brand>span:last-child span{color:var(--secondary)}
.brand-icon{width:34px;height:34px;border-radius:10px;background:linear-gradient(135deg,var(--primary),#04a7d4);color:#fff;display:grid;place-items:center;font-size:16px}
.menu-btn{border:0;background:#f1f5f6;width:36px;height:36px;border-radius:10px;color:var(--dark);cursor:pointer}
.hero{padding:18px 0 12px}
.hero-box{position:relative;overflow:hidden;background:linear-gradient(135deg,#057a9f,#02a6cf);border-radius:20px;padding:24px 18px;color:#fff;box-shadow:0 8px 25px rgba(0,126,164,.18)}
.hero-box:after{content:"";position:absolute;width:160px;height:160px;border-radius:50%;background:rgba(255,255,255,.08);right:-55px;top:-50px}
.hero h1{font-size:25px;line-height:1.2;margin-bottom:7px;font-weight:800}
.hero p{font-size:12px;opacity:.9;margin-bottom:18px}
.search-box{position:relative;z-index:2;background:#fff;border-radius:14px;padding:5px;display:flex;align-items:center;box-shadow:0 5px 20px rgba(0,0,0,.12)}
.search-box input{width:100%;border:0;outline:0;padding:10px;font-size:13px;color:var(--text);background:transparent}
.search-box button{border:0;width:40px;height:40px;border-radius:11px;background:var(--secondary);color:#fff;cursor:pointer}
.section{padding:10px 0 6px}
.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:11px}
.section-title{font-size:17px;font-weight:800;color:var(--dark)}
.section-link{font-size:11px;color:var(--primary);font-weight:700}
.category-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.category-card{background:#fff;border-radius:13px;padding:12px 6px;text-align:center;border:1px solid #edf1f3;transition:.2s}
.category-card:active{transform:scale(.97)}
.category-icon{width:35px;height:35px;margin:0 auto 6px;border-radius:11px;display:grid;place-items:center;background:#e8f7fb;color:var(--primary)}
.category-card strong{display:block;font-size:11px;color:var(--dark)}
.category-card small{display:block;color:var(--muted);font-size:9px;margin-top:2px}
.boat-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.boat-card{background:#fff;border-radius:16px;overflow:hidden;border:1px solid #edf1f3;box-shadow:0 4px 15px rgba(20,50,60,.05);transition:.2s}
.boat-card:active{transform:scale(.98)}
.boat-image{position:relative;aspect-ratio:16/10;background:#e9eef0;overflow:hidden}
.boat-image img{display:block;width:100%;height:100%;object-fit:cover}
.boat-category{position:absolute;top:7px;left:7px;background:rgba(0,0,0,.65);color:#fff;border-radius:20px;padding:4px 7px;font-size:9px;font-weight:700}
.boat-content{padding:10px}
.boat-content h3{font-size:13px;color:var(--dark);font-weight:800;margin-bottom:6px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.route{display:flex;align-items:center;gap:4px;color:var(--muted);font-size:10px;white-space:nowrap;overflow:hidden}
.route span{overflow:hidden;text-overflow:ellipsis}
.route i{color:var(--primary);font-size:9px;flex-shrink:0}
.boat-bottom{display:flex;align-items:center;justify-content:space-between;margin-top:9px;padding-top:8px;border-top:1px solid #f0f2f3}
.boat-price{font-size:12px;color:var(--secondary);font-weight:800}
.boat-time{font-size:9px;color:var(--muted)}
.empty-state{background:#fff;border-radius:15px;text-align:center;padding:30px 15px;color:var(--muted)}
.empty-state i{font-size:28px;margin-bottom:8px;color:#ccd5d8}
.footer{text-align:center;padding:25px 15px 15px;color:#9aa8ad;font-size:10px;line-height:1.8}
.bottom-nav{position:fixed;bottom:0;left:0;right:0;height:62px;background:rgba(255,255,255,.97);backdrop-filter:blur(12px);border-top:1px solid #e9eef0;display:grid;grid-template-columns:repeat(4,1fr);z-index:2000;padding-bottom:env(safe-area-inset-bottom)}
.bottom-item{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;color:#87959a;font-size:9px;font-weight:600}
.bottom-item i{font-size:18px}
.bottom-item.active{color:var(--primary)}
@media(min-width:600px){
.container{padding:0 20px}
.hero-box{padding:32px}
.hero h1{font-size:32px}
.boat-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.category-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(min-width:992px){
body{padding-bottom:0}
.bottom-nav{display:none}
.boat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}
.container{padding:0 25px}
}

.page-header{padding:18px 0 8px}
.page-title{margin-bottom:14px}
.page-title h1{font-size:22px;color:var(--dark);font-weight:800;margin-bottom:4px}
.page-title p{font-size:11px;color:var(--muted)}
.boat-search{display:flex;gap:7px;background:#fff;padding:5px;border:1px solid #edf1f3;border-radius:14px}
.search-input{display:flex;align-items:center;flex:1;min-width:0}
.search-input i{margin:0 3px 0 9px;color:#9aa8ad;font-size:13px}
.search-input input{width:100%;min-width:0;border:0;outline:0;padding:9px 7px;font-size:12px;background:transparent}
.boat-search button{border:0;background:var(--primary);color:#fff;border-radius:10px;padding:0 15px;font-size:11px;font-weight:700}
.filter-scroll{display:flex;gap:7px;overflow-x:auto;padding:2px 1px 9px;scrollbar-width:none}
.filter-scroll::-webkit-scrollbar{display:none}
.filter-item{flex:0 0 auto;padding:7px 13px;border-radius:20px;background:#fff;border:1px solid #e7edef;color:#71818a;font-size:10px;font-weight:700}
.filter-item.active{background:var(--primary);border-color:var(--primary);color:#fff}
.result-info{display:flex;align-items:center;justify-content:space-between;margin:4px 0 11px;color:var(--muted);font-size:10px}
.result-info strong{color:var(--dark)}
.boat-status{position:absolute;right:7px;top:7px;background:rgba(255,255,255,.94);color:#159447;padding:4px 7px;border-radius:20px;font-size:8px;font-weight:700}
.boat-status i{margin-right:2px}
.boat-info{margin-top:7px;font-size:9px;color:var(--muted)}
.boat-info i{color:var(--primary);margin-right:3px}
.boat-bottom small{display:block;color:#9aa8ad;font-size:8px;margin-bottom:2px}
.boat-bottom strong{display:block;color:var(--secondary);font-size:12px}
.book-arrow{width:28px;height:28px;border-radius:9px;background:#eaf7fa;color:var(--primary);display:grid;place-items:center;font-size:15px}
.empty-state{margin-top:15px;background:#fff;border-radius:18px;padding:38px 20px;text-align:center;border:1px solid #edf1f3}
.empty-icon{width:55px;height:55px;border-radius:18px;background:#edf8fa;color:var(--primary);display:grid;place-items:center;margin:0 auto 12px;font-size:23px}
.empty-state h3{font-size:15px;color:var(--dark);margin-bottom:5px}
.empty-state p{font-size:11px;color:var(--muted);margin-bottom:15px}
.reset-btn{display:inline-block;background:var(--primary);color:#fff;padding:9px 15px;border-radius:10px;font-size:10px;font-weight:700}

.booking-page{padding:12px 0 20px}
.back-link{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:11px;font-weight:600;margin-bottom:12px}
.back-link i{font-size:17px}
.booking-grid{display:grid;grid-template-columns:1fr;gap:12px}
.booking-boat-card{background:#fff;border-radius:17px;overflow:hidden;border:1px solid #edf1f3}
.booking-boat-image{
    position:relative;
    width:100%;
    height:180px;
    overflow:hidden;
    background:#e9eef0;
}
.booking-boat-image img{
    width:100%;
    height:100%;
    object-fit:cover;
    display:block;
}
.booking-boat-image span{position:absolute;left:9px;top:9px;background:rgba(0,0,0,.65);color:#fff;padding:5px 9px;border-radius:20px;font-size:9px;font-weight:700}
.booking-boat-content{padding:14px}
.booking-boat-content h1{font-size:18px;color:var(--dark);font-weight:800;margin-bottom:13px}
.booking-route{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:8px}
.booking-route small{display:block;color:#9aa8ad;font-size:9px;margin-bottom:2px}
.booking-route strong{display:block;color:var(--dark);font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.booking-route i{color:var(--primary);font-size:14px}
.booking-meta{display:flex;gap:12px;margin-top:13px;padding-top:11px;border-top:1px solid #edf1f3;color:var(--muted);font-size:9px}
.booking-meta i{color:var(--primary);margin-right:3px}
.form-section{background:#fff;border-radius:17px;border:1px solid #edf1f3;padding:15px;margin-top:12px}
.form-title{display:flex;align-items:center;gap:9px;margin-bottom:15px}
.form-title>span{width:27px;height:27px;border-radius:9px;background:#eaf7fa;color:var(--primary);display:grid;place-items:center;font-size:11px;font-weight:800}
.form-title strong{display:block;color:var(--dark);font-size:13px}
.form-title small{display:block;color:var(--muted);font-size:9px;margin-top:2px}
.form-grid{display:grid;grid-template-columns:1fr;gap:11px}
.form-group label{display:block;font-size:10px;color:var(--dark);font-weight:700;margin-bottom:5px}
.form-group label small{color:#9aa8ad;font-weight:400}
.input-wrap{display:flex;align-items:center;border:1px solid #e4eaec;border-radius:11px;background:#fafcfc;min-height:42px}
.input-wrap:focus-within{border-color:var(--primary);background:#fff}
.input-wrap i{width:34px;text-align:center;color:#9aa8ad;font-size:12px}
.input-wrap input,.input-wrap select{width:100%;height:40px;border:0;outline:0;background:transparent;padding:0 9px 0 0;color:var(--text);font-size:11px}
.form-group textarea{width:100%;border:1px solid #e4eaec;border-radius:11px;background:#fafcfc;padding:11px;outline:0;resize:none;font-size:11px;color:var(--text)}
.form-group textarea:focus{border-color:var(--primary);background:#fff}
.booking-summary{position:sticky;bottom:70px;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border:1px solid #e7edef;border-radius:15px;padding:10px;margin-top:12px;display:flex;align-items:center;justify-content:space-between;gap:8px;box-shadow:0 5px 20px rgba(0,0,0,.08)}
.booking-summary small{display:block;font-size:8px;color:var(--muted)}
.booking-summary strong{display:block;font-size:15px;color:var(--secondary);margin-top:2px}
.booking-summary button{border:0;background:var(--primary);color:#fff;border-radius:11px;padding:11px 13px;font-size:10px;font-weight:700;white-space:nowrap}
.booking-summary button i{margin-left:4px}
.booking-side{display:none}
.price-card{background:#fff;border-radius:17px;border:1px solid #edf1f3;padding:17px}
.price-label{font-size:10px;color:var(--muted)}
.price{font-size:20px;color:var(--secondary);font-weight:800;margin:3px 0 17px}
.price-line{display:flex;justify-content:space-between;padding:9px 0;border-top:1px solid #edf1f3;font-size:10px;color:var(--muted)}
.price-line strong{color:var(--dark)}
.price-total{display:flex;justify-content:space-between;border-top:1px dashed #dce4e6;margin-top:4px;padding-top:13px}
.price-total span{font-size:11px;font-weight:700;color:var(--dark)}
.price-total strong{font-size:17px;color:var(--secondary)}
.safe-box{display:flex;gap:10px;background:#eaf7fa;border-radius:15px;padding:13px;margin-top:10px;color:var(--primary)}
.safe-box>i{font-size:20px}
.safe-box strong{display:block;font-size:11px}
.safe-box p{font-size:9px;color:#66828a;margin-top:3px;line-height:1.5}
@media(min-width:600px){
.booking-page{padding-top:20px}
.form-grid{grid-template-columns:1fr 1fr}
.form-group.full{grid-column:1/-1}
.booking-summary{bottom:15px}
}
@media(min-width:992px){
    .booking-summary{
        display:flex;
        position:static;
        margin-top:12px;
        box-shadow:none;
        background:#fff;
        backdrop-filter:none;
    }
}

.success-page{padding:25px 0}
.success-card{background:#fff;border:1px solid #edf1f3;border-radius:20px;padding:22px 16px;text-align:center;max-width:520px;margin:auto;box-shadow:0 6px 25px rgba(20,50,60,.05)}
.success-icon{width:62px;height:62px;border-radius:50%;background:#e8f8ef;color:#16a05d;display:grid;place-items:center;margin:0 auto 13px;font-size:25px}
.success-card h1{font-size:21px;color:var(--dark);font-weight:800;margin-bottom:5px}
.success-card>p{font-size:11px;color:var(--muted);margin-bottom:18px}
.booking-code{position:relative;background:#f3fafc;border:1px dashed #b8dfe8;border-radius:13px;padding:11px 45px;margin-bottom:16px}
.booking-code small{display:block;font-size:8px;color:var(--muted);margin-bottom:3px}
.booking-code strong{font-size:17px;letter-spacing:1px;color:var(--primary)}
.booking-code button{position:absolute;right:9px;top:50%;transform:translateY(-50%);border:0;background:#fff;color:var(--primary);width:30px;height:30px;border-radius:9px}
.success-info{border:1px solid #edf1f3;border-radius:13px;padding:3px 12px;text-align:left}
.success-row{display:flex;justify-content:space-between;gap:15px;padding:10px 0;border-bottom:1px solid #f0f2f3}
.success-row:last-child{border-bottom:0}
.success-row span{font-size:10px;color:var(--muted)}
.success-row strong{font-size:10px;color:var(--dark);text-align:right}
.success-row.total{padding-top:13px;margin-top:2px;border-top:1px dashed #dce4e6;border-bottom:0}
.success-row.total span{font-weight:700;color:var(--dark)}
.success-row.total strong{font-size:15px;color:var(--secondary)}
.payment-notice{display:flex;gap:10px;text-align:left;background:#fff8ed;color:#e17b00;border-radius:13px;padding:12px;margin-top:12px}
.payment-notice>i{font-size:19px}
.payment-notice strong{display:block;font-size:10px}
.payment-notice p{font-size:9px;color:#92795b;line-height:1.5;margin-top:3px}
.success-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:15px}
.btn-primary,.btn-secondary{display:flex;align-items:center;justify-content:center;min-height:40px;border-radius:11px;font-size:10px;font-weight:700}
.btn-primary{background:var(--primary);color:#fff}
.btn-secondary{background:#f1f5f6;color:var(--dark)}
.btn-primary i{margin-right:5px}
@media(min-width:600px){
.success-page{padding-top:40px}
.success-card{padding:28px}
}

/* NOTIFIKASI BOOKING */
.alert-error{display:flex;align-items:center;gap:8px;background:#fff0f0;color:#d64545;border:1px solid #ffd8d8;border-radius:11px;padding:10px 12px;margin-bottom:11px;font-size:10px}
.alert-error i{font-size:15px}

/* CEK BOOKING */
.check-page{padding:22px 0}
.check-header{text-align:center;margin-bottom:17px}
.check-icon{width:55px;height:55px;border-radius:17px;background:#eaf7fa;color:var(--primary);display:grid;place-items:center;margin:0 auto 10px;font-size:23px}
.check-header h1{font-size:21px;color:var(--dark);font-weight:800;margin-bottom:4px}
.check-header p{font-size:10px;color:var(--muted)}
.check-form{display:flex;gap:7px;background:#fff;padding:5px;border:1px solid #edf1f3;border-radius:14px;margin-bottom:14px}
.check-input{display:flex;align-items:center;flex:1;min-width:0}
.check-input i{margin-left:9px;color:#9aa8ad;font-size:12px}
.check-input input{width:100%;min-width:0;border:0;outline:0;padding:10px 8px;font-size:11px;background:transparent}
.check-form button{border:0;background:var(--primary);color:#fff;border-radius:10px;padding:0 16px;font-size:10px;font-weight:700}
.booking-result{background:#fff;border:1px solid #edf1f3;border-radius:18px;padding:14px;box-shadow:0 5px 20px rgba(20,50,60,.05)}
.result-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:13px;border-bottom:1px dashed #dce4e6}
.result-head small{display:block;font-size:8px;color:var(--muted);margin-bottom:3px}
.result-head strong{font-size:14px;letter-spacing:.5px;color:var(--primary)}
.status-badge{font-size:8px;font-weight:700;padding:5px 8px;border-radius:20px}
.status-payment{background:#fff3df;color:#d57b00}
.status-verification{background:#eef3ff;color:#536db5}
.status-paid{background:#e8f8ef;color:#159447}
.status-completed{background:#eaf7fa;color:var(--primary)}
.status-cancelled{background:#fff0f0;color:#d64545}
.result-boat{display:flex;gap:10px;padding:13px 0;border-bottom:1px solid #edf1f3}
.result-boat-image{width:70px;height:55px;border-radius:11px;overflow:hidden;flex-shrink:0;background:#e9eef0}
.result-boat-image img{width:100%;height:100%;object-fit:cover}
.result-boat small{font-size:8px;color:var(--secondary)}
.result-boat h2{font-size:13px;color:var(--dark);font-weight:800;margin:2px 0 5px}
.result-route{display:flex;align-items:center;gap:5px;font-size:9px;color:var(--muted)}
.result-route i{color:var(--primary)}
.result-details{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:13px 0}
.result-details>div{display:flex;gap:7px;align-items:flex-start}
.result-details>div>i{color:var(--primary);font-size:13px;margin-top:2px;width:15px}
.result-details span{font-size:8px;color:var(--muted)}
.result-details strong{display:block;color:var(--dark);font-size:9px;margin-top:3px}
.result-total{display:flex;align-items:center;justify-content:space-between;border-top:1px dashed #dce4e6;padding-top:13px}
.result-total span{font-size:10px;color:var(--dark);font-weight:700}
.result-total strong{font-size:16px;color:var(--secondary)}
.result-notice{display:flex;gap:9px;margin-top:12px;padding:11px;border-radius:12px;text-align:left}
.result-notice>i{font-size:17px}
.result-notice strong{display:block;font-size:9px}
.result-notice p{font-size:8px;margin-top:3px;line-height:1.5}
.result-notice.warning{background:#fff8ed;color:#e17b00}
.result-notice.warning p{color:#92795b}
.result-notice.info{background:#eef3ff;color:#536db5}
.result-notice.info p{color:#7180a5}
.result-notice.success{background:#e8f8ef;color:#159447}
.result-notice.success p{color:#668f78}
.result-notice.danger{background:#fff0f0;color:#d64545}
.result-notice.danger p{color:#987070}
.result-button{display:flex;align-items:center;justify-content:center;gap:5px;background:var(--primary);color:#fff;border-radius:11px;min-height:40px;margin-top:10px;font-size:10px;font-weight:700}
.not-found{background:#fff;border:1px solid #edf1f3;border-radius:18px;text-align:center;padding:35px 18px}
.not-found>div{width:52px;height:52px;border-radius:16px;background:#f1f5f6;color:#9aa8ad;display:grid;place-items:center;margin:0 auto 10px;font-size:20px}
.not-found h3{font-size:14px;color:var(--dark);margin-bottom:5px}
.not-found p{font-size:10px;color:var(--muted);line-height:1.5}
.check-help{display:grid;gap:9px}
.help-item{display:flex;gap:10px;background:#fff;border:1px solid #edf1f3;border-radius:15px;padding:13px}
.help-item>i{width:34px;height:34px;border-radius:11px;background:#eaf7fa;color:var(--primary);display:grid;place-items:center;font-size:15px;flex-shrink:0}
.help-item strong{display:block;color:var(--dark);font-size:10px}
.help-item p{font-size:8px;color:var(--muted);line-height:1.5;margin-top:3px}
@media(min-width:600px){
.check-page{padding-top:40px}
.check-form,.booking-result,.check-help{max-width:600px;margin-left:auto;margin-right:auto}
}

/* PEMBAYARAN */
.payment-page{padding:14px 0 25px}
.payment-title{margin-bottom:13px}
.payment-title h1{font-size:21px;color:var(--dark);font-weight:800;margin-bottom:4px}
.payment-title p{font-size:10px;color:var(--muted)}
.payment-layout{display:grid;grid-template-columns:1fr;gap:12px}
.payment-booking{display:flex;justify-content:space-between;gap:10px;background:#fff;border:1px solid #edf1f3;border-radius:15px;padding:13px}
.payment-booking small{display:block;color:var(--muted);font-size:8px;margin-bottom:3px}
.payment-booking strong{display:block;color:var(--dark);font-size:10px}
.payment-total{background:linear-gradient(135deg,#057a9f,#02a6cf);color:#fff;border-radius:16px;padding:16px;margin-top:10px}
.payment-total small{display:block;font-size:9px;opacity:.85}
.payment-total strong{display:block;font-size:22px;margin-top:3px}
.payment-status{display:flex;gap:9px;padding:12px;border-radius:13px;margin-top:10px}
.payment-status>i{font-size:19px}
.payment-status strong{display:block;font-size:10px}
.payment-status p{font-size:8px;margin-top:3px;line-height:1.5}
.payment-status.pending{background:#fff8ed;color:#d57b00}
.payment-status.pending p{color:#92795b}
.payment-status.verified{background:#e8f8ef;color:#159447}
.payment-status.verified p{color:#668f78}
.payment-status.rejected{background:#fff0f0;color:#d64545}
.payment-status.rejected p{color:#987070}
.payment-method,.payment-account,.upload-payment-form{background:#fff;border:1px solid #edf1f3;border-radius:16px;padding:14px;margin-top:10px}
.payment-section-title{display:flex;align-items:center;gap:9px;margin-bottom:13px}
.payment-section-title>span{width:26px;height:26px;border-radius:9px;background:#eaf7fa;color:var(--primary);display:grid;place-items:center;font-size:10px;font-weight:800}
.payment-section-title strong{display:block;font-size:11px;color:var(--dark)}
.payment-section-title small{display:block;font-size:8px;color:var(--muted);margin-top:2px}
.method-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.method-card{position:relative;border:1px solid #e4eaec;border-radius:12px;padding:11px;cursor:pointer}
.method-card input{position:absolute;opacity:0}
.method-card:has(input:checked){border-color:var(--primary);background:#f1fafc}
.method-card i{display:block;color:var(--primary);font-size:18px;margin-bottom:7px}
.method-card strong{display:block;color:var(--dark);font-size:9px}
.method-card small{display:block;color:var(--muted);font-size:7px;margin-top:2px}
.bank-card{display:flex;align-items:center;gap:10px;background:#f7fafb;border-radius:13px;padding:12px}
.bank-logo{width:42px;height:42px;border-radius:11px;background:#087ea4;color:#fff;display:grid;place-items:center;font-size:7px;font-weight:800}
.bank-card>div:nth-child(2){flex:1}
.bank-card small{display:block;font-size:8px;color:var(--muted)}
.bank-card strong{display:block;font-size:14px;color:var(--dark);letter-spacing:1px;margin:2px 0}
.bank-card span{display:block;font-size:8px;color:var(--muted)}
.bank-card button{border:0;background:#eaf7fa;color:var(--primary);border-radius:8px;padding:7px 9px;font-size:8px;font-weight:700}
.payment-note{margin-top:9px;padding:9px;background:#fff8ed;border-radius:10px;color:#9b753d;font-size:8px}
.payment-note i{margin-right:3px}
.upload-box{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;border:1.5px dashed #cbdadd;border-radius:13px;padding:22px 10px;cursor:pointer;background:#fafcfc}
.upload-box i{font-size:25px;color:var(--primary);margin-bottom:7px}
.upload-box strong{font-size:10px;color:var(--dark)}
.upload-box small{font-size:8px;color:var(--muted);margin-top:4px;max-width:90%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.upload-box input{display:none}
.submit-payment{width:100%;height:42px;border:0;border-radius:11px;background:var(--primary);color:#fff;font-size:10px;font-weight:700;margin-top:10px}
.submit-payment i{margin-left:4px}
.payment-summary{display:none;background:#fff;border:1px solid #edf1f3;border-radius:16px;padding:15px}
.summary-title{font-size:12px;font-weight:800;color:var(--dark);padding-bottom:12px;border-bottom:1px solid #edf1f3}
.summary-row{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid #f1f3f4}
.summary-row span{font-size:9px;color:var(--muted)}
.summary-row strong{font-size:9px;color:var(--dark);text-align:right}
.summary-total{display:flex;justify-content:space-between;padding-top:13px}
.summary-total span{font-size:10px;font-weight:700}
.summary-total strong{font-size:15px;color:var(--secondary)}
@media(min-width:992px){
.payment-layout{grid-template-columns:minmax(0,1.5fr) 320px;align-items:start}
.payment-summary{display:block;position:sticky;top:75px}
}

/* PEMBAYARAN SUCCESS */
.verification-box{margin:12px 0!important;background:#eef3ff;color:#536db5}
.verification-box p{color:#7180a5}

/* LOGO NAVBAR */
.brand{display:flex!important;align-items:center;gap:9px;text-decoration:none!important;color:#fff!important}
.brand-logo{width:68px;height:40px;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden}
.brand-logo img{width:100%;height:100%;object-fit:contain;display:block}
.brand-name{display:inline-block!important;visibility:visible!important;opacity:1!important;color:#087ea4!important;font-size:16px!important;font-weight:800!important;line-height:1!important;white-space:nowrap}
.brand-name span{color:#ff8a00!important}

.topbar .brand{gap:1px!important}

/* CSS TIKET */
/* ==============================
   TIKET
============================== */

.ticket-page{
    padding:30px 0 90px;
    min-height:70vh;
}

.ticket-header{
    text-align:center;
    margin-bottom:20px;
}

.ticket-header h1{
    margin:0;
    font-size:24px;
    font-weight:700;
    color:var(--text);
}

.ticket-header h1 i{
    color:var(--primary);
    margin-right:6px;
}

.ticket-header p{
    margin:6px 0 0;
    font-size:13px;
    color:var(--muted);
}

.ticket-search{
    max-width:600px;
    margin:0 auto 25px;
    display:flex;
    gap:8px;
}

.ticket-search .input-wrap{
    flex:1;
    position:relative;
}

.ticket-search .input-wrap i{
    position:absolute;
    left:13px;
    top:50%;
    transform:translateY(-50%);
    color:var(--primary);
    font-size:13px;
    z-index:2;
}

.ticket-search input{
    width:100%;
    height:43px;
    border:1px solid var(--border);
    border-radius:10px;
    padding:0 12px 0 36px;
    font-size:13px;
    outline:0;
    background:#fff;
}

.ticket-search input:focus{
    border-color:var(--primary);
    box-shadow:0 0 0 3px rgba(53,146,167,.08);
}

.ticket-search button{
    height:43px;
    padding:0 16px;
    border:1px solid var(--primary);
    border-radius:10px;
    background:var(--primary);
    color:#fff;
    font-size:12px;
    font-weight:700;
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:6px;
    cursor:pointer;
    transition:all .2s ease;
}

.ticket-search button:hover{
    background:#fff;
    color:var(--primary);
    border-color:var(--primary);
}

.ticket-empty{
    max-width:600px;
    margin:20px auto;
    padding:35px 20px;
    text-align:center;
    background:#fff;
    border:1px solid var(--border);
    border-radius:15px;
}

.ticket-empty i{
    display:block;
    font-size:30px;
    color:#aab8bc;
    margin-bottom:10px;
}

.ticket-empty strong{
    display:block;
    font-size:14px;
}

.ticket-empty p{
    margin:5px 0 0;
    font-size:11px;
    color:var(--muted);
}

/* CARD TIKET */

.ticket-card{
    max-width:760px;
    margin:0 auto;
    background:#fff;
    border:1px solid var(--border);
    border-radius:17px;
    overflow:hidden;
    box-shadow:0 5px 20px rgba(20,70,80,.07);
}

.ticket-top{
    padding:16px 18px;
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:10px;
    border-bottom:1px dashed #dce6e9;
}

.ticket-top small{
    display:block;
    font-size:8px;
    color:var(--muted);
    margin-bottom:3px;
}

.ticket-top strong{
    font-size:15px;
    letter-spacing:.3px;
}

.ticket-status{
    padding:6px 10px;
    border-radius:7px;
    font-size:9px;
    font-weight:700;
    text-transform:capitalize;
}

.ticket-status.payment,
.ticket-status.verification{
    background:#fff5df;
    color:#bd7d00;
}

.ticket-status.paid{
    background:#e8f8ef;
    color:#168947;
}

.ticket-status.completed{
    background:#eaf5ff;
    color:#2876a8;
}

.ticket-status.pending{
    background:#fff5df;
    color:#bd7d00;
}

.ticket-status.rejected{
    background:#fff0f0;
    color:#d64242;
}

/* BOAT */

.ticket-boat{
    padding:18px;
    display:flex;
    align-items:center;
    gap:15px;
    border-bottom:1px dashed #dce6e9;
}

.ticket-boat img{
    width:145px;
    height:85px;
    object-fit:cover;
    border-radius:10px;
    flex-shrink:0;
}

.ticket-boat small{
    display:block;
    font-size:8px;
    color:var(--primary);
    font-weight:700;
    text-transform:uppercase;
    margin-bottom:3px;
}

.ticket-boat h2{
    margin:0;
    font-size:16px;
    font-weight:700;
}

.ticket-route{
    display:flex;
    align-items:center;
    gap:9px;
    margin-top:7px;
}

.ticket-route strong{
    font-size:10px;
}

.ticket-route i{
    color:var(--primary);
    font-size:11px;
}

/* INFO */

.ticket-info{
    padding:17px 18px;
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:15px;
    border-bottom:1px dashed #dce6e9;
}

.ticket-info small,
.ticket-payment small{
    display:block;
    font-size:8px;
    color:var(--muted);
    margin-bottom:4px;
}

.ticket-info strong,
.ticket-payment strong{
    display:block;
    font-size:11px;
}

/* PAYMENT */

.ticket-payment{
    padding:16px 18px;
    display:flex;
    align-items:center;
    gap:40px;
    background:#fbfcfc;
}

.payment-pending{
    color:#bd7d00;
}

.payment-verified{
    color:#168947;
}

.payment-rejected{
    color:#d64242;
}

/* MOBILE */

@media(max-width:767px){

    .ticket-page{
        padding:20px 0 80px;
    }

    .ticket-header h1{
        font-size:21px;
    }

    .ticket-header p{
        font-size:11px;
    }

    .ticket-search{
        margin-bottom:18px;
    }

    .ticket-search button{
        padding:0 13px;
    }

    .ticket-boat{
        padding:14px;
    }

    .ticket-boat img{
        width:115px;
        height:72px;
    }

    .ticket-boat h2{
        font-size:14px;
    }

    .ticket-route{
        gap:6px;
    }

    .ticket-route strong{
        font-size:9px;
    }

    .ticket-info{
        grid-template-columns:1fr 1fr;
        padding:14px;
        gap:14px;
    }

    .ticket-payment{
        padding:14px;
        gap:25px;
    }

}

@media(max-width:450px){

    .ticket-search{
        display:grid;
        grid-template-columns:1fr;
    }

    .ticket-search button{
        width:100%;
    }

    .ticket-top{
        padding:13px 14px;
    }

    .ticket-top strong{
        font-size:13px;
    }

    .ticket-boat{
        align-items:flex-start;
    }

    .ticket-boat img{
        width:100px;
        height:65px;
    }

    .ticket-boat h2{
        font-size:13px;
    }

    .ticket-route{
        flex-wrap:wrap;
    }

    .ticket-payment{
        gap:20px;
    }

}

/* css publik */
.customer-auth{padding:35px 15px 90px}
.auth-card{width:100%;max-width:430px;margin:0 auto;background:#fff;border:1px solid var(--border);border-radius:18px;padding:25px;box-shadow:0 8px 25px rgba(0,0,0,.06)}
.auth-header{text-align:center;margin-bottom:20px}
.auth-icon{width:52px;height:52px;margin:0 auto 10px;border-radius:15px;background:#eaf7fa;color:var(--primary);display:grid;place-items:center;font-size:20px}
.auth-header h1{font-size:20px;margin:0 0 5px}
.auth-header p{font-size:11px;color:var(--muted);margin:0}
.auth-card .form-group{margin-bottom:14px}
.auth-card label{display:block;font-size:11px;font-weight:600;margin-bottom:6px}
.auth-card .input-wrap{position:relative}
.auth-card .input-wrap>i{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--primary);font-size:12px;z-index:2}
.auth-card input{width:100%;height:43px;border:1px solid #dce6e9;border-radius:9px;padding:0 12px 0 36px;font-size:12px;outline:0}
.auth-card input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(53,146,167,.08)}
.auth-submit{width:100%;height:43px;border:0;border-radius:9px;background:var(--primary);color:#fff;font-size:12px;font-weight:700;cursor:pointer;margin-top:5px}
.auth-submit:hover{opacity:.9}
.auth-footer{text-align:center;margin-top:18px;font-size:10px;color:var(--muted)}
.auth-footer a{color:var(--primary);font-weight:700;text-decoration:none}
.account-page{padding:35px 15px 90px}
.account-card{max-width:700px;margin:auto;background:#fff;border:1px solid var(--border);border-radius:18px;overflow:hidden}
.account-header{padding:22px;display:flex;align-items:center;gap:13px;border-bottom:1px solid #eef2f3}
.account-avatar{width:52px;height:52px;border-radius:15px;background:#eaf7fa;color:var(--primary);display:grid;place-items:center;font-size:20px}
.account-header h1{font-size:18px;margin:0 0 3px}
.account-header p{font-size:10px;color:var(--muted);margin:0}
.account-info{padding:18px;display:grid;grid-template-columns:repeat(3,1fr);gap:12px}
.account-info>div{display:flex;align-items:flex-start;gap:9px}
.account-info>div>i{color:var(--primary);font-size:13px;margin-top:3px}
.account-info small{display:block;color:var(--muted);font-size:9px}
.account-info strong{display:block;font-size:11px;margin-top:3px;word-break:break-word}
.account-actions{padding:0 18px 18px;display:flex;gap:8px;flex-wrap:wrap}
.btn-account{height:38px;padding:0 13px;border-radius:9px;background:var(--primary);color:#fff;text-decoration:none;display:inline-flex;align-items:center;justify-content:center;gap:6px;font-size:10px;font-weight:700}
.btn-account:hover{color:#fff;opacity:.9}
.btn-account.logout{background:#e53935}
@media(max-width:600px){
    .auth-card{padding:20px}
    .account-info{grid-template-columns:1fr}
    .account-actions{display:grid;grid-template-columns:1fr}
    .btn-account{width:100%}
}

.alert-success{
    display:flex;
    align-items:center;
    gap:9px;
    margin-bottom:15px;
    padding:11px 14px;
    border:1px solid #bce8cf;
    border-radius:9px;
    background:#eaf8ef;
    color:#168947;
    font-size:13px;
    font-weight:500;
}

.alert-success i{
    font-size:15px;
    color:#168947;
}

.alert-error{
    display:flex;
    align-items:center;
    gap:9px;
    margin-bottom:15px;
    padding:11px 14px;
    border:1px solid #f1c2c2;
    border-radius:9px;
    background:#fff0f0;
    color:#d64242;
    font-size:13px;
    font-weight:500;
}

.alert-error i{
    font-size:15px;
    color:#d64242;
}

/* CSS QRIS */
/* ================================
   QRIS PAYMENT
================================ */

.qris-card {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    padding: 24px;
    background: #fff;
    border: 1px solid #e8edf2;
    border-radius: 16px;
    box-shadow: 0 8px 25px rgba(0, 0, 0, .06);
}

.qris-icon {
    width: 48px;
    height: 48px;
    border-radius: 12px;
    background: #f3f6f9;
    display: flex;
    align-items: center;
    justify-content: center;
    margin-bottom: 12px;
}

.qris-icon i {
    font-size: 24px;
    color: #222;
}

.qris-info {
    display: flex;
    flex-direction: column;
    gap: 4px;
    margin-bottom: 18px;
}

.qris-info strong {
    font-size: 16px;
    color: #222;
}

.qris-info small {
    font-size: 13px;
    color: #777;
}

.qris-image {
    width: 100%;
    max-width: 280px;
    padding: 12px;
    background: #fff;
    border: 1px solid #eee;
    border-radius: 14px;
}

.qris-image img {
    display: block;
    width: 100%;
    height: auto;
    max-width: 100%;
    object-fit: contain;
    border-radius: 8px;
}

.qris-card::after {
    content: "Scan QRIS menggunakan aplikasi pembayaran Anda";
    display: block;
    margin-top: 15px;
    font-size: 12px;
    line-height: 1.5;
    color: #888;
}

/* Mobile */
@media (max-width: 576px) {

    .qris-card {
        padding: 20px 15px;
        border-radius: 14px;
    }

    .qris-image {
        max-width: 240px;
        padding: 10px;
    }

    .qris-info strong {
        font-size: 15px;
    }

    .qris-info small {
        font-size: 12px;
    }
}