/* Securetia Modern Pure CSS Theme - Pixel-Accurate Edition */ :root { --color-primary: rgb(125, 28, 40); --color-primary-hover: rgb(100, 20, 30); --color-primary-light: #faebee; --color-dark: #1a1a1a; --color-body: #333333; --color-muted: #666666; --color-light: #ffffff; --color-bg-alt: #f7f7f9; --color-border: #e8e8ed; --font-heading: 'Montserrat', system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; --font-body: 'Montserrat', system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; --container-max: 1240px; --radius-sm: 6px; --radius-md: 10px; --radius-lg: 14px; } *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; } html { font-family: var(--font-body); font-size: 16px; scroll-behavior: smooth; -webkit-text-size-adjust: 100%; } body { font-family: var(--font-body); color: var(--color-body); background-color: var(--color-light); line-height: 1.6; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; } button, input, optgroup, select, textarea { font-family: inherit; font-size: inherit; line-height: inherit; } img, svg { max-width: 100%; height: auto; display: block; } a { color: inherit; text-decoration: none; transition: all 0.2s ease; } h1, h2, h3, h4, h5, h6 { font-family: var(--font-heading); font-weight: 600; color: var(--color-primary); line-height: 1.25; } h1 { font-size: clamp(2.2rem, 4vw, 3rem); font-weight: 600; margin-bottom: 1.25rem; } h2 { font-size: clamp(1.8rem, 3vw, 2.3rem); margin-bottom: 1rem; text-align: center; } h3 { font-size: 1.35rem; margin-bottom: 0.75rem; } p { margin-bottom: 1rem; } p:last-child { margin-bottom: 0; } .container { width: 100%; max-width: var(--container-max); margin: 0 auto; padding: 0 1.5rem; } .section { padding: 4.5rem 0; } .section-alt { background-color: var(--color-bg-alt); } /* Buttons */ .btn { display: inline-flex; align-items: center; justify-content: center; font-family: var(--font-heading); font-weight: 500; font-size: 14px; padding: 10px 24px; border-radius: var(--radius-sm); border: none; cursor: pointer; text-align: center; transition: background-color 0.2s ease, transform 0.1s ease; white-space: nowrap; } .btn-primary { background-color: var(--color-primary); color: #ffffff !important; } .btn-primary:hover { background-color: var(--color-primary-hover); } .btn-outline { border: 1px solid var(--color-primary); color: var(--color-primary); background: transparent; } .btn-outline:hover { background-color: var(--color-primary); color: #ffffff; } .btn-white { background-color: #ffffff; color: var(--color-dark); } .btn-white:hover { background-color: #f0f0f0; } /* Header */ .site-header { position: sticky; top: 0; left: 0; width: 100%; background-color: #ffffff; box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05); z-index: 1000; } .navbar { display: flex; align-items: center; justify-content: space-between; height: 82px; } .nav-brand img { height: 52px; width: auto; } .nav-menu { display: flex; align-items: center; list-style: none; gap: 2rem; } .nav-item { position: relative; } .nav-link { font-family: var(--font-heading); font-weight: 500; font-size: 15px; color: var(--color-primary); padding: 0.5rem 0; display: flex; align-items: center; gap: 0.35rem; } .nav-link:hover { color: var(--color-primary-hover); } .nav-dropdown { position: absolute; top: 100%; left: 0; min-width: 220px; background-color: #ffffff; border-radius: var(--radius-sm); box-shadow: 0 10px 25px rgba(0, 0, 0, 0.1); border: 1px solid var(--color-border); padding: 0.5rem 0; list-style: none; display: none; z-index: 1010; } .nav-item:hover .nav-dropdown { display: block; } .nav-dropdown-link { display: block; padding: 0.6rem 1.2rem; font-size: 14px; color: var(--color-dark); } .nav-dropdown-link:hover { background-color: var(--color-bg-alt); color: var(--color-primary); } .nav-actions { display: flex; align-items: center; gap: 1.5rem; } /* Language Switcher */ .lang-switcher { position: relative; cursor: pointer; } .lang-current { display: flex; align-items: center; gap: 0.4rem; font-size: 12px; color: var(--color-primary); } .lang-flag { width: 24px; height: 16px; object-fit: cover; border-radius: 2px; } .lang-dropdown { position: absolute; top: 100%; right: 0; background: #ffffff; border: 1px solid var(--color-border); border-radius: var(--radius-sm); box-shadow: 0 8px 20px rgba(0, 0, 0, 0.1); list-style: none; min-width: 150px; display: none; z-index: 1020; } .lang-switcher:hover .lang-dropdown, .lang-switcher.open .lang-dropdown { display: block; } .lang-option { display: flex; align-items: center; gap: 0.6rem; padding: 0.6rem 1rem; font-size: 13px; color: var(--color-dark); } .lang-option:hover { background-color: var(--color-bg-alt); color: var(--color-primary); } /* Mobile Hamburger */ .hamburger { display: none; flex-direction: column; justify-content: space-around; width: 26px; height: 20px; background: transparent; border: none; cursor: pointer; padding: 0; } .hamburger-line { width: 100%; height: 2px; background-color: var(--color-primary); border-radius: 2px; transition: all 0.25s ease; } .hamburger.open .hamburger-line:nth-child(1) { transform: rotate(45deg) translate(4px, 5px); } .hamburger.open .hamburger-line:nth-child(2) { opacity: 0; } .hamburger.open .hamburger-line:nth-child(3) { transform: rotate(-45deg) translate(5px, -6px); } /* Hero Section Home */ .hero { background: #18090f url('/assets/hero-home-dark.gif') center center / cover no-repeat; min-height: 560px; display: flex; align-items: center; color: #ffffff; padding: 4rem 0; } .hero h1, .hero p { color: #ffffff; } .hero-grid { display: grid; grid-template-columns: 1.15fr 0.85fr; align-items: center; gap: 3rem; } .hero-title { color: #ffffff; font-size: clamp(2.4rem, 4.5vw, 3.2rem); font-weight: 600; line-height: 1.15; margin-bottom: 1.5rem; } .hero-desc { font-size: 1.1rem; line-height: 1.65; color: #f0f0f0; margin-bottom: 2rem; max-width: 500px; } .hero-media { display: flex; justify-content: center; align-items: center; } .hero-media img { max-height: 380px; width: auto; } /* Hero Section Nosotros */ .hero-nosotros { background: #18090f url('/assets/fondo-hero-vulseek.gif') center center / cover no-repeat; min-height: 480px; display: flex; align-items: center; color: #ffffff; padding: 4rem 0; } .hero-nosotros-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; } .mision-vision-box { display: flex; flex-direction: column; } .mision-vision-header { display: flex; align-items: center; gap: 1.25rem; margin-bottom: 1.25rem; } .mision-vision-header img { width: 44px; height: 44px; } .mision-vision-header h2 { color: #ffffff; font-size: 1.85rem; margin: 0; text-align: left; } .mision-vision-box p { color: #f0f0f0; font-size: 1.05rem; line-height: 1.7; } /* Hero Section Vulseek */ .hero-vulseek { background: #15161a url('/assets/fondo-ciudad-mobile.png') center center / cover no-repeat; min-height: 540px; display: flex; align-items: center; color: #ffffff; padding: 4rem 0; } .hero-vulseek h1, .hero-vulseek p { color: #ffffff; } /* Hero Section Logseek */ .hero-logseek { background: #0a1120 url('/assets/fondo-ondas-logseek.gif') center center / cover no-repeat; min-height: 540px; display: flex; align-items: center; color: #ffffff; padding: 4rem 0; } .hero-logseek h1, .hero-logseek p { color: #ffffff; } /* Section Headers */ .section-header { text-align: center; max-width: 760px; margin: 0 auto 3rem; } .section-title { color: var(--color-primary); font-size: 2.1rem; font-weight: 600; margin-bottom: 0.75rem; } .section-subtitle { font-size: 1rem; color: var(--color-muted); } /* Services Cards */ .cards-services { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; } .card-service { background-color: #f7f7f9; border: 1px solid #ebebee; border-radius: var(--radius-md); padding: 2.5rem 2rem; display: flex; flex-direction: column; align-items: center; text-align: center; } .card-service .card-icon { width: 52px; height: 52px; margin-bottom: 1.25rem; } .card-service .card-icon img { width: 100%; height: 100%; object-fit: contain; } .card-service h3 { color: var(--color-dark); font-size: 1.35rem; font-weight: 600; margin-bottom: 1rem; } .card-service .service-intro { font-size: 0.95rem; color: #444; margin-bottom: 1rem; text-align: left; width: 100%; } .card-service .service-bullets { list-style: none; text-align: left; width: 100%; margin-bottom: 1.75rem; font-size: 0.92rem; color: #555; line-height: 1.6; } .card-service .service-bullets li { margin-bottom: 0.35rem; } .card-service .btn { margin-top: auto; } /* Team Grid (Nosotros page) */ .team-container { display: flex; flex-direction: column; gap: 1.5rem; max-width: 900px; margin: 0 auto; } .team-row-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem; } .team-row-1 { display: grid; grid-template-columns: 1fr; } .team-row-4 { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.5rem; } .team-card { background-color: #f3f4f6; border-radius: var(--radius-md); padding: 1.75rem 1.5rem; display: flex; align-items: center; gap: 1.25rem; } .team-card-vertical { background-color: #f3f4f6; border-radius: var(--radius-md); padding: 1.75rem 1.25rem; display: flex; flex-direction: column; align-items: center; text-align: center; } .team-icon { width: 52px; height: 52px; flex-shrink: 0; object-fit: contain; } .team-card h4 { font-size: 1.05rem; color: var(--color-dark); margin-bottom: 0.25rem; } .team-card p { font-size: 0.85rem; color: var(--color-muted); } .team-card-vertical h4 { font-size: 1rem; color: var(--color-dark); margin: 0.75rem 0 0.5rem; } .team-card-vertical p { font-size: 0.85rem; color: var(--color-muted); line-height: 1.45; } /* Feature Split (Generic 2-columns) */ .feature-split { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 3.5rem; } .feature-split.reverse { direction: rtl; } .feature-split.reverse > * { direction: ltr; } .feature-content h2 { text-align: left; margin-bottom: 1.25rem; } .feature-bullets { list-style: none; margin: 1.25rem 0; line-height: 1.7; } /* 3 Features / Solutions row */ .features-3-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2.5rem; text-align: center; } .feature-3-item { display: flex; flex-direction: column; align-items: center; } .feature-3-icon { width: 56px; height: 56px; margin-bottom: 1rem; } .feature-3-item h3 { color: var(--color-dark); margin-bottom: 0.5rem; } .feature-3-item p { color: var(--color-muted); font-size: 0.95rem; } /* Grid of 6 items (Standards CVE/CPE or Protected Assets) */ .grid-6 { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem 3rem; margin-top: 2rem; } .grid-6-item h3 { color: var(--color-dark); font-size: 1.2rem; margin-bottom: 0.35rem; } .grid-6-item p { font-size: 0.9rem; color: var(--color-muted); line-height: 1.5; } /* OT Industrial Banner */ .banner-ot { position: relative; background: linear-gradient(rgba(125, 28, 40, 0.45), rgba(0, 0, 0, 0.7)), url('/assets/fondo-banner-ot.png') center center / cover no-repeat; min-height: 380px; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; color: #ffffff; padding: 3rem 1.5rem; } .banner-ot h2 { color: #ffffff; font-size: clamp(2rem, 3.5vw, 2.75rem); font-weight: 600; margin-bottom: 1.5rem; } /* Purple CTA Bar (Vulseek Pricing CTA) */ .banner-vulseek-purple { background: linear-gradient(rgba(125, 28, 40, 0.6), rgba(40, 10, 20, 0.8)), url('/assets/fondo-geometrico-rojo.svg') center center / cover no-repeat; border-radius: var(--radius-md); padding: 3.5rem 2rem; text-align: center; color: #ffffff; } .banner-vulseek-purple h2 { color: #ffffff; margin-bottom: 1rem; } /* Clients Carousel / Row */ .logos-row { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 3.5rem; padding: 2rem 0; } .logos-row img { max-height: 40px; max-width: 130px; object-fit: contain; opacity: 0.85; transition: opacity 0.2s ease; } .logos-row img:hover { opacity: 1; } /* 3 Comprehensive Solutions */ .solutions-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2.5rem; text-align: center; } .solution-item { display: flex; flex-direction: column; align-items: center; } .solution-icon { width: 60px; height: 60px; margin-bottom: 1rem; } .solution-icon img { width: 100%; height: 100%; object-fit: contain; } .solution-item h3 { font-size: 1.3rem; color: var(--color-dark); margin-bottom: 0.75rem; } .solution-item p { font-size: 0.95rem; color: var(--color-muted); line-height: 1.6; } /* Horizontal Feature Rows */ .feature-row { display: grid; grid-template-columns: 1fr 1fr; align-items: center; gap: 4rem; padding: 3rem 0; } .feature-row h2 { text-align: left; font-size: 2rem; color: var(--color-primary); margin-bottom: 1rem; } .feature-row p { font-size: 1rem; color: #444; line-height: 1.7; } /* Testimonials */ .testimonials-row { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; } .testimonial-card-img { width: 100%; height: auto; display: block; } /* Contact Section */ .contact-section-wrapper { background-color: #f4f5f8; padding: 4.5rem 0; } .contact-layout { display: grid; grid-template-columns: 1fr 1fr; gap: 4rem; align-items: center; } .contact-left h2 { text-align: left; color: var(--color-dark); font-size: 2rem; margin-bottom: 1rem; } .contact-left p { color: var(--color-muted); margin-bottom: 1.5rem; } .contact-form { background: #ffffff; padding: 2.5rem; border-radius: var(--radius-md); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.04); } .form-group { margin-bottom: 1.25rem; } .form-label { display: block; font-size: 13px; font-weight: 500; color: #555; margin-bottom: 0.35rem; } .form-input { width: 100%; padding: 10px 14px; border: 1px solid var(--color-border); border-radius: var(--radius-sm); font-family: inherit; font-size: 14px; outline: none; transition: border-color 0.2s ease; } .form-input:focus { border-color: var(--color-primary); } /* Vulseek Animated Hexagon Banner (Look Imagen 1) */ .vulseek-banner-hex { background: #000000 url('/assets/fondo-vulseek-dark.gif') center right / cover no-repeat; padding: 4.5rem 0; color: #ffffff; } .vulseek-banner-content { max-width: 640px; } .vulseek-banner-title { color: #ffffff; font-size: clamp(1.8rem, 2.8vw, 2.4rem); font-weight: 400; line-height: 1.25; margin-bottom: 0.85rem; text-align: left; } .vulseek-banner-subtitle { color: #d1d5db; font-size: 15px; margin-bottom: 1.75rem; text-align: left; font-weight: 400; } .btn-vulseek-cta { background-color: var(--color-primary); color: #ffffff !important; font-size: 15px; font-weight: 500; padding: 10px 32px; border-radius: 6px; display: inline-block; cursor: pointer; transition: background-color 0.2s ease, transform 0.1s ease; border: none; } .btn-vulseek-cta:hover { background-color: var(--color-primary-hover); transform: translateY(-1px); } /* Footer Minimal Centered (Look Imagen 1) */ .site-footer { background-color: #ffffff; padding: 2.5rem 0 3rem; border-top: none; font-size: 14px; color: #333333; } .footer-content-centered { display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; gap: 0.4rem; } .footer-info-line { display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 0.6rem; color: #333333; font-size: 14px; } .footer-info-line a { color: #333333; text-decoration: underline; } .footer-linkedin-icon { display: inline-flex; align-items: center; color: #000000; margin-right: 0.25rem; } .footer-linkedin-icon:hover { color: var(--color-primary); } .footer-policy-line { margin-top: 0.2rem; font-size: 14px; } .footer-policy-line a { color: #333333; text-decoration: underline; } @media (max-width: 900px) { .vulseek-banner-hex { background-image: url('/assets/fondo-footer-mobile.gif'); padding: 3.5rem 0; } .vulseek-banner-content { margin: 0 auto; text-align: center; } .vulseek-banner-title { text-align: center; } .vulseek-banner-subtitle { text-align: center; } .footer-info-line { flex-direction: column; gap: 0.4rem; } } .mobile-only { display: none; } /* Product Comparison Styles */ .compare-hero { padding: 4rem 0 3rem; background: radial-gradient(circle at top right, rgba(125, 28, 40, 0.04) 0%, transparent 60%); } .compare-grid-2 { display: grid; grid-template-columns: 1fr 1fr; gap: 2.5rem; margin: 3rem 0; align-items: stretch; } .compare-box { background: #ffffff; border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 2.5rem 2rem; display: flex; flex-direction: column; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.04); transition: transform 0.2s ease, box-shadow 0.2s ease; } .compare-box:hover { transform: translateY(-3px); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.08); } .compare-box.featured { border: 2px solid var(--color-primary); box-shadow: 0 8px 30px rgba(125, 28, 40, 0.12); position: relative; } .compare-badge-pill { position: absolute; top: -12px; right: 24px; background: var(--color-primary); color: #ffffff; font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: 0.08em; padding: 4px 12px; border-radius: 999px; } .compare-box-header { margin-bottom: 1.5rem; padding-bottom: 1.25rem; border-bottom: 1px solid var(--color-border); } .compare-box-title { font-size: 1.6rem; font-weight: 700; color: var(--color-dark); margin-bottom: 0.4rem; } .compare-box.featured .compare-box-title { color: var(--color-primary); } .compare-box-subtitle { font-size: 0.95rem; color: var(--color-muted); line-height: 1.5; } .compare-features-list { list-style: none; margin: 0; padding: 0; flex-grow: 1; } .compare-features-list li { display: flex; align-items: flex-start; gap: 0.75rem; font-size: 0.95rem; margin-bottom: 0.85rem; color: #444; line-height: 1.5; } .compare-check-icon { width: 18px; height: 18px; flex-shrink: 0; margin-top: 3px; color: var(--color-primary); } /* Comparison Table */ .compare-table-container { overflow-x: auto; border-radius: var(--radius-md); border: 1px solid var(--color-border); background: #ffffff; margin: 3rem 0; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.03); } .compare-table { width: 100%; border-collapse: collapse; text-align: left; font-size: 14px; } .compare-table th { padding: 1rem 1.5rem; background: #f7f7f9; font-weight: 600; color: var(--color-dark); border-bottom: 2px solid var(--color-border); } .compare-table td { padding: 1rem 1.5rem; border-bottom: 1px solid var(--color-border); color: #444; } .compare-table tr:last-child td { border-bottom: none; } .compare-table tr:hover td { background-color: #fafbfc; } .compare-table .col-vulseek { background-color: rgba(125, 28, 40, 0.02); font-weight: 500; } /* Conclusion Box */ .conclusion-card { background: #f7f7f9; border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 3rem; margin: 3.5rem 0 2rem; display: grid; grid-template-columns: 1.1fr 0.9fr; align-items: center; gap: 3rem; } .conclusion-text h2 { text-align: left; margin-bottom: 1rem; } .conclusion-text p { color: #444; font-size: 1rem; line-height: 1.7; margin-bottom: 1rem; } .conclusion-media img { border-radius: var(--radius-md); box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); } /* OT Industrial Cybersecurity Styles */ .hero-ot { background: #14080c url('/assets/fondo-banner-ot.png') center center / cover no-repeat; position: relative; padding: 5rem 0; color: #ffffff; } .hero-ot::before { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(20, 8, 12, 0.94) 0%, rgba(125, 28, 40, 0.78) 100%); } .hero-ot .container { position: relative; z-index: 2; } .hero-ot h1, .hero-ot p { color: #ffffff; } .ot-cards-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; } .ot-card { background: #ffffff; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 2.25rem 1.75rem; display: flex; flex-direction: column; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.03); transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; } .ot-card:hover { transform: translateY(-4px); box-shadow: 0 10px 25px rgba(125, 28, 40, 0.08); border-color: rgba(125, 28, 40, 0.3); } .ot-card-icon { width: 58px; height: 58px; border-radius: var(--radius-md); background: #f7f7f9; padding: 10px; margin-bottom: 1.25rem; display: flex; align-items: center; justify-content: center; } .ot-card-icon img { width: 100%; height: 100%; object-fit: contain; } .ot-card h3 { font-size: 1.25rem; color: var(--color-dark); margin-bottom: 0.75rem; } .ot-card p { font-size: 0.92rem; color: #555; line-height: 1.6; margin-bottom: 1.25rem; } .ot-bullets { list-style: none; margin-top: auto; padding-top: 1rem; border-top: 1px solid var(--color-border); font-size: 0.88rem; color: #444; line-height: 1.6; } .ot-bullets li { margin-bottom: 0.35rem; } .ot-pillar-item { margin-bottom: 2rem; } .ot-pillar-item:last-child { margin-bottom: 0; } .ot-pillar-item h3 { color: var(--color-primary); font-size: 1.35rem; margin-bottom: 0.5rem; } .ot-pillar-item p { color: #444; line-height: 1.65; font-size: 0.98rem; } .ot-banner-quote { background: linear-gradient(rgba(0,0,0,0.65), rgba(0,0,0,0.65)), url('/assets/banner-quote-ot.png') center center / cover no-repeat; padding: 5rem 1.5rem; text-align: center; color: #ffffff; } .ot-banner-quote h2 { color: #ffffff; max-width: 850px; margin: 0 auto 1.5rem; font-size: clamp(1.8rem, 3.2vw, 2.4rem); font-weight: 600; } /* ========================================================================== Project Split / Investigación ========================================================================== */ .project-split { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 3.5rem; align-items: center; margin-bottom: 4rem; padding-bottom: 4rem; border-bottom: 1px solid var(--color-border); } .project-split:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; } .project-header-tag { color: var(--color-primary); font-weight: 700; font-size: 0.95rem; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 0.5rem; display: block; } .project-title { font-size: clamp(2rem, 3.5vw, 2.6rem); font-weight: 700; color: var(--color-dark); margin-bottom: 0.5rem; } .project-subtitle { font-size: 1.15rem; color: var(--color-primary); font-weight: 600; margin-bottom: 1.25rem; } .project-desc { color: #444; line-height: 1.7; font-size: 1rem; margin-bottom: 1.5rem; } .project-features-card { background: var(--color-bg-alt); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 2.25rem 2rem; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.03); } .project-features-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1rem; } .project-features-list li { display: flex; align-items: flex-start; gap: 0.75rem; font-size: 0.95rem; color: #333; line-height: 1.5; } .project-check-icon { width: 18px; height: 18px; flex-shrink: 0; color: var(--color-primary); margin-top: 2px; } /* ========================================================================== RRHH / Careers ========================================================================== */ .rrhh-hero-banner { border-radius: var(--radius-lg); overflow: hidden; margin-bottom: 3.5rem; box-shadow: 0 4px 20px rgba(0, 0, 0, 0.08); } .rrhh-hero-banner img { width: 100%; height: auto; max-height: 400px; object-fit: cover; display: block; } .rrhh-split { display: grid; grid-template-columns: 1.1fr 0.9fr; gap: 3.5rem; align-items: start; } .rrhh-offer-box { background: var(--color-bg-alt); border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 2.5rem 2rem; } .rrhh-offer-title { color: var(--color-primary); font-size: 1.6rem; font-weight: 700; margin-bottom: 1.5rem; } .rrhh-offer-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 1rem; } .rrhh-offer-list li { display: flex; align-items: flex-start; gap: 0.75rem; font-size: 0.98rem; line-height: 1.6; color: #333; } .rrhh-join-title { color: var(--color-dark); font-size: 1.6rem; font-weight: 700; margin-bottom: 1.25rem; } .rrhh-join-desc { color: #555; line-height: 1.7; font-size: 1.02rem; margin-bottom: 1.5rem; } .rrhh-join-action { background: #ffffff; border: 1px dashed var(--color-primary); border-radius: var(--radius-md); padding: 1.5rem; text-align: center; margin-top: 2rem; } /* ========================================================================== h4ck3d Conference ========================================================================== */ .hero-h4ck3d { background: linear-gradient(180deg, rgba(10, 10, 18, 0.85) 0%, rgba(10, 10, 18, 0.92) 100%), url('/assets/portada-h4ck3d.gif') center center / cover no-repeat; color: #ffffff; padding: 5.5rem 0 4.5rem; text-align: center; } .hero-h4ck3d .hero-title { color: #ffffff; font-size: clamp(2.2rem, 4.2vw, 3.2rem); font-weight: 800; margin-bottom: 1.25rem; letter-spacing: -0.02em; } .hero-h4ck3d .hero-desc { color: #e0e0ea; max-width: 780px; margin: 0 auto 2.5rem; font-size: 1.15rem; line-height: 1.65; } .h4ck3d-logos-row { display: flex; align-items: center; justify-content: center; gap: 3rem; flex-wrap: wrap; } .h4ck3d-logos-row img { height: 55px; width: auto; object-fit: contain; background: rgba(255, 255, 255, 0.95); padding: 8px 18px; border-radius: var(--radius-md); box-shadow: 0 4px 15px rgba(0, 0, 0, 0.2); } /* ========================================================================== Partners Benefits Grid ========================================================================== */ .partner-benefits-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 2rem; margin-top: 2.5rem; } .partner-benefit-card { background: #ffffff; border: 1px solid var(--color-border); border-radius: var(--radius-lg); padding: 2rem 1.5rem; display: flex; flex-direction: column; align-items: center; text-align: center; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.03); transition: transform 0.2s ease, box-shadow 0.2s ease; } .partner-benefit-card:hover { transform: translateY(-4px); box-shadow: 0 8px 25px rgba(0, 0, 0, 0.08); } .partner-benefit-icon { width: 64px; height: 64px; object-fit: contain; margin-bottom: 1.25rem; } .partner-benefit-title { font-size: 1.05rem; font-weight: 600; color: var(--color-dark); line-height: 1.5; } /* ========================================================================== Pricing Table ========================================================================== */ .pricing-table-scroll { width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; margin: 3rem 0; box-shadow: 0 4px 25px rgba(0, 0, 0, 0.06); border-radius: var(--radius-lg); border: 1px solid var(--color-border); } .pricing-table { width: 100%; min-width: 860px; border-collapse: collapse; background: #ffffff; text-align: left; } .pricing-table th, .pricing-table td { padding: 1rem 1.25rem; font-size: 0.92rem; border-bottom: 1px solid #eeeeee; vertical-align: middle; } .pricing-table thead th { background: #fafafa; font-weight: 700; font-size: 1.05rem; text-align: center; border-bottom: 2px solid var(--color-border); padding: 1.5rem 1rem; } .pricing-table thead th:first-child { text-align: left; background: #ffffff; } .pricing-table thead th.recommended { background: #fff8f8; border-top: 3px solid var(--color-primary); color: var(--color-primary); } .pricing-table .price-row td { font-weight: 700; font-size: 1.05rem; color: var(--color-primary); text-align: center; background: #fafafa; padding: 1.2rem 1rem; } .pricing-table .price-row td:first-child { text-align: left; color: var(--color-dark); } .pricing-table .category-row td { background: #f0f0f4; font-weight: 700; color: var(--color-dark); font-size: 0.95rem; text-transform: uppercase; letter-spacing: 0.05em; padding: 0.75rem 1.25rem; } .pricing-table td:not(:first-child) { text-align: center; } .pricing-table tbody tr:hover { background: #fcfcfc; } .pricing-check { color: #27ae60; font-weight: 700; font-size: 1.1rem; } .pricing-cross { color: #bbb; font-size: 1.1rem; } /* ========================================================================== Cookie Consent Banner ========================================================================== */ .cookie-banner { display: none; position: fixed; bottom: 0; left: 0; right: 0; z-index: 9999; background: #ffffff; border-top: 1px solid var(--color-border); box-shadow: 0 -4px 25px rgba(0, 0, 0, 0.12); padding: 1.25rem 2rem; align-items: center; justify-content: space-between; gap: 2rem; } .cookie-content { flex: 1; } .cookie-banner h3 { font-size: 1.05rem; font-weight: 700; color: var(--color-dark); margin-bottom: 0.25rem; } .cookie-banner p { font-size: 0.92rem; color: #555555; margin: 0; line-height: 1.45; } .cookie-actions { display: flex; align-items: center; gap: 0.75rem; flex-shrink: 0; } .cookie-actions .btn { padding: 8px 20px; font-size: 0.88rem; white-space: nowrap; } /* Penetration Testing Page Styles */ .hero-pentest { position: relative; background: #14080c url('/penetration-testing/hero-pentest.png') center center / cover no-repeat; padding: 5.5rem 0; color: #ffffff; } .hero-pentest .container { position: relative; z-index: 2; max-width: 920px; } .hero-pentest h1 { color: #ffffff; font-size: clamp(2.4rem, 4.5vw, 3.4rem); font-weight: 700; line-height: 1.15; margin-bottom: 1.5rem; } .hero-pentest p { color: #f0f0f0; font-size: 1.12rem; line-height: 1.7; margin-bottom: 2.25rem; max-width: 820px; } .pentest-adaptable-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2.5rem; } .pentest-adaptable-card { background: #ffffff; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 2.5rem 2rem; display: flex; flex-direction: column; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.03); transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; } .pentest-adaptable-card:hover { transform: translateY(-4px); box-shadow: 0 10px 25px rgba(125, 28, 40, 0.08); border-color: rgba(125, 28, 40, 0.3); } .pentest-adaptable-icon { width: 60px; height: 60px; margin-bottom: 1.25rem; display: flex; align-items: center; justify-content: center; } .pentest-adaptable-icon img { max-width: 100%; max-height: 100%; object-fit: contain; } .pentest-adaptable-card h3 { font-size: 1.3rem; font-weight: 600; color: var(--color-dark); margin-bottom: 0.85rem; } .pentest-adaptable-card p { font-size: 0.95rem; line-height: 1.65; color: #555; } .pentest-services-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1.75rem; } .pentest-service-box { background: #ffffff; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 2rem 1.5rem; display: flex; flex-direction: column; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.03); transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; } .pentest-service-box:hover { transform: translateY(-4px); box-shadow: 0 10px 25px rgba(125, 28, 40, 0.08); border-color: rgba(125, 28, 40, 0.3); } .pentest-service-box h3 { font-size: 1.2rem; font-weight: 600; color: var(--color-dark); margin-bottom: 0.85rem; } .pentest-service-box p { font-size: 0.92rem; line-height: 1.6; color: #555; } .pentest-ai-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; } .pentest-ai-card { background: #ffffff; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 2.25rem 1.75rem; display: flex; flex-direction: column; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.03); transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; } .pentest-ai-card:hover { transform: translateY(-4px); box-shadow: 0 10px 25px rgba(125, 28, 40, 0.08); border-color: rgba(125, 28, 40, 0.3); } .pentest-ai-icon { width: 58px; height: 58px; border-radius: var(--radius-md); background: #f7f7f9; padding: 10px; margin-bottom: 1.25rem; display: flex; align-items: center; justify-content: center; } .pentest-ai-icon img { width: 100%; height: 100%; object-fit: contain; } .pentest-ai-card h3 { font-size: 1.25rem; color: var(--color-dark); margin-bottom: 0.75rem; } .pentest-ai-card p { font-size: 0.92rem; color: #555; line-height: 1.6; } .pentest-approaches-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; } .pentest-approach-card { background: #ffffff; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 2.25rem 1.75rem; display: flex; flex-direction: column; box-shadow: 0 4px 15px rgba(0, 0, 0, 0.03); transition: transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease; } .pentest-approach-card:hover { transform: translateY(-4px); box-shadow: 0 10px 25px rgba(125, 28, 40, 0.08); border-color: rgba(125, 28, 40, 0.3); } .pentest-approach-card h3 { font-size: 1.35rem; color: var(--color-primary); margin-bottom: 1.25rem; padding-bottom: 0.75rem; border-bottom: 2px solid rgba(125, 28, 40, 0.15); } .pentest-approach-item { font-size: 0.92rem; line-height: 1.6; color: #444; margin-bottom: 1rem; } .pentest-approach-item strong { display: block; color: var(--color-dark); font-weight: 700; margin-bottom: 0.25rem; } .adv-services-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 2rem; } .adv-service-card { position: relative; background: #111116 url('/penetration-testing/servicios-avanzados.png') center center / cover no-repeat; border-radius: var(--radius-md); padding: 3.25rem 2.5rem; color: #ffffff; display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15); min-height: 320px; } .adv-service-card::before { content: ''; position: absolute; inset: 0; background: linear-gradient(135deg, rgba(15, 15, 20, 0.88) 0%, rgba(35, 12, 18, 0.82) 100%); z-index: 1; } .adv-service-content { position: relative; z-index: 2; display: flex; flex-direction: column; height: 100%; } .adv-service-card h3 { color: #ffffff; font-size: 1.45rem; font-weight: 600; margin-bottom: 1.25rem; } .adv-service-card p { color: #e0e0e0; font-size: 0.98rem; line-height: 1.7; margin-bottom: 2rem; flex-grow: 1; } .adv-service-card .btn { align-self: flex-start; } .pentest-methodology-split { display: grid; grid-template-columns: 1.25fr 0.75fr; gap: 3rem; align-items: center; margin-bottom: 3.5rem; } .pentest-methodology-text p { font-size: 1.05rem; line-height: 1.75; color: #333; } .pentest-methodology-media { display: flex; align-items: center; justify-content: center; } .pentest-methodology-media img { max-width: 100%; max-height: 180px; object-fit: contain; } .pentest-pillars-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2rem; } .pentest-pillar-item { background: #f7f7f9; border-radius: var(--radius-md); padding: 2rem 1.75rem; border: 1px solid var(--color-border); } .pentest-pillar-item h3 { font-size: 1.2rem; color: var(--color-dark); margin-bottom: 0.75rem; } .pentest-pillar-item p { font-size: 0.92rem; line-height: 1.6; color: #555; } /* Responsive */ @media (max-width: 900px) { .hamburger { display: flex; } .mobile-only { display: block; width: 100%; } .nav-cta-desktop { display: none; } .lang-switcher { display: none; } .cookie-banner { flex-direction: column; align-items: stretch; padding: 1.25rem 1.25rem; gap: 1rem; } .cookie-actions { flex-direction: column; width: 100%; gap: 0.5rem; } .cookie-actions .btn { width: 100%; text-align: center; } .ot-cards-grid { grid-template-columns: 1fr; } .compare-grid-2 { grid-template-columns: 1fr; } .conclusion-card { grid-template-columns: 1fr; padding: 2rem 1.5rem; } .project-split { grid-template-columns: 1fr; gap: 2rem; } .rrhh-split { grid-template-columns: 1fr; gap: 2rem; } .pentest-adaptable-grid { grid-template-columns: 1fr; } .pentest-services-grid { grid-template-columns: 1fr 1fr; } .pentest-ai-grid { grid-template-columns: 1fr; } .pentest-approaches-grid { grid-template-columns: 1fr; } .adv-services-grid { grid-template-columns: 1fr; } .pentest-methodology-split { grid-template-columns: 1fr; text-align: center; } .pentest-pillars-grid { grid-template-columns: 1fr; } .nav-menu { position: fixed; top: 82px; left: 0; width: 100%; background: #ffffff; flex-direction: column; align-items: flex-start; padding: 1.5rem; box-shadow: 0 10px 20px rgba(0, 0, 0, 0.1); display: none; } .nav-menu.open { display: flex; } .hero-grid { grid-template-columns: 1fr; text-align: center; } .hero-nosotros-grid { grid-template-columns: 1fr; gap: 2rem; } .cards-services { grid-template-columns: 1fr; } .solutions-grid { grid-template-columns: 1fr; } .feature-row { grid-template-columns: 1fr; gap: 2rem; } .feature-split { grid-template-columns: 1fr; } .team-row-2, .team-row-4 { grid-template-columns: 1fr; } .grid-6 { grid-template-columns: 1fr; } .testimonials-row { grid-template-columns: 1fr; } .contact-layout { grid-template-columns: 1fr; } .footer-simple { justify-content: center; text-align: center; } } @media (max-width: 600px) { .pentest-services-grid { grid-template-columns: 1fr; } } /* ========================================================================== BLOG STYLES - SECURETIA INSIGHTS ========================================================================== */ /* Hero & Header */ .blog-hero { background: linear-gradient(180deg, #f7f7f9 0%, #ffffff 100%); border-bottom: 1px solid var(--color-border); padding: 4.5rem 0 3.5rem; text-align: center; } .blog-hero-content { max-width: 780px; margin: 0 auto; } .blog-badge { display: inline-block; background-color: var(--color-primary-light); color: var(--color-primary); font-size: 0.825rem; font-weight: 600; text-transform: uppercase; letter-spacing: 0.08em; padding: 0.35rem 0.9rem; border-radius: 999px; margin-bottom: 1rem; } .blog-title { font-size: clamp(2.2rem, 4vw, 3rem); color: var(--color-primary); margin-bottom: 0.85rem; font-weight: 700; } .blog-subtitle { font-size: 1.125rem; color: var(--color-muted); line-height: 1.6; } /* Blog List Grid */ .section-blog-list { background-color: #fafafc; min-height: 60vh; } .blog-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(350px, 1fr)); gap: 2.25rem; } .blog-card { background: #ffffff; border: 1px solid var(--color-border); border-radius: var(--radius-md); overflow: hidden; display: flex; flex-direction: column; transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease; } .blog-card:hover { transform: translateY(-4px); box-shadow: 0 12px 28px rgba(0, 0, 0, 0.08); border-color: rgba(125, 28, 40, 0.25); } .blog-card-media-link { display: block; width: 100%; height: 210px; overflow: hidden; background-color: #f1f2f6; position: relative; } .blog-card-img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.35s ease; } .blog-card:hover .blog-card-img { transform: scale(1.04); } .blog-card-placeholder { width: 100%; height: 100%; display: flex; align-items: center; justify-content: center; background: linear-gradient(135deg, #f6f7f9 0%, #eceef3 100%); } .placeholder-logo { max-width: 160px; opacity: 0.65; filter: grayscale(30%); } .blog-card-body { padding: 1.6rem; display: flex; flex-direction: column; flex-grow: 1; } .blog-card-meta { font-size: 0.825rem; color: var(--color-muted); margin-bottom: 0.65rem; display: flex; align-items: center; flex-wrap: wrap; gap: 0.35rem; } .meta-separator { color: #c0c4cc; } .blog-card-author { font-weight: 500; color: #555555; } .blog-card-title { font-size: 1.22rem; line-height: 1.35; margin-bottom: 0.75rem; text-align: left; } .blog-card-title a { color: var(--color-dark); text-decoration: none; transition: color 0.2s ease; } .blog-card-title a:hover { color: var(--color-primary); } .blog-card-excerpt { font-size: 0.925rem; color: #555555; line-height: 1.55; margin-bottom: 1.25rem; flex-grow: 1; } .blog-card-footer { margin-top: auto; border-top: 1px solid #f0f0f4; padding-top: 1rem; } .blog-read-more { display: inline-flex; align-items: center; gap: 0.35rem; font-size: 0.9rem; font-weight: 600; color: var(--color-primary); text-decoration: none; transition: gap 0.2s ease; } .blog-read-more .arrow { transition: transform 0.2s ease; } .blog-card:hover .blog-read-more .arrow { transform: translateX(4px); } /* ========================================================================== BLOG SINGLE ARTICLE STYLES ========================================================================== */ .blog-post-wrapper { background-color: #ffffff; } .blog-post-header { background: linear-gradient(180deg, #f7f7f9 0%, #ffffff 100%); border-bottom: 1px solid var(--color-border); padding: 3rem 0 2.5rem; text-align: center; } .blog-header-container { max-width: 860px; margin: 0 auto; } .blog-breadcrumbs { margin-bottom: 1.5rem; display: flex; justify-content: center; } .blog-back-link { display: inline-flex; align-items: center; gap: 0.5rem; font-size: 0.875rem; font-weight: 600; color: var(--color-muted); background: #ffffff; border: 1px solid var(--color-border); padding: 0.45rem 1rem; border-radius: 999px; transition: all 0.2s ease; } .blog-back-link:hover { color: var(--color-primary); border-color: var(--color-primary); background: var(--color-primary-light); } .blog-post-title { font-size: clamp(2rem, 4vw, 2.85rem); font-weight: 700; color: var(--color-primary); line-height: 1.25; margin-bottom: 1rem; } .blog-post-subtitle { font-size: 1.15rem; color: #4a5568; line-height: 1.6; margin-bottom: 1.5rem; max-width: 760px; margin-left: auto; margin-right: auto; } .blog-post-meta { display: flex; justify-content: center; align-items: center; flex-wrap: wrap; gap: 0.6rem; font-size: 0.9rem; color: var(--color-muted); } .meta-item { display: inline-flex; align-items: center; gap: 0.35rem; } .meta-author { color: var(--color-dark); } /* Featured Cover */ .blog-cover-wrapper { margin-top: -1.5rem; margin-bottom: 2.5rem; } .blog-cover-box { max-width: 920px; margin: 0 auto; border-radius: var(--radius-lg); overflow: hidden; box-shadow: 0 10px 30px rgba(0, 0, 0, 0.08); border: 1px solid var(--color-border); background: #000; } .blog-featured-image { width: 100%; max-height: 520px; object-fit: cover; display: block; } /* Article Body */ .section-blog-body { padding-bottom: 5rem; } .blog-content-container { max-width: 820px; margin: 0 auto; } .blog-article-content { font-size: 1.075rem; line-height: 1.8; color: #2d3748; } .blog-article-content h1, .blog-article-content h2, .blog-article-content h3, .blog-article-content h4 { color: var(--color-dark); font-weight: 700; text-align: left; scroll-margin-top: 100px; } .blog-article-content h2 { font-size: 1.65rem; margin-top: 2.75rem; margin-bottom: 1rem; padding-bottom: 0.5rem; border-bottom: 2px solid #f0f1f4; color: var(--color-primary); } .blog-article-content h3 { font-size: 1.35rem; margin-top: 2rem; margin-bottom: 0.75rem; } .blog-article-content h4 { font-size: 1.15rem; margin-top: 1.5rem; margin-bottom: 0.5rem; } .blog-article-content p { margin-bottom: 1.35rem; } .blog-article-content strong { font-weight: 600; color: #1a202c; } .blog-article-content ul, .blog-article-content ol { margin-bottom: 1.5rem; padding-left: 1.75rem; } .blog-article-content li { margin-bottom: 0.6rem; line-height: 1.7; } .blog-article-content blockquote { border-left: 4px solid var(--color-primary); background-color: #faf5f6; padding: 1rem 1.5rem; margin: 1.75rem 0; border-radius: 0 var(--radius-sm) var(--radius-sm) 0; font-style: italic; color: #4a5568; } .blog-article-content blockquote p { margin-bottom: 0; } .blog-article-content a { color: var(--color-primary); text-decoration: underline; text-underline-offset: 3px; font-weight: 500; } .blog-article-content a:hover { color: var(--color-primary-hover); } .blog-article-content code { background-color: #f1f3f7; color: #c7254e; padding: 0.2rem 0.4rem; border-radius: 4px; font-size: 0.9em; font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; } .blog-article-content pre { background-color: #1a1e24; color: #e2e8f0; padding: 1.25rem 1.5rem; border-radius: var(--radius-md); overflow-x: auto; margin: 1.75rem 0; font-size: 0.92rem; line-height: 1.6; box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } .blog-article-content pre code { background-color: transparent; color: inherit; padding: 0; border-radius: 0; } .blog-article-content img { border-radius: var(--radius-md); box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08); margin: 2rem auto; max-width: 100%; } .blog-article-content figure { margin: 2rem 0; text-align: center; } .blog-article-content figcaption { font-size: 0.875rem; color: var(--color-muted); margin-top: 0.6rem; font-style: italic; } .blog-article-content hr { border: 0; height: 1px; background: var(--color-border); margin: 2.5rem 0; } /* Video embed container */ .blog-video-container { position: relative; width: 100%; aspect-ratio: 16 / 9; margin: 2rem 0; border-radius: var(--radius-md); overflow: hidden; box-shadow: 0 8px 24px rgba(0, 0, 0, 0.1); } .blog-video-container iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: none; } /* File Attachment Download Box */ .blog-attachment-box { display: flex; align-items: center; gap: 1.25rem; background-color: #fafbfc; border: 1px solid var(--color-border); border-radius: var(--radius-md); padding: 1.25rem 1.5rem; margin: 2rem 0; transition: border-color 0.2s ease, box-shadow 0.2s ease; } .blog-attachment-box:hover { border-color: var(--color-primary); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.05); } .attachment-icon { font-size: 2rem; line-height: 1; } .attachment-info { display: flex; flex-direction: column; gap: 0.25rem; flex-grow: 1; } .attachment-title { color: var(--color-dark); font-size: 1rem; } .attachment-size { color: var(--color-muted); font-size: 0.85rem; } .btn-attachment { display: inline-flex; align-items: center; background-color: var(--color-primary); color: #ffffff !important; text-decoration: none !important; padding: 0.55rem 1.25rem; border-radius: var(--radius-sm); font-size: 0.875rem; font-weight: 600; white-space: nowrap; transition: background-color 0.2s ease; } .btn-attachment:hover { background-color: var(--color-primary-hover); } /* Photo Gallery Grid */ .blog-gallery-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 1rem; margin: 2rem 0; } .gallery-item { border-radius: var(--radius-sm); overflow: hidden; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.08); } .gallery-item img { width: 100%; height: 180px; object-fit: cover; margin: 0 !important; border-radius: 0 !important; transition: transform 0.3s ease; } .gallery-item:hover img { transform: scale(1.05); } /* Blog Pagination */ .blog-pagination { margin-top: 3.5rem; display: flex; justify-content: center; align-items: center; } .pagination-list { display: flex; align-items: center; justify-content: center; gap: 0.5rem; list-style: none; padding: 0; margin: 0; flex-wrap: wrap; } .pagination-item { margin: 0; } .pagination-link { display: inline-flex; align-items: center; justify-content: center; min-width: 42px; height: 42px; padding: 0 0.75rem; border-radius: var(--radius-sm); font-size: 0.95rem; font-weight: 600; font-family: inherit; text-decoration: none; color: var(--color-text); background-color: #ffffff; border: 1px solid var(--color-border); transition: all 0.2s ease; user-select: none; } .pagination-prev .pagination-link, .pagination-next .pagination-link { padding: 0 1.1rem; gap: 0.4rem; } .pagination-arrow { font-size: 1.1rem; line-height: 1; } a.pagination-link:hover { background-color: #f7f7f9; border-color: var(--color-primary); color: var(--color-primary); transform: translateY(-1px); } .pagination-active { background-color: var(--color-primary) !important; border-color: var(--color-primary) !important; color: #ffffff !important; cursor: default; box-shadow: 0 4px 10px rgba(125, 28, 40, 0.25); } .pagination-disabled { opacity: 0.45; background-color: #f7f7f9; border-color: var(--color-border); color: #8c8c9a; cursor: not-allowed; } /* Footer of Article */ .blog-article-footer { margin-top: 3.5rem; padding-top: 2rem; border-top: 1px solid var(--color-border); } .blog-footer-nav { display: flex; justify-content: space-between; align-items: center; gap: 1rem; flex-wrap: wrap; } @media (max-width: 768px) { .blog-grid { grid-template-columns: 1fr; } .blog-cover-wrapper { margin-top: 0; } .blog-attachment-box { flex-direction: column; align-items: flex-start; } .btn-attachment { width: 100%; justify-content: center; } .blog-footer-nav { flex-direction: column; } .blog-footer-nav .btn { width: 100%; } .blog-pagination { margin-top: 2.5rem; } .pagination-list { gap: 0.35rem; } .pagination-link { min-width: 38px; height: 38px; padding: 0 0.5rem; font-size: 0.88rem; } .pagination-prev .pagination-text, .pagination-next .pagination-text { display: none; } .pagination-prev .pagination-link, .pagination-next .pagination-link { padding: 0 0.75rem; } }