- 100.6% era muy pequeño (texto crecia al cargar Poppins) - 106% era muy grande (texto se achicaba al cargar Poppins) - 103% es el punto medio para minimizar CLS 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
822 lines
26 KiB
CSS
822 lines
26 KiB
CSS
/**
|
|
* Critical Bootstrap CSS Subset (TIPO 2)
|
|
*
|
|
* Contiene SOLO clases de Bootstrap 5.3.2 usadas en componentes above-the-fold.
|
|
* NO contiene CSS personalizado (ese va en critical-custom-temp.css - TIPO 3).
|
|
*
|
|
* Componentes Bootstrap incluidos:
|
|
* - Fonts (@font-face Poppins)
|
|
* - Variables CSS (:root)
|
|
* - Resets (box-sizing, body)
|
|
* - Container system
|
|
* - Grid system (row, col-*)
|
|
* - Flexbox utilities (d-flex, justify-content-*, align-items-*)
|
|
* - Spacing utilities (m-*, p-*)
|
|
* - Text utilities
|
|
* - Navbar component
|
|
* - Collapse/Dropdown components
|
|
* - Button component
|
|
* - Alert component
|
|
* - Typography base (h1-h6, p)
|
|
* - Responsive breakpoints
|
|
*
|
|
* Hook: wp_head priority 0
|
|
* Output: <style id="roi-critical-bootstrap">
|
|
*
|
|
* @version 5.3.2-subset
|
|
* @see Inc/enqueue-scripts.php - Bootstrap diferido
|
|
* @see Shared/Infrastructure/Services/CriticalBootstrapService.php
|
|
* @see Assets/Css/critical-custom-temp.css - CSS personalizado (TIPO 3)
|
|
*/
|
|
|
|
/* ==========================================================================
|
|
CRITICAL FONTS (Poppins - LCP optimization)
|
|
|
|
font-display: swap + preload = fuente carga rapido y siempre se muestra
|
|
size-adjust: 100.6% = fallback casi identico a Poppins (minimiza CLS)
|
|
========================================================================== */
|
|
@font-face {
|
|
font-family: 'Poppins Fallback';
|
|
src: local('Arial'), local('Helvetica Neue'), local('sans-serif');
|
|
size-adjust: 103%;
|
|
ascent-override: 105%;
|
|
descent-override: 35%;
|
|
line-gap-override: 10%;
|
|
}
|
|
@font-face {
|
|
font-family: 'Poppins';
|
|
src: url('/wp-content/themes/roi-theme/Assets/Fonts/poppins-v24-latin-regular.woff2') format('woff2');
|
|
font-weight: 400;
|
|
font-style: normal;
|
|
font-display: swap;
|
|
}
|
|
@font-face {
|
|
font-family: 'Poppins';
|
|
src: url('/wp-content/themes/roi-theme/Assets/Fonts/poppins-v24-latin-600.woff2') format('woff2');
|
|
font-weight: 600;
|
|
font-style: normal;
|
|
font-display: swap;
|
|
}
|
|
@font-face {
|
|
font-family: 'Poppins';
|
|
src: url('/wp-content/themes/roi-theme/Assets/Fonts/poppins-v24-latin-700.woff2') format('woff2');
|
|
font-weight: 700;
|
|
font-style: normal;
|
|
font-display: swap;
|
|
}
|
|
|
|
:root {
|
|
/* Fonts */
|
|
--font-primary: 'Poppins', 'Poppins Fallback', sans-serif;
|
|
--bs-body-font-family: 'Poppins', 'Poppins Fallback', sans-serif;
|
|
|
|
/* Theme Colors (críticos para above-the-fold) */
|
|
--color-navy-dark: #0E2337;
|
|
--color-navy-medium: #1e3a5f;
|
|
--color-orange-primary: #FF8600;
|
|
--color-orange-hover: #e67a00;
|
|
--bs-primary: #0d6efd;
|
|
--bs-white: #fff;
|
|
--bs-body-color: #212529;
|
|
--bs-body-bg: #fff;
|
|
--bs-link-color: #0d6efd;
|
|
--bs-link-hover-color: #0a58ca;
|
|
|
|
/* Spacing */
|
|
--bs-gutter-x: 1.5rem;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
BOX SIZING & RESETS (Bootstrap Reboot crítico)
|
|
========================================================================== */
|
|
*,
|
|
*::before,
|
|
*::after {
|
|
box-sizing: border-box;
|
|
}
|
|
|
|
body {
|
|
margin: 0;
|
|
font-family: var(--bs-body-font-family, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", sans-serif);
|
|
font-size: var(--bs-body-font-size, 1rem);
|
|
font-weight: var(--bs-body-font-weight, 400);
|
|
line-height: var(--bs-body-line-height, 1.5);
|
|
color: var(--bs-body-color, #212529);
|
|
background-color: var(--bs-body-bg, #fff);
|
|
-webkit-text-size-adjust: 100%;
|
|
-webkit-tap-highlight-color: transparent;
|
|
}
|
|
|
|
a {
|
|
color: var(--bs-link-color, #0d6efd);
|
|
text-decoration: underline;
|
|
}
|
|
a:hover {
|
|
color: var(--bs-link-hover-color, #0a58ca);
|
|
}
|
|
|
|
img, svg {
|
|
vertical-align: middle;
|
|
}
|
|
|
|
button {
|
|
border-radius: 0;
|
|
}
|
|
button:focus:not(:focus-visible) {
|
|
outline: 0;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
CONTAINER (Layout crítico)
|
|
========================================================================== */
|
|
.container,
|
|
.container-fluid {
|
|
--bs-gutter-x: 1.5rem;
|
|
--bs-gutter-y: 0;
|
|
width: 100%;
|
|
padding-right: calc(var(--bs-gutter-x) * 0.5);
|
|
padding-left: calc(var(--bs-gutter-x) * 0.5);
|
|
margin-right: auto;
|
|
margin-left: auto;
|
|
}
|
|
|
|
@media (min-width: 576px) {
|
|
.container { max-width: 540px; }
|
|
}
|
|
@media (min-width: 768px) {
|
|
.container { max-width: 720px; }
|
|
}
|
|
@media (min-width: 992px) {
|
|
.container { max-width: 960px; }
|
|
}
|
|
@media (min-width: 1200px) {
|
|
.container { max-width: 1140px; }
|
|
}
|
|
@media (min-width: 1400px) {
|
|
.container { max-width: 1320px; }
|
|
}
|
|
|
|
/* ==========================================================================
|
|
GRID SYSTEM (Layout crítico - Previene CLS)
|
|
========================================================================== */
|
|
.row {
|
|
--bs-gutter-x: 1.5rem;
|
|
--bs-gutter-y: 0;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
margin-top: calc(-1 * var(--bs-gutter-y));
|
|
margin-right: calc(-0.5 * var(--bs-gutter-x));
|
|
margin-left: calc(-0.5 * var(--bs-gutter-x));
|
|
}
|
|
.row > * {
|
|
flex-shrink: 0;
|
|
width: 100%;
|
|
max-width: 100%;
|
|
padding-right: calc(var(--bs-gutter-x) * 0.5);
|
|
padding-left: calc(var(--bs-gutter-x) * 0.5);
|
|
margin-top: var(--bs-gutter-y);
|
|
}
|
|
|
|
.col { flex: 1 0 0%; }
|
|
.col-auto { flex: 0 0 auto; width: auto; }
|
|
.col-1 { flex: 0 0 auto; width: 8.33333333%; }
|
|
.col-2 { flex: 0 0 auto; width: 16.66666667%; }
|
|
.col-3 { flex: 0 0 auto; width: 25%; }
|
|
.col-4 { flex: 0 0 auto; width: 33.33333333%; }
|
|
.col-5 { flex: 0 0 auto; width: 41.66666667%; }
|
|
.col-6 { flex: 0 0 auto; width: 50%; }
|
|
.col-7 { flex: 0 0 auto; width: 58.33333333%; }
|
|
.col-8 { flex: 0 0 auto; width: 66.66666667%; }
|
|
.col-9 { flex: 0 0 auto; width: 75%; }
|
|
.col-10 { flex: 0 0 auto; width: 83.33333333%; }
|
|
.col-11 { flex: 0 0 auto; width: 91.66666667%; }
|
|
.col-12 { flex: 0 0 auto; width: 100%; }
|
|
|
|
@media (min-width: 768px) {
|
|
.col-md-1 { flex: 0 0 auto; width: 8.33333333%; }
|
|
.col-md-2 { flex: 0 0 auto; width: 16.66666667%; }
|
|
.col-md-3 { flex: 0 0 auto; width: 25%; }
|
|
.col-md-4 { flex: 0 0 auto; width: 33.33333333%; }
|
|
.col-md-5 { flex: 0 0 auto; width: 41.66666667%; }
|
|
.col-md-6 { flex: 0 0 auto; width: 50%; }
|
|
.col-md-7 { flex: 0 0 auto; width: 58.33333333%; }
|
|
.col-md-8 { flex: 0 0 auto; width: 66.66666667%; }
|
|
.col-md-9 { flex: 0 0 auto; width: 75%; }
|
|
.col-md-10 { flex: 0 0 auto; width: 83.33333333%; }
|
|
.col-md-11 { flex: 0 0 auto; width: 91.66666667%; }
|
|
.col-md-12 { flex: 0 0 auto; width: 100%; }
|
|
}
|
|
|
|
@media (min-width: 992px) {
|
|
.col-lg-1 { flex: 0 0 auto; width: 8.33333333%; }
|
|
.col-lg-2 { flex: 0 0 auto; width: 16.66666667%; }
|
|
.col-lg-3 { flex: 0 0 auto; width: 25%; }
|
|
.col-lg-4 { flex: 0 0 auto; width: 33.33333333%; }
|
|
.col-lg-5 { flex: 0 0 auto; width: 41.66666667%; }
|
|
.col-lg-6 { flex: 0 0 auto; width: 50%; }
|
|
.col-lg-7 { flex: 0 0 auto; width: 58.33333333%; }
|
|
.col-lg-8 { flex: 0 0 auto; width: 66.66666667%; }
|
|
.col-lg-9 { flex: 0 0 auto; width: 75%; }
|
|
.col-lg-10 { flex: 0 0 auto; width: 83.33333333%; }
|
|
.col-lg-11 { flex: 0 0 auto; width: 91.66666667%; }
|
|
.col-lg-12 { flex: 0 0 auto; width: 100%; }
|
|
}
|
|
|
|
/* Gutter utilities */
|
|
.g-0, .gx-0 { --bs-gutter-x: 0; }
|
|
.g-0, .gy-0 { --bs-gutter-y: 0; }
|
|
.g-3, .gx-3 { --bs-gutter-x: 1rem; }
|
|
.g-3, .gy-3 { --bs-gutter-y: 1rem; }
|
|
|
|
/* ==========================================================================
|
|
FLEXBOX UTILITIES (Layout crítico)
|
|
========================================================================== */
|
|
.d-flex {
|
|
display: flex !important;
|
|
}
|
|
.d-none {
|
|
display: none !important;
|
|
}
|
|
.d-block {
|
|
display: block !important;
|
|
}
|
|
.d-inline-block {
|
|
display: inline-block !important;
|
|
}
|
|
|
|
/* Responsive Display Utilities - Previene CLS en TopNotificationBar */
|
|
@media (min-width: 992px) {
|
|
.d-lg-none {
|
|
display: none !important;
|
|
}
|
|
.d-lg-block {
|
|
display: block !important;
|
|
}
|
|
.d-lg-flex {
|
|
display: flex !important;
|
|
}
|
|
}
|
|
|
|
.flex-wrap {
|
|
flex-wrap: wrap !important;
|
|
}
|
|
.flex-column {
|
|
flex-direction: column !important;
|
|
}
|
|
|
|
.justify-content-center {
|
|
justify-content: center !important;
|
|
}
|
|
.justify-content-between {
|
|
justify-content: space-between !important;
|
|
}
|
|
.justify-content-start {
|
|
justify-content: flex-start !important;
|
|
}
|
|
.justify-content-end {
|
|
justify-content: flex-end !important;
|
|
}
|
|
|
|
.align-items-center {
|
|
align-items: center !important;
|
|
}
|
|
.align-items-start {
|
|
align-items: flex-start !important;
|
|
}
|
|
.align-items-end {
|
|
align-items: flex-end !important;
|
|
}
|
|
|
|
.gap-2 {
|
|
gap: 0.5rem !important;
|
|
}
|
|
.gap-3 {
|
|
gap: 1rem !important;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
SPACING UTILITIES (Margin/Padding críticos)
|
|
========================================================================== */
|
|
.m-0 { margin: 0 !important; }
|
|
.m-auto { margin: auto !important; }
|
|
|
|
.mb-0 { margin-bottom: 0 !important; }
|
|
.mb-1 { margin-bottom: 0.25rem !important; }
|
|
.mb-2 { margin-bottom: 0.5rem !important; }
|
|
.mb-3 { margin-bottom: 1rem !important; }
|
|
.mb-4 { margin-bottom: 1.5rem !important; }
|
|
|
|
.mt-0 { margin-top: 0 !important; }
|
|
.mt-2 { margin-top: 0.5rem !important; }
|
|
.mt-3 { margin-top: 1rem !important; }
|
|
|
|
.me-1 { margin-right: 0.25rem !important; }
|
|
.me-2 { margin-right: 0.5rem !important; }
|
|
.me-3 { margin-right: 1rem !important; }
|
|
|
|
.ms-2 { margin-left: 0.5rem !important; }
|
|
.ms-3 { margin-left: 1rem !important; }
|
|
|
|
.mx-auto { margin-left: auto !important; margin-right: auto !important; }
|
|
|
|
.p-0 { padding: 0 !important; }
|
|
.p-2 { padding: 0.5rem !important; }
|
|
.p-3 { padding: 1rem !important; }
|
|
|
|
.py-2 { padding-top: 0.5rem !important; padding-bottom: 0.5rem !important; }
|
|
.py-3 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
|
|
.py-4 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
|
|
|
|
.px-2 { padding-left: 0.5rem !important; padding-right: 0.5rem !important; }
|
|
.px-3 { padding-left: 1rem !important; padding-right: 1rem !important; }
|
|
.px-4 { padding-left: 1.5rem !important; padding-right: 1.5rem !important; }
|
|
|
|
/* ==========================================================================
|
|
SIZING UTILITIES (Width/Height críticos)
|
|
========================================================================== */
|
|
.w-100 { width: 100% !important; }
|
|
.w-auto { width: auto !important; }
|
|
.h-100 { height: 100% !important; }
|
|
.h-auto { height: auto !important; }
|
|
|
|
/* ==========================================================================
|
|
TEXT UTILITIES (Críticos para layout)
|
|
========================================================================== */
|
|
.text-center { text-align: center !important; }
|
|
.text-start { text-align: left !important; }
|
|
.text-end { text-align: right !important; }
|
|
.text-white { color: #fff !important; }
|
|
.text-muted { color: var(--bs-secondary-color, #6c757d) !important; }
|
|
|
|
.fw-normal { font-weight: 400 !important; }
|
|
.fw-medium { font-weight: 500 !important; }
|
|
.fw-semibold { font-weight: 600 !important; }
|
|
.fw-bold { font-weight: 700 !important; }
|
|
|
|
.fs-5 { font-size: 1.25rem !important; }
|
|
.fs-6 { font-size: 1rem !important; }
|
|
|
|
.small { font-size: 0.875em !important; }
|
|
|
|
@media (min-width: 768px) {
|
|
.text-md-start { text-align: left !important; }
|
|
.text-md-center { text-align: center !important; }
|
|
.text-md-end { text-align: right !important; }
|
|
}
|
|
|
|
/* ==========================================================================
|
|
NAVBAR COMPONENT (Crítico - Above the fold)
|
|
========================================================================== */
|
|
.navbar {
|
|
--bs-navbar-padding-x: 0;
|
|
--bs-navbar-padding-y: 0.5rem;
|
|
--bs-navbar-color: rgba(255, 255, 255, 0.55);
|
|
--bs-navbar-hover-color: rgba(255, 255, 255, 0.75);
|
|
--bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);
|
|
--bs-navbar-active-color: #fff;
|
|
--bs-navbar-brand-padding-y: 0.3125rem;
|
|
--bs-navbar-brand-margin-end: 1rem;
|
|
--bs-navbar-brand-font-size: 1.25rem;
|
|
--bs-navbar-brand-color: #fff;
|
|
--bs-navbar-brand-hover-color: #fff;
|
|
--bs-navbar-nav-link-padding-x: 0.5rem;
|
|
--bs-navbar-toggler-padding-y: 0.25rem;
|
|
--bs-navbar-toggler-padding-x: 0.75rem;
|
|
--bs-navbar-toggler-font-size: 1.25rem;
|
|
--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
|
|
--bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);
|
|
--bs-navbar-toggler-border-radius: var(--bs-border-radius, 0.375rem);
|
|
--bs-navbar-toggler-focus-width: 0.25rem;
|
|
--bs-navbar-toggler-transition: box-shadow 0.15s ease-in-out;
|
|
position: relative;
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
padding: var(--bs-navbar-padding-y) var(--bs-navbar-padding-x);
|
|
}
|
|
|
|
.navbar > .container,
|
|
.navbar > .container-fluid {
|
|
display: flex;
|
|
flex-wrap: inherit;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.navbar-brand {
|
|
padding-top: var(--bs-navbar-brand-padding-y);
|
|
padding-bottom: var(--bs-navbar-brand-padding-y);
|
|
margin-right: var(--bs-navbar-brand-margin-end);
|
|
font-size: var(--bs-navbar-brand-font-size);
|
|
color: var(--bs-navbar-brand-color);
|
|
text-decoration: none;
|
|
white-space: nowrap;
|
|
}
|
|
.navbar-brand:hover,
|
|
.navbar-brand:focus {
|
|
color: var(--bs-navbar-brand-hover-color);
|
|
}
|
|
|
|
.navbar-nav {
|
|
--bs-nav-link-padding-x: 0;
|
|
--bs-nav-link-padding-y: 0.5rem;
|
|
--bs-nav-link-color: var(--bs-navbar-color);
|
|
--bs-nav-link-hover-color: var(--bs-navbar-hover-color);
|
|
--bs-nav-link-disabled-color: var(--bs-navbar-disabled-color);
|
|
display: flex;
|
|
flex-direction: column;
|
|
padding-left: 0;
|
|
margin-bottom: 0;
|
|
list-style: none;
|
|
}
|
|
|
|
.navbar-nav .nav-link {
|
|
padding-right: 0;
|
|
padding-left: 0;
|
|
color: var(--bs-nav-link-color);
|
|
}
|
|
.navbar-nav .nav-link:hover,
|
|
.navbar-nav .nav-link:focus {
|
|
color: var(--bs-nav-link-hover-color);
|
|
}
|
|
.navbar-nav .nav-link.active {
|
|
color: var(--bs-navbar-active-color);
|
|
}
|
|
|
|
.nav-link {
|
|
display: block;
|
|
padding: var(--bs-nav-link-padding-y) var(--bs-nav-link-padding-x);
|
|
font-size: var(--bs-nav-link-font-size);
|
|
font-weight: var(--bs-nav-link-font-weight);
|
|
color: var(--bs-nav-link-color);
|
|
text-decoration: none;
|
|
background: 0 0;
|
|
border: 0;
|
|
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out;
|
|
}
|
|
|
|
.nav-item {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.navbar-toggler {
|
|
padding: var(--bs-navbar-toggler-padding-y) var(--bs-navbar-toggler-padding-x);
|
|
font-size: var(--bs-navbar-toggler-font-size);
|
|
line-height: 1;
|
|
color: var(--bs-navbar-color);
|
|
background-color: transparent;
|
|
border: var(--bs-border-width, 1px) solid var(--bs-navbar-toggler-border-color);
|
|
border-radius: var(--bs-navbar-toggler-border-radius);
|
|
transition: var(--bs-navbar-toggler-transition);
|
|
}
|
|
.navbar-toggler:hover {
|
|
text-decoration: none;
|
|
}
|
|
.navbar-toggler:focus {
|
|
text-decoration: none;
|
|
outline: 0;
|
|
box-shadow: 0 0 0 var(--bs-navbar-toggler-focus-width);
|
|
}
|
|
|
|
.navbar-toggler-icon {
|
|
display: inline-block;
|
|
width: 1.5em;
|
|
height: 1.5em;
|
|
vertical-align: middle;
|
|
background-image: var(--bs-navbar-toggler-icon-bg);
|
|
background-repeat: no-repeat;
|
|
background-position: center;
|
|
background-size: 100%;
|
|
}
|
|
|
|
.navbar-dark,
|
|
.navbar[data-bs-theme="dark"] {
|
|
--bs-navbar-color: rgba(255, 255, 255, 0.55);
|
|
--bs-navbar-hover-color: rgba(255, 255, 255, 0.75);
|
|
--bs-navbar-disabled-color: rgba(255, 255, 255, 0.25);
|
|
--bs-navbar-active-color: #fff;
|
|
--bs-navbar-brand-color: #fff;
|
|
--bs-navbar-brand-hover-color: #fff;
|
|
--bs-navbar-toggler-border-color: rgba(255, 255, 255, 0.1);
|
|
--bs-navbar-toggler-icon-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
|
|
}
|
|
|
|
/* ==========================================================================
|
|
COLLAPSE COMPONENT (Navbar mobile)
|
|
========================================================================== */
|
|
.collapse:not(.show) {
|
|
display: none;
|
|
}
|
|
|
|
.navbar-collapse {
|
|
flex-basis: 100%;
|
|
flex-grow: 1;
|
|
align-items: center;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
DROPDOWN COMPONENT (Navbar submenus)
|
|
========================================================================== */
|
|
.dropdown {
|
|
position: relative;
|
|
}
|
|
|
|
.dropdown-toggle {
|
|
white-space: nowrap;
|
|
}
|
|
.dropdown-toggle::after {
|
|
display: inline-block;
|
|
margin-left: 0.255em;
|
|
vertical-align: 0.255em;
|
|
content: "";
|
|
border-top: 0.3em solid;
|
|
border-right: 0.3em solid transparent;
|
|
border-bottom: 0;
|
|
border-left: 0.3em solid transparent;
|
|
}
|
|
|
|
.dropdown-menu {
|
|
--bs-dropdown-zindex: 1000;
|
|
--bs-dropdown-min-width: 10rem;
|
|
--bs-dropdown-padding-x: 0;
|
|
--bs-dropdown-padding-y: 0.5rem;
|
|
--bs-dropdown-spacer: 0.125rem;
|
|
--bs-dropdown-font-size: 1rem;
|
|
--bs-dropdown-color: var(--bs-body-color, #212529);
|
|
--bs-dropdown-bg: var(--bs-body-bg, #fff);
|
|
--bs-dropdown-border-color: var(--bs-border-color-translucent, rgba(0,0,0,.175));
|
|
--bs-dropdown-border-radius: var(--bs-border-radius, 0.375rem);
|
|
--bs-dropdown-border-width: var(--bs-border-width, 1px);
|
|
--bs-dropdown-inner-border-radius: calc(var(--bs-border-radius, 0.375rem) - var(--bs-border-width, 1px));
|
|
--bs-dropdown-divider-bg: var(--bs-border-color-translucent, rgba(0,0,0,.175));
|
|
--bs-dropdown-divider-margin-y: 0.5rem;
|
|
--bs-dropdown-box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15);
|
|
--bs-dropdown-link-color: var(--bs-body-color, #212529);
|
|
--bs-dropdown-link-hover-color: var(--bs-body-color, #212529);
|
|
--bs-dropdown-link-hover-bg: var(--bs-tertiary-bg, #f8f9fa);
|
|
--bs-dropdown-link-active-color: #fff;
|
|
--bs-dropdown-link-active-bg: #0d6efd;
|
|
--bs-dropdown-link-disabled-color: var(--bs-tertiary-color, #adb5bd);
|
|
--bs-dropdown-item-padding-x: 1rem;
|
|
--bs-dropdown-item-padding-y: 0.25rem;
|
|
--bs-dropdown-header-color: #6c757d;
|
|
--bs-dropdown-header-padding-x: 1rem;
|
|
--bs-dropdown-header-padding-y: 0.5rem;
|
|
position: absolute;
|
|
z-index: var(--bs-dropdown-zindex);
|
|
display: none;
|
|
min-width: var(--bs-dropdown-min-width);
|
|
padding: var(--bs-dropdown-padding-y) var(--bs-dropdown-padding-x);
|
|
margin: 0;
|
|
font-size: var(--bs-dropdown-font-size);
|
|
color: var(--bs-dropdown-color);
|
|
text-align: left;
|
|
list-style: none;
|
|
background-color: var(--bs-dropdown-bg);
|
|
background-clip: padding-box;
|
|
border: var(--bs-dropdown-border-width) solid var(--bs-dropdown-border-color);
|
|
border-radius: var(--bs-dropdown-border-radius);
|
|
}
|
|
|
|
.dropdown-menu.show {
|
|
display: block;
|
|
}
|
|
|
|
.dropdown-item {
|
|
display: block;
|
|
width: 100%;
|
|
padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);
|
|
clear: both;
|
|
font-weight: 400;
|
|
color: var(--bs-dropdown-link-color);
|
|
text-align: inherit;
|
|
text-decoration: none;
|
|
white-space: nowrap;
|
|
background-color: transparent;
|
|
border: 0;
|
|
}
|
|
.dropdown-item:hover,
|
|
.dropdown-item:focus {
|
|
color: var(--bs-dropdown-link-hover-color);
|
|
background-color: var(--bs-dropdown-link-hover-bg);
|
|
}
|
|
.dropdown-item.active,
|
|
.dropdown-item:active {
|
|
color: var(--bs-dropdown-link-active-color);
|
|
text-decoration: none;
|
|
background-color: var(--bs-dropdown-link-active-bg);
|
|
}
|
|
|
|
/* ==========================================================================
|
|
TEXT UTILITIES
|
|
========================================================================== */
|
|
.text-decoration-underline {
|
|
text-decoration: underline !important;
|
|
}
|
|
.text-decoration-none {
|
|
text-decoration: none !important;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
IMAGE UTILITIES
|
|
========================================================================== */
|
|
.img-fluid {
|
|
max-width: 100%;
|
|
height: auto;
|
|
}
|
|
|
|
/* ==========================================================================
|
|
ALERT COMPONENT (Above-the-fold notifications)
|
|
========================================================================== */
|
|
.alert {
|
|
--bs-alert-padding-x: 1rem;
|
|
--bs-alert-padding-y: 1rem;
|
|
--bs-alert-margin-bottom: 1rem;
|
|
--bs-alert-border-radius: 0.375rem;
|
|
position: relative;
|
|
padding: var(--bs-alert-padding-y) var(--bs-alert-padding-x);
|
|
margin-bottom: var(--bs-alert-margin-bottom);
|
|
border: 1px solid transparent;
|
|
border-radius: var(--bs-alert-border-radius);
|
|
}
|
|
.alert-warning {
|
|
--bs-alert-color: #664d03;
|
|
--bs-alert-bg: #fff3cd;
|
|
--bs-alert-border-color: #ffecb5;
|
|
color: var(--bs-alert-color);
|
|
background-color: var(--bs-alert-bg);
|
|
border-color: var(--bs-alert-border-color);
|
|
}
|
|
.alert-info {
|
|
--bs-alert-color: #055160;
|
|
--bs-alert-bg: #cff4fc;
|
|
--bs-alert-border-color: #b6effb;
|
|
color: var(--bs-alert-color);
|
|
background-color: var(--bs-alert-bg);
|
|
border-color: var(--bs-alert-border-color);
|
|
}
|
|
|
|
/* ==========================================================================
|
|
BUTTON COMPONENT (Above-the-fold - Navbar CTA)
|
|
========================================================================== */
|
|
.btn {
|
|
--bs-btn-padding-x: 0.75rem;
|
|
--bs-btn-padding-y: 0.375rem;
|
|
--bs-btn-font-size: 1rem;
|
|
--bs-btn-font-weight: 400;
|
|
--bs-btn-line-height: 1.5;
|
|
--bs-btn-color: var(--bs-body-color);
|
|
--bs-btn-bg: transparent;
|
|
--bs-btn-border-width: var(--bs-border-width, 1px);
|
|
--bs-btn-border-color: transparent;
|
|
--bs-btn-border-radius: var(--bs-border-radius, 0.375rem);
|
|
--bs-btn-hover-border-color: transparent;
|
|
--bs-btn-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.15), 0 1px 1px rgba(0, 0, 0, 0.075);
|
|
--bs-btn-disabled-opacity: 0.65;
|
|
--bs-btn-focus-box-shadow: 0 0 0 0.25rem rgba(var(--bs-btn-focus-shadow-rgb), 0.5);
|
|
display: inline-block;
|
|
padding: var(--bs-btn-padding-y) var(--bs-btn-padding-x);
|
|
font-family: var(--bs-btn-font-family);
|
|
font-size: var(--bs-btn-font-size);
|
|
font-weight: var(--bs-btn-font-weight);
|
|
line-height: var(--bs-btn-line-height);
|
|
color: var(--bs-btn-color);
|
|
text-align: center;
|
|
text-decoration: none;
|
|
vertical-align: middle;
|
|
cursor: pointer;
|
|
user-select: none;
|
|
border: var(--bs-btn-border-width) solid var(--bs-btn-border-color);
|
|
border-radius: var(--bs-btn-border-radius);
|
|
background-color: var(--bs-btn-bg);
|
|
transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out;
|
|
}
|
|
.btn:hover {
|
|
color: var(--bs-btn-hover-color);
|
|
background-color: var(--bs-btn-hover-bg);
|
|
border-color: var(--bs-btn-hover-border-color);
|
|
}
|
|
.btn:focus-visible {
|
|
color: var(--bs-btn-hover-color);
|
|
background-color: var(--bs-btn-hover-bg);
|
|
border-color: var(--bs-btn-hover-border-color);
|
|
outline: 0;
|
|
box-shadow: var(--bs-btn-focus-box-shadow);
|
|
}
|
|
.btn:disabled, .btn.disabled {
|
|
pointer-events: none;
|
|
opacity: var(--bs-btn-disabled-opacity);
|
|
}
|
|
|
|
/* ==========================================================================
|
|
BUTTON CLOSE (Dismiss notification)
|
|
========================================================================== */
|
|
.btn-close {
|
|
--bs-btn-close-color: #000;
|
|
--bs-btn-close-bg: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e");
|
|
--bs-btn-close-opacity: 0.5;
|
|
--bs-btn-close-hover-opacity: 0.75;
|
|
--bs-btn-close-focus-shadow: 0 0 0 0.25rem rgba(13, 110, 253, 0.25);
|
|
--bs-btn-close-focus-opacity: 1;
|
|
--bs-btn-close-disabled-opacity: 0.25;
|
|
--bs-btn-close-white-filter: invert(1) grayscale(100%) brightness(200%);
|
|
box-sizing: content-box;
|
|
width: 1em;
|
|
height: 1em;
|
|
padding: 0.25em 0.25em;
|
|
color: var(--bs-btn-close-color);
|
|
background: transparent var(--bs-btn-close-bg) center/1em auto no-repeat;
|
|
border: 0;
|
|
border-radius: 0.375rem;
|
|
opacity: var(--bs-btn-close-opacity);
|
|
}
|
|
.btn-close:hover {
|
|
color: var(--bs-btn-close-color);
|
|
text-decoration: none;
|
|
opacity: var(--bs-btn-close-hover-opacity);
|
|
}
|
|
.btn-close:focus {
|
|
outline: 0;
|
|
box-shadow: var(--bs-btn-close-focus-shadow);
|
|
opacity: var(--bs-btn-close-focus-opacity);
|
|
}
|
|
|
|
.btn-close-white {
|
|
filter: var(--bs-btn-close-white-filter);
|
|
}
|
|
|
|
/* ==========================================================================
|
|
RESPONSIVE BREAKPOINTS (navbar-expand-lg)
|
|
========================================================================== */
|
|
@media (min-width: 992px) {
|
|
.navbar-expand-lg {
|
|
flex-wrap: nowrap;
|
|
justify-content: flex-start;
|
|
}
|
|
.navbar-expand-lg .navbar-nav {
|
|
flex-direction: row;
|
|
}
|
|
.navbar-expand-lg .navbar-nav .dropdown-menu {
|
|
position: absolute;
|
|
}
|
|
.navbar-expand-lg .navbar-nav .nav-link {
|
|
padding-right: var(--bs-navbar-nav-link-padding-x);
|
|
padding-left: var(--bs-navbar-nav-link-padding-x);
|
|
}
|
|
.navbar-expand-lg .navbar-collapse {
|
|
display: flex !important;
|
|
flex-basis: auto;
|
|
}
|
|
.navbar-expand-lg .navbar-toggler {
|
|
display: none;
|
|
}
|
|
|
|
.d-lg-block { display: block !important; }
|
|
.d-lg-none { display: none !important; }
|
|
.mb-lg-0 { margin-bottom: 0 !important; }
|
|
}
|
|
|
|
@media (max-width: 991.98px) {
|
|
.navbar-expand-lg > .container,
|
|
.navbar-expand-lg > .container-fluid {
|
|
padding-right: 0;
|
|
padding-left: 0;
|
|
}
|
|
}
|
|
|
|
/* ==========================================================================
|
|
RESPONSIVE DISPLAY UTILITIES (md breakpoint)
|
|
========================================================================== */
|
|
@media (min-width: 768px) {
|
|
.d-md-block { display: block !important; }
|
|
.d-md-none { display: none !important; }
|
|
}
|
|
|
|
/* ==========================================================================
|
|
TYPOGRAPHY BASE (Critical)
|
|
========================================================================== */
|
|
p {
|
|
margin-top: 0;
|
|
margin-bottom: 1rem;
|
|
}
|
|
h1, h2, h3, h4, h5, h6 {
|
|
margin-top: 0;
|
|
margin-bottom: 0.5rem;
|
|
font-weight: 500;
|
|
line-height: 1.2;
|
|
}
|
|
h1 { font-size: calc(1.375rem + 1.5vw); }
|
|
h2 { font-size: calc(1.325rem + 0.9vw); }
|
|
h3 { font-size: calc(1.3rem + 0.6vw); }
|
|
h4 { font-size: calc(1.275rem + 0.3vw); }
|
|
h5 { font-size: 1.25rem; }
|
|
h6 { font-size: 1rem; }
|
|
@media (min-width: 1200px) {
|
|
h1 { font-size: 2.5rem; }
|
|
h2 { font-size: 2rem; }
|
|
h3 { font-size: 1.75rem; }
|
|
h4 { font-size: 1.5rem; }
|
|
}
|
|
|