/* Public compatibility layer restored from the stable pre-redesign UI.
   Only public/shared components live here; admin layout rules are intentionally excluded. */
*{box-sizing:border-box}
button,input,select,textarea{font-family:inherit}
img{max-width:100%}

.card{background:#fff;border:1px solid #d9e2ee;border-radius:14px;padding:13px;margin-bottom:14px;min-width:0}
.btn{height:32px;min-width:0;padding:0 11px;border-radius:9px;border:1px solid #cbd5e1;background:#fff;color:#111827;font-weight:800;display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;white-space:nowrap;line-height:1;text-decoration:none}
.btn:hover{background:#f8fafc}
.badge{display:inline-flex;align-items:center;justify-content:center;min-height:24px;padding:4px 9px;border-radius:999px;font-weight:700;font-size:12px}
.badge.info{background:#dbeafe;color:#22c55e;border:1px solid #93c5fd}.badge.dark{background:#334155;color:#fff;border:1px solid #1e293b}.badge.success{background:#dcfce7;color:#166534;border:1px solid #86efac}.badge.warning{background:#fff7ed;color:#c2410c;border:1px solid #fdba74}.badge.danger{background:#fee2e2;color:#b91c1c;border:1px solid #fca5a5}.badge.muted{background:#e2e8f0;color:#475569;border:1px solid #cbd5e1}

/* Legacy detail-page modal primitives. */
.modal{position:fixed;inset:0;background:rgba(15,23,42,.52);display:none;align-items:center;justify-content:center;padding:18px;z-index:100000}
.modal.show{display:flex}
.modal-box{background:#fff;border:1px solid #d9e2ee;border-radius:16px;max-width:900px;width:100%;max-height:92vh;overflow:auto}
.modal-sm{max-width:560px}
.modal-head{display:flex;align-items:center;justify-content:space-between;padding:14px 15px;border-bottom:1px solid #e5edf5;position:sticky;top:0;background:#fff;z-index:2}
.modal-head h3{margin:0;font-size:18px;font-weight:700}
.modal-body{padding:15px}
.modal-foot{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:13px 15px;border-top:1px solid #e5edf5;position:sticky;bottom:0;background:#fff}
.modal-close{width:42px;height:42px;border:none;border-radius:12px;background:#f8fafc;color:#64748b;cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:18px;transition:.2s}
.modal-close:hover{background:#fee2e2;color:#dc2626}
.form-group{margin-bottom:12px}.form-group label{display:block;margin-bottom:6px;font-weight:700}
.form-control,.form-select{width:100%;border:1px solid #cbd5e1;border-radius:10px;background:#fff;padding:10px 12px;outline:none;min-height:42px}
.form-control:focus,.form-select:focus,textarea:focus{border-color:#60a5fa;box-shadow:0 0 0 3px rgba(59,130,246,.12)}

/* Product booking / search selector. */
.booking-section{padding:20px;margin-bottom:25px}.booking-section-title{font-size:20px;font-weight:700;margin-bottom:15px}
.selected-product{display:flex;align-items:center;gap:15px;border:1px solid #ddd;border-radius:10px;padding:15px;background:#fff}
.selected-product-image{width:80px;height:80px;object-fit:contain;flex:0 0 80px}
.selected-product-info{flex:1;min-width:0}.selected-product-name{font-weight:700;margin-bottom:5px;overflow-wrap:anywhere}.selected-product-price{color:#e60000;font-size:22px;font-weight:700}.remove-product-btn{border:none;background:#fff1f2;color:#e11d48;cursor:pointer;font-size:18px;width:38px;height:38px;border-radius:10px}.btn-select-product{margin-top:15px;padding:10px 16px;min-height:40px}
#productSearchModal{z-index:100020 !important}
#productSearchModal .modal-box{width:900px;max-width:95%;max-height:90vh;overflow:auto;background:#fff;border-radius:12px}
#productSearchResult{display:block;width:100%}
.search-product-item{display:flex;align-items:center;gap:15px;padding:12px;border-bottom:1px solid #eee;cursor:pointer;background:#fff;width:100%;min-width:0}
.search-product-item:hover{background:#f8f8f8}.search-product-image{width:70px;height:70px;object-fit:contain;flex:0 0 70px}.search-product-name{font-weight:600;overflow-wrap:anywhere}.search-product-price{color:#e60000;margin-top:5px;font-weight:700}
.booking-error{background:#fff3cd;border:1px solid #ffe69c;color:#856404;padding:12px;border-radius:8px;margin-bottom:15px}.booking-body{padding:25px}.booking-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.booking-grid .form-group{margin:0}.booking-grid label,.booking-section label{display:block;margin-bottom:8px;font-weight:600}

/* Public ticket / warranty / footer components that previously came from admin.css. */
.money-small{color:#dc2626;font-size:18px!important}.ticket-symptom{border:1px solid #e5e7eb;border-radius:12px;overflow:hidden}.symptom-title{background:#f8fafc;padding:12px 15px;font-weight:600;border-bottom:1px solid #e5e7eb}.symptom-content{padding:15px;white-space:pre-line;line-height:1.7}
.success-popup{position:fixed;inset:0;background:rgba(0,0,0,.65);display:flex;align-items:center;justify-content:center;z-index:999999}.success-popup-box{width:420px;max-width:90vw;background:#fff;border-radius:20px;padding:30px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,.2)}.success-popup-icon{font-size:70px;margin-bottom:15px}.success-popup-box h3{margin:0 0 10px}.success-popup-box p{color:#666;margin-bottom:20px}
.footer-links{display:flex;justify-content:center;align-items:center;flex-wrap:wrap;gap:8px;margin-bottom:8px}.footer-links span{color:#666}.footer-links a{color:#ddd;text-decoration:none;transition:.2s}.footer-links a:hover{color:#fff}.footer-copy{color:#aaa;text-align:center;line-height:1.5}.footer-copy strong{color:#fff}.mobile-nav{display:none}
.fc-btn{width:58px;height:58px;border-radius:50%;display:flex;align-items:center;justify-content:center;text-decoration:none;color:#fff;font-size:28px;box-shadow:0 8px 24px rgba(0,0,0,.2);transition:.25s}.fc-btn:hover{transform:translateY(-4px) scale(1.08)}.fc-btn.zalo{background:#0084ff;font-weight:700;font-size:24px;font-family:Arial,sans-serif}.fc-btn.messenger{background:linear-gradient(135deg,#00B2FF,#006AFF,#A033FF);font-size:30px}.back-top{background:#ff0000;opacity:0;visibility:hidden;transform:translateY(20px);transition:.3s}.back-top.show{opacity:1;visibility:visible;transform:translateY(0)}body.modal-open .mobile-nav{display:none!important}
.warranty-box{margin-top:22px;border:1px solid #bbf7d0;background:linear-gradient(180deg,#f0fdf4,#fff);border-radius:18px;overflow:hidden}.warranty-head{display:flex;justify-content:space-between;align-items:center;gap:15px;padding:16px 18px;border-bottom:1px solid #bbf7d0;background:#ecfdf5}.warranty-title{font-weight:900;color:#166534;font-size:17px}.warranty-code{margin-top:4px;color:#0f172a;font-weight:800;font-size:20px}.warranty-status{background:#dcfce7;color:#166534;border:1px solid #86efac;padding:8px 14px;border-radius:999px;font-weight:800;white-space:nowrap}.warranty-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;padding:16px 18px}.warranty-item{background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:14px}.warranty-item span,.warranty-content span{display:block;color:#64748b;font-size:13px;font-weight:700;margin-bottom:6px}.warranty-item strong{color:#0f172a;font-size:18px}.warranty-content{margin:0 18px 18px;background:#fff;border:1px solid #e5e7eb;border-radius:14px;padding:14px}.warranty-content p{margin:0;line-height:1.7}

@media(max-width:700px){
  .modal{padding:0;align-items:flex-end}.modal-box{max-width:100%;max-height:92dvh;border-radius:20px 20px 0 0}.modal-head{padding:13px 15px}.modal-body{padding:14px}.modal-foot{padding:12px 14px calc(12px + env(safe-area-inset-bottom))}
  .booking-grid{grid-template-columns:1fr}.booking-section{padding:14px}.selected-product{gap:10px;padding:10px}.selected-product-image{width:58px;height:58px;flex-basis:58px}.selected-product-price{font-size:17px}
  #productSearchModal .modal-box{max-width:100%;width:100%;max-height:92dvh;border-radius:20px 20px 0 0}.search-product-item{gap:10px;padding:10px}.search-product-image{width:58px;height:58px;flex-basis:58px}
  .warranty-grid{grid-template-columns:1fr}.warranty-head{align-items:flex-start;flex-direction:column}
}


/* =========================================================
   V22 - FIX FLOATING CONTACT POSITION ON PUBLIC DESKTOP/MOBILE
   Keep public floating actions independent from admin.css.
========================================================= */
.floating-contact{
    position:fixed !important;
    right:20px !important;
    bottom:90px !important;
    left:auto !important;
    top:auto !important;
    width:auto !important;
    height:auto !important;
    display:flex !important;
    flex-direction:column !important;
    align-items:center !important;
    gap:12px !important;
    margin:0 !important;
    padding:0 !important;
    z-index:99990 !important;
    pointer-events:auto !important;
}
.floating-contact .fc-btn{
    flex:0 0 58px !important;
    width:58px !important;
    height:58px !important;
    min-width:58px !important;
    min-height:58px !important;
    max-width:58px !important;
    max-height:58px !important;
    margin:0 !important;
    padding:0 !important;
    border:0 !important;
    border-radius:50% !important;
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    line-height:1 !important;
    overflow:hidden !important;
    box-sizing:border-box !important;
}
.floating-contact .fc-btn i,
.floating-contact .fc-btn span{
    display:flex !important;
    align-items:center !important;
    justify-content:center !important;
    margin:0 !important;
    line-height:1 !important;
}
@media (max-width:768px){
    .floating-contact{
        right:14px !important;
        bottom:18px !important;
        gap:10px !important;
        z-index:99990 !important;
    }
    .floating-contact .fc-btn{
        flex-basis:58px !important;
        width:58px !important;
        height:58px !important;
    }
}
@media (min-width:769px){
    .floating-contact{
        right:22px !important;
        bottom:30px !important;
    }
}

