/* =========================================== OneTapListing - Complete Vanilla CSS Replaces Tailwind CDN for 100/100 PageSpeed =========================================== *//* Reset & Base */*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}body{font-family:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,'Helvetica Neue',sans-serif;background:#f9fafb;color:#1f2937;line-height:1.5;min-height:100vh}a{text-decoration:none;color:inherit;transition:color .2s}img{max-width:100%;height:auto;display:block}ul,ol{list-style:none}button,input,select,textarea{font-family:inherit;font-size:100%}button{cursor:pointer}table{border-collapse:collapse;width:100%}/* Container */.container{width:100%;max-width:1280px;margin:0 auto;padding:0 1rem}/* =========================================== DISPLAY =========================================== */.hidden{display:none}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.table{display:table}/* =========================================== FLEXBOX =========================================== */.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-wrap{flex-wrap:wrap}.flex-1{flex:1 1 0%}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.justify-end{justify-content:flex-end}/* =========================================== GRID =========================================== */.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.col-span-1{grid-column:span 1/span 1}.col-span-2{grid-column:span 2/span 2}.col-span-4{grid-column:span 4/span 4}.col-span-5{grid-column:span 5/span 5}/* =========================================== GAP =========================================== */.gap-1{gap:.25rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}/* =========================================== SPACING - MARGIN =========================================== */.m-0{margin:0}.mx-auto{margin-left:auto;margin-right:auto}.mx-1{margin-left:.25rem;margin-right:.25rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-10{margin-bottom:2.5rem}.mb-12{margin-bottom:3rem}.ml-1{margin-left:.25rem}/* =========================================== SPACING - PADDING =========================================== */.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.pb-1{padding-bottom:.25rem}.pb-2{padding-bottom:.5rem}.pb-12{padding-bottom:3rem}.pl-10{padding-left:2.5rem}.pr-4{padding-right:1rem}/* =========================================== WIDTH & HEIGHT =========================================== */.w-full{width:100%}.w-3{width:.75rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-9{width:2.25rem}.w-32{width:8rem}.h-3{height:.75rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-9{height:2.25rem}.h-20{height:5rem}.h-40{height:10rem}.h-44{height:11rem}.h-48{height:12rem}.h-72{height:18rem}.h-full{height:100%}.min-h-screen{min-height:100vh}.min-h-\[120px\]{min-height:120px}.min-w-full{min-width:100%}.min-w-\[250px\]{min-width:250px}.max-w-full{max-width:100%}.max-w-md{max-width:28rem}.max-w-lg{max-width:32rem}.max-w-xl{max-width:36rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-6xl{max-width:72rem}.max-w-none{max-width:none}.max-h-32{max-height:8rem}/* =========================================== POSITION =========================================== */.relative{position:relative}.absolute{position:absolute}.sticky{position:sticky}.top-0{top:0}.top-2{top:.5rem}.top-1\/2{top:50%}.bottom-0{bottom:0}.left-0{left:0}.left-3{left:.75rem}.right-2{right:.5rem}.-left-2{left:-.5rem}.-right-2{right:-.5rem}.-translate-y-1\/2{transform:translateY(-50%)}.z-50{z-index:50}/* =========================================== TYPOGRAPHY =========================================== */.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.text-left{text-align:left}.text-center{text-align:center}.uppercase{text-transform:uppercase}.tracking-wider{letter-spacing:.05em}.tracking-tight{letter-spacing:-.025em}.leading-tight{line-height:1.25}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-pre-wrap{white-space:pre-wrap}.whitespace-no-wrap{white-space:nowrap}.break-all{word-break:break-all}.break-words{word-break:break-word}.underline-offset-4{text-underline-offset:4px}/* =========================================== TEXT COLORS =========================================== */.text-white{color:#fff}.text-gray-200{color:#e5e7eb}.text-gray-300{color:#d1d5db}.text-gray-400{color:#9ca3af}.text-gray-500{color:#6b7280}.text-gray-600{color:#4b5563}.text-gray-700{color:#374151}.text-gray-800{color:#1f2937}.text-gray-900{color:#111827}.text-blue-500{color:#3b82f6}.text-blue-600{color:#2563eb}.text-blue-700{color:#1d4ed8}.text-blue-800{color:#1e40af}.text-green-500{color:#22c55e}.text-green-600{color:#16a34a}.text-green-700{color:#15803d}.text-red-500{color:#ef4444}.text-red-600{color:#dc2626}.text-red-700{color:#b91c1c}.text-yellow-400{color:#facc15}.text-yellow-500{color:#eab308}.text-yellow-600{color:#ca8a04}.text-yellow-700{color:#a16207}.text-amber-700{color:#b45309}.text-indigo-600{color:#4f46e5}.text-purple-500{color:#a855f7}.text-purple-600{color:#9333ea}.text-dark{color:#1f2937}.text-muted{color:#6b7280}/* =========================================== BACKGROUND COLORS =========================================== */.bg-white{background-color:#fff}.bg-gray-50{background-color:#f9fafb}.bg-gray-100{background-color:#f3f4f6}.bg-gray-300{background-color:#d1d5db}.bg-gray-400{background-color:#9ca3af}.bg-gray-700{background-color:#374151}.bg-gray-950{background-color:#030712}.bg-blue-50{background-color:#eff6ff}.bg-blue-100{background-color:#dbeafe}.bg-blue-600{background-color:#2563eb}.bg-green-100{background-color:#dcfce7}.bg-green-600{background-color:#16a34a}.bg-red-50{background-color:#fef2f2}.bg-red-100{background-color:#fee2e2}.bg-red-600{background-color:#dc2626}.bg-yellow-50{background-color:#fefce8}.bg-indigo-600{background-color:#4f46e5}.bg-purple-600{background-color:#9333ea}.bg-info{background-color:#0ea5e9}.bg-success{background-color:#22c55e}.bg-warning{background-color:#f59e0b}/* Gradients */.bg-gradient-to-r{background:linear-gradient(to right,var(--tw-gradient-stops,#111827,#1f2937))}.bg-gradient-to-t{background:linear-gradient(to top,var(--tw-gradient-stops))}.from-black\/70{--tw-gradient-from:rgba(0,0,0,.7);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to,transparent)}.from-blue-500{--tw-gradient-from:#3b82f6}.from-green-500{--tw-gradient-from:#22c55e}.to-transparent{--tw-gradient-to:transparent}.to-blue-600{--tw-gradient-to:#2563eb}.to-green-600{--tw-gradient-to:#16a34a}/* =========================================== BORDERS =========================================== */.border{border:1px solid #e5e7eb}.border-t{border-top:1px solid #e5e7eb}.border-b{border-bottom:1px solid #e5e7eb}.border-l-4{border-left:4px solid}.border-b-2{border-bottom:2px solid}.border-gray-200{border-color:#e5e7eb}.border-gray-300{border-color:#d1d5db}.border-gray-700{border-color:#374151}.border-blue-500{border-color:#3b82f6}.border-green-400{border-color:#4ade80}.border-red-200{border-color:#fecaca}.border-red-400{border-color:#f87171}.border-yellow-200{border-color:#fef08a}.border-amber-300{border-color:#fcd34d}.divide-y>*+*{border-top:1px solid}.divide-gray-200>*+*{border-color:#e5e7eb}/* =========================================== BORDER RADIUS =========================================== */.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-2xl{border-radius:1rem}.rounded-full{border-radius:9999px}.rounded-t-lg{border-top-left-radius:.5rem;border-top-right-radius:.5rem}.rounded-t-xl{border-top-left-radius:.75rem;border-top-right-radius:.75rem}/* =========================================== SHADOWS =========================================== */.shadow{box-shadow:0 1px 3px rgba(0,0,0,.1),0 1px 2px rgba(0,0,0,.06)}.shadow-sm{box-shadow:0 1px 2px rgba(0,0,0,.05)}.shadow-md{box-shadow:0 4px 6px rgba(0,0,0,.1),0 2px 4px rgba(0,0,0,.06)}.shadow-lg{box-shadow:0 10px 15px rgba(0,0,0,.1),0 4px 6px rgba(0,0,0,.05)}/* =========================================== OVERFLOW =========================================== */.overflow-hidden{overflow:hidden}.overflow-x-auto{overflow-x:auto}.scrollbar-hide{-ms-overflow-style:none;scrollbar-width:none}.scrollbar-hide::-webkit-scrollbar{display:none}/* =========================================== TRANSITIONS & TRANSFORMS =========================================== */.transition{transition:all .2s ease}.transition-colors{transition:color .2s,background-color .2s,border-color .2s}.transition-transform{transition:transform .2s}.duration-200{transition-duration:.2s}.duration-300{transition-duration:.3s}.transform{transform:translateX(0)}/* =========================================== OBJECT FIT =========================================== */.object-cover{object-fit:cover}/* =========================================== ASPECT RATIO (Prevents CLS) =========================================== */.aspect-\[5\/2\]{aspect-ratio:5/2}.aspect-\[2\.5\/1\]{aspect-ratio:2.5/1}.aspect-video{aspect-ratio:16/9}.aspect-square{aspect-ratio:1/1}/* Listing card images - fixed aspect ratio */article img.h-40,.listing-card img{aspect-ratio:2.5/1;width:100%;height:auto;min-height:160px}article img.h-48{aspect-ratio:2.08/1;width:100%;height:auto;min-height:192px}/* =========================================== OPACITY =========================================== */.opacity-0{opacity:0}/* =========================================== CURSOR =========================================== */.cursor-pointer{cursor:pointer}/* =========================================== FOCUS STATES =========================================== */.focus\:outline-none:focus{outline:none}.focus\:ring-1:focus{box-shadow:0 0 0 1px #3b82f6}.focus\:ring-2:focus{box-shadow:0 0 0 2px #3b82f6}.focus\:ring-blue-400:focus{box-shadow:0 0 0 3px rgba(96,165,250,.5)}.focus\:ring-blue-500:focus{box-shadow:0 0 0 3px rgba(59,130,246,.5)}.focus\:ring-indigo-400:focus{box-shadow:0 0 0 3px rgba(129,140,248,.5)}.focus\:ring-offset-1:focus{box-shadow:0 0 0 1px #fff,0 0 0 3px #3b82f6}/* =========================================== HOVER STATES =========================================== */.hover\:underline:hover{text-decoration:underline}.hover\:text-white:hover{color:#fff}.hover\:text-gray-800:hover{color:#1f2937}.hover\:text-blue-300:hover{color:#93c5fd}.hover\:text-blue-600:hover{color:#2563eb}.hover\:text-blue-900:hover{color:#1e3a8a}.hover\:text-green-900:hover{color:#14532d}.hover\:text-indigo-600:hover{color:#4f46e5}.hover\:text-yellow-400:hover{color:#facc15}.hover\:bg-gray-50:hover{background-color:#f9fafb}.hover\:bg-gray-100:hover{background-color:#f3f4f6}.hover\:bg-gray-200:hover{background-color:#e5e7eb}.hover\:bg-gray-400:hover{background-color:#9ca3af}.hover\:bg-gray-500:hover{background-color:#6b7280}.hover\:bg-blue-50:hover{background-color:#eff6ff}.hover\:bg-blue-100:hover{background-color:#dbeafe}.hover\:bg-blue-200:hover{background-color:#bfdbfe}.hover\:bg-blue-600:hover{background-color:#2563eb}.hover\:bg-blue-700:hover{background-color:#1d4ed8}.hover\:bg-green-700:hover{background-color:#15803d}.hover\:bg-red-600:hover{background-color:#dc2626}.hover\:bg-red-700:hover{background-color:#b91c1c}.hover\:bg-indigo-700:hover{background-color:#4338ca}.hover\:bg-purple-700:hover{background-color:#7e22ce}.hover\:bg-pink-500:hover{background-color:#ec4899}.hover\:bg-black:hover{background-color:#000}.hover\:bg-amber-50:hover{background-color:#fffbeb}.hover\:shadow-md:hover{box-shadow:0 4px 6px rgba(0,0,0,.1)}.hover\:shadow-lg:hover{box-shadow:0 10px 15px rgba(0,0,0,.1)}.hover\:shadow-xl:hover{box-shadow:0 20px 25px rgba(0,0,0,.1)}.hover\:shadow-2xl:hover{box-shadow:0 25px 50px rgba(0,0,0,.25)}.hover\:scale-105:hover{transform:scale(1.05)}.hover\:-translate-y-1:hover{transform:translateY(-4px)}.hover\:-translate-y-0\.5:hover{transform:translateY(-2px)}.hover\:from-blue-600:hover{--tw-gradient-from:#2563eb}.hover\:from-green-600:hover{--tw-gradient-from:#16a34a}.hover\:to-blue-700:hover{--tw-gradient-to:#1d4ed8}.hover\:to-green-700:hover{--tw-gradient-to:#15803d}/* =========================================== GROUP HOVER =========================================== */.group:hover .group-hover\:opacity-100{opacity:1}.group:hover .group-hover\:scale-105{transform:scale(1.05)}/* =========================================== SPACE UTILITIES =========================================== */.space-x-1>*+*{margin-left:.25rem}.space-x-2>*+*{margin-left:.5rem}.space-y-2>*+*{margin-top:.5rem}.space-y-4>*+*{margin-top:1rem}/* =========================================== SNAP SCROLL =========================================== */.snap-x{scroll-snap-type:x mandatory}.snap-mandatory{scroll-snap-type:x mandatory}.snap-start{scroll-snap-align:start}.scroll-smooth{scroll-behavior:smooth}/* =========================================== ACCESSIBILITY =========================================== */.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.fill-current{fill:currentColor}/* =========================================== CUSTOM COMPONENTS =========================================== */.badge{display:inline-block;padding:.25rem .5rem;font-size:.75rem;font-weight:500;border-radius:9999px}.btn{display:inline-block;padding:.5rem 1rem;font-weight:500;border-radius:.375rem;transition:all .2s}.btn-sm{padding:.25rem .5rem;font-size:.875rem}.btn-danger{background:#dc2626;color:#fff}.btn-danger:hover{background:#b91c1c}.btn-success{background:#16a34a;color:#fff}.btn-success:hover{background:#15803d}.btn-warning{background:#f59e0b;color:#fff}.btn-warning:hover{background:#d97706}.listing-card{background:#fff;border-radius:.75rem;box-shadow:0 1px 3px rgba(0,0,0,.1);transition:transform .3s,box-shadow .3s}.listing-card:hover{transform:translateY(-4px);box-shadow:0 10px 15px rgba(0,0,0,.1)}.prose{max-width:65ch;color:#374151}.prose p{margin-bottom:1rem}.table-striped tbody tr:nth-child(odd){background:#f9fafb}.list-reset{list-style:none;padding:0}.service-row{}.remove-service{cursor:pointer}/* =========================================== RESPONSIVE - SM (640px+) =========================================== */@media(min-width:640px){.sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:p-8{padding:2rem}.sm\:h-96{height:24rem}.sm\:text-lg{font-size:1.125rem}.sm\:text-4xl{font-size:2.25rem}.sm\:min-w-\[300px\]{min-width:300px}}/* =========================================== RESPONSIVE - MD (768px+) =========================================== */@media(min-width:768px){.md\:hidden{display:none!important}.md\:flex{display:flex!important}.md\:inline{display:inline}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:col-span-4{grid-column:span 4/span 4}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:space-x-2>*+*{margin-left:.5rem}.md\:space-x-3>*+*{margin-left:.75rem}.md\:min-w-\[320px\]{min-width:320px}}/* =========================================== RESPONSIVE - LG (1024px+) =========================================== */@media(min-width:1024px){.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}}/* =========================================== HEADER SPECIFIC =========================================== */header{background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.1)}/* =========================================== FOOTER SPECIFIC =========================================== */footer{background:linear-gradient(to right,#111827,#1f2937)}footer .bg-gray-950{background:#030712}/* =========================================== FORMS =========================================== */input[type="text"],input[type="email"],input[type="search"],input[type="password"],input[type="tel"],input[type="url"],input[type="number"],select,textarea{width:100%;padding:.5rem .75rem;border:1px solid #d1d5db;border-radius:.375rem;font-size:.875rem;transition:border-color .2s,box-shadow .2s}input:focus,select:focus,textarea:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px rgba(59,130,246,.2)}/* =========================================== TABLE STYLES =========================================== */.table{width:100%;border-collapse:collapse}.table th,.table td{padding:.75rem 1rem;text-align:left;border-bottom:1px solid #e5e7eb}.table th{background:#f9fafb;font-weight:600}.table-striped tbody tr:nth-child(even){background:#f9fafb}/* =========================================== INVERT (for dark icons) =========================================== */.invert{filter:invert(1)}