@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(../fonts/google/Inter-400-latin-ext.woff2) format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(../fonts/google/Inter-400-latin.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/google/Inter-500-latin-ext.woff2) format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/google/Inter-500-latin.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 600;
font-display: swap;
src: url(../fonts/google/Inter-600-latin-ext.woff2) format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 600;
font-display: swap;
src: url(../fonts/google/Inter-600-latin.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(../fonts/google/Inter-700-latin-ext.woff2) format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
font-family: 'Inter';
font-style: normal;
font-weight: 700;
font-display: swap;
src: url(../fonts/google/Inter-700-latin.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(../fonts/google/JetBrainsMono-400-latin-ext.woff2) format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(../fonts/google/JetBrainsMono-400-latin.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/google/JetBrainsMono-500-latin-ext.woff2) format('woff2');
unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
font-family: 'JetBrains Mono';
font-style: normal;
font-weight: 500;
font-display: swap;
src: url(../fonts/google/JetBrainsMono-500-latin.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
:root, [data-bs-theme=light] {
--font-sans : 'Inter', system-ui, -apple-system, 'Segoe UI', sans-serif;
--font-display : 'Inter', system-ui, sans-serif;
--font-mono : 'JetBrains Mono', ui-monospace, 'IBM Plex Mono', monospace;
--bg : #ffffff;
--bg-subtle : #fafafa;
--bg-soft : #f5f5f5;
--text : #18181b;
--text-soft : #3f3f46;
--text-muted : #71717a;
--heading : #09090b;
--border : #e4e4e7;
--border-soft : #f1f1f3;
--border-strong : #d4d4d8;
--accent : #1b5fac;
--accent-hover : #154c8c;
--accent-soft : #e8f1fb;
--link : #1b5fac;
--link-hover : #103a6e;
--success : #16a34a;
--warning : #ca8a04;
--danger : #dc2626;
--info : #2563eb;
--rgb-card : transparent;
--radius-xs : 4px;
--radius-sm : 6px;
--radius-md : 8px;
--radius-lg : 12px;
--radius-xl : 16px;
--ease : cubic-bezier(.4, 0, .2, 1);
--shadow-sm : 0 1px 2px rgba(0,0,0,.04);
--shadow-md : 0 1px 3px rgba(0,0,0,.06), 0 1px 2px rgba(0,0,0,.04);
--btn-neutral : #18181b;
--btn-neutral-hover : #27272a;
--navy : #eef2fb;
--navy-2 : #e3e9f8;
--navy-3 : #d9e2f6;
--navy-border : rgba(15, 23, 42, 0.08);
--on-navy : var(--heading);
--on-navy-muted : var(--text-muted);
--navy-overlay : rgba(15, 23, 42, 0.035);
--navy-overlay-hover : rgba(15, 23, 42, 0.07);
--accent-warm : #ff8a1e;
--accent-warm-hover : #e87710;
--accent-warm-soft : rgba(255, 138, 30, 0.14);
--navy-warm-end : #fbe4cd;
}
[data-bs-theme=dark] {
--bg : #0a0a0a;
--bg-subtle : #111113;
--bg-soft : #18181b;
--text : #fafafa;
--text-soft : #d4d4d8;
--text-muted : #a1a1aa;
--heading : #ffffff;
--border : #27272a;
--border-soft : #1c1c1f;
--border-strong : #3f3f46;
--accent : #4d8fde;
--accent-hover : #6ea4e8;
--accent-soft : #0d1f38;
--link : #4d8fde;
--link-hover : #8bb8ec;
--shadow-sm : 0 1px 2px rgba(0,0,0,.4);
--shadow-md : 0 1px 3px rgba(0,0,0,.5), 0 1px 2px rgba(0,0,0,.3);
--btn-neutral : #27272a;
--btn-neutral-hover : #3f3f46;
--navy : #0b1220;
--navy-2 : #131b30;
--navy-3 : #1c2742;
--navy-border : rgba(255, 255, 255, 0.10);
--on-navy : #f8fafc;
--on-navy-muted : rgba(248, 250, 252, 0.68);
--navy-overlay : rgba(255, 255, 255, 0.06);
--navy-overlay-hover : rgba(255, 255, 255, 0.14);
--navy-warm-end : #2a1a05;
}
* { -webkit-tap-highlight-color: transparent; box-sizing: border-box; }
html { scroll-behavior: smooth; }
body {
font-family: var(--font-sans);
color: var(--text);
background: var(--bg);
font-size: 15px;
line-height: 1.6;
letter-spacing: -0.005em;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
margin: 0;
}
html.theme-transition,
html.theme-transition * {
transition:
background-color .25s var(--ease),
border-color .25s var(--ease),
color .2s var(--ease) !important;
}
img, svg, video, iframe, .no-theme-transition { transition: none !important; }
h1, h2, h3, h4, h5, h6,
.h1, .h2, .h3, .h4, .h5, .h6 {
font-family: var(--font-display);
color: var(--heading);
font-weight: 700;
line-height: 1.2;
letter-spacing: -0.02em;
margin: 0 0 .6rem;
text-wrap: balance;
}
h1, .h1 { font-size: clamp(2rem, 3.2vw, 3rem); font-weight: 800; letter-spacing: -0.035em; line-height: 1.1; }
h2, .h2 { font-size: clamp(1.6rem, 2.4vw, 2.15rem); font-weight: 700; letter-spacing: -0.025em; line-height: 1.18; }
h3, .h3 { font-size: clamp(1.3rem, 1.8vw, 1.6rem); font-weight: 700; line-height: 1.25; }
h4, .h4 { font-size: 1.15rem; font-weight: 600; line-height: 1.3; }
h5, .h5 { font-size: 1rem; font-weight: 600; line-height: 1.4; }
h6, .h6 { font-size: .82rem; font-weight: 600; line-height: 1.4;
text-transform: uppercase; letter-spacing: 0.1em; color: var(--text-muted); }
h1 + p, h2 + p, h3 + p { margin-top: .25rem; color: var(--text-muted); }
p { margin: 0 0 1rem; }
a { color: var(--link); text-decoration: none; transition: color .15s var(--ease); }
a:hover { color: var(--link-hover); }
hr { border: 0; border-top: 1px solid var(--border); margin: 2rem 0; }
::selection { background: var(--accent-soft); color: var(--accent); }
.text-muted { color: var(--text-muted) !important; }
:root, [data-bs-theme=light] {
--glow-a : rgba(27, 95, 172, 0.12);
--glow-b : rgba(37, 99, 235, 0.10);
--glow-c : rgba(22, 163, 74, 0.09);
}
[data-bs-theme=dark] {
--glow-a : rgba(77, 143, 222, 0.18);
--glow-b : rgba(75, 123, 255, 0.16);
--glow-c : rgba(62, 240, 200, 0.12);
}
#app {
position: relative;
min-height: 100vh;
background: transparent;
color: var(--text);
overflow-x: hidden;
}
body { position: relative; }
body::before {
content: "";
position: fixed;
inset: 0;
z-index: -2;
background:
radial-gradient(600px 380px at 12% 18%, var(--glow-a), transparent 60%),
radial-gradient(700px 420px at 88% 22%, var(--glow-b), transparent 60%),
radial-gradient(700px 500px at 50% 95%, var(--glow-c), transparent 60%);
pointer-events: none;
}
.theme-ripple {
position: fixed;
pointer-events: none;
border-radius: 50%;
background: var(--bg);
z-index: 9999;
transform: scale(0);
animation: themeRipple .55s var(--ease) forwards;
}
@keyframes themeRipple { to { transform: scale(40); opacity: 0; } }
:root, [data-bs-theme=light] {
--nav-bg : rgba(255, 255, 255, 0.20);
--nav-bg-solid : rgba(255, 255, 255, 0.82);
--nav-border : rgba(15, 23, 42, 0.07);
--nav-shadow : 0 8px 24px rgba(15, 23, 42, 0.10);
}
[data-bs-theme=dark] {
--nav-bg : rgba(10, 10, 10, 0.18);
--nav-bg-solid : rgba(17, 20, 28, 0.82);
--nav-border : rgba(148, 184, 240, 0.10);
--nav-shadow : 0 8px 24px rgba(0, 0, 0, 0.45);
}
#header {
position: fixed;
top: 0; left: 0; right: 0;
z-index: 1030;
background: var(--nav-bg-solid);
border-bottom: 1px solid var(--nav-border);
backdrop-filter: blur(14px);
-webkit-backdrop-filter: blur(14px);
transition: box-shadow .25s var(--ease);
}
#app { padding-top: 72px; }
#header.is-scrolled { box-shadow: var(--nav-shadow); }
.navbar {
background: transparent !important;
padding: .65rem 0;
border: 0;
min-height: 0;
transition: padding .25s var(--ease);
}
#header.is-scrolled .navbar { padding: .5rem 0; }
#header.is-scrolled .navbar-brand img { transform: scale(.9); }
.navbar-brand { padding-top: 0; padding-bottom: 0; margin: 0; }
.navbar-brand img { width: 34px !important; height: auto !important; }
.navbar a.nav-link { padding-top: .35rem !important; padding-bottom: .35rem !important; }
.navbar-brand { display: inline-flex; align-items: center; gap: 10px; }
.navbar-brand img { transition: transform .25s var(--ease); }
.navbar-brand:hover img { transform: scale(1.05); }
.nav-mode-dark, .nav-mode-light {
background: none;
-webkit-background-clip: initial;
background-clip: initial;
-webkit-text-fill-color: initial;
color: var(--heading) !important;
font-family: var(--font-display);
font-weight: 700;
font-size: 1.15rem;
letter-spacing: -0.02em;
}
.navbar-nav {
font-size: .82rem;
font-weight: 500;
letter-spacing: 0.06em;
gap: 2px;
}
.nav-item { padding-right: 0; }
.navbar a.nav-link {
color: var(--text-soft) !important;
position: relative;
padding: .5rem .9rem;
border-radius: var(--radius-sm);
text-transform: uppercase;
letter-spacing: 0.08em;
font-size: .72rem;
font-weight: 600;
display: inline-flex !important;
align-items: center !important;
gap: 6px;
transition: color .15s var(--ease), background .15s var(--ease);
}
.navbar a.nav-link:hover {
color: var(--heading) !important;
background: var(--bg-soft);
}
.navbar a.nav-link.active,
.nav-item.active a.nav-link {
color: var(--accent) !important;
}
.navbar a.nav-link i { font-size: .85rem; line-height: 1; }
.navbar a.nav-link::after { content: none !important; }
.navbar .dropdown-toggle::after { display: none !important; }
.navbar .dropdown-toggle > i.fa-angle-down,
.navbar .dropdown-toggle > .fa-angle-down {
margin-left: 6px;
font-size: .85em;
opacity: .85;
transition: transform .2s var(--ease);
display: inline-block;
}
.navbar .dropdown-toggle[aria-expanded="true"] > i.fa-angle-down,
.navbar .nav-item.show > .dropdown-toggle > i.fa-angle-down {
transform: rotate(180deg);
}
.navbar-toggler {
border: 1px solid var(--border);
border-radius: var(--radius-sm);
color: var(--text);
padding: .35rem .6rem;
}
.navbar-toggler:focus { box-shadow: none; }
.dropdown-menu {
background: var(--bg) !important;
color: var(--text);
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 8px;
box-shadow: var(--shadow-md);
margin-top: 8px !important;
min-width: 220px;
}
[data-bs-theme=light] .dropdown-menu { background: #ffffff !important; }
[data-bs-theme=dark] .dropdown-menu { background: #111113 !important; }
.dropdown-item {
border-radius: var(--radius-sm);
padding: .6rem .85rem;
color: var(--text);
font-size: .95rem;
font-weight: 500;
transition: background .15s var(--ease);
}
.dropdown-item:hover, .dropdown-item:focus {
background: var(--bg-soft);
color: var(--text);
}
.dropdown-item h6 {
margin-bottom: 2px;
color: var(--heading);
font-size: .95rem;
font-weight: 600;
text-transform: none;
letter-spacing: 0;
}
.dropdown-item p { margin: 0; font-size: .82rem; color: var(--text-muted); }
.dropdown-menu-product {
width: 300px;
min-width: 300px;
}
.dropdown-menu-product .dropdown-item {
white-space: normal;
}
.dropdown-menu-product .dropdown-item h6 {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.dropdown-menu-product .dropdown-item p {
display: -webkit-box;
overflow: hidden;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
line-height: 1.35;
max-height: 2.7em;
}
.nav-product-menu {
width: 320px;
min-width: 320px;
max-height: min(70vh, 560px);
overflow: visible;
}
.nav-product-menu .nav-submenu,
.nav-product-menu .nav-submenu-head {
position: relative;
}
.nav-product-menu .nav-submenu-head {
display: flex;
align-items: stretch;
}
.nav-product-menu .nav-submenu-link,
.nav-product-menu .nav-leaf-item {
flex: 1 1 auto;
min-width: 0;
}
.nav-product-menu .nav-submenu-copy {
display: block;
min-width: 0;
padding-right: .5rem;
}
.nav-product-menu .nav-submenu-copy strong {
display: block;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
font-size: .92rem;
font-weight: 600;
}
.nav-product-menu .nav-submenu-copy small {
display: -webkit-box;
overflow: hidden;
color: var(--text-muted);
font-size: .76rem;
line-height: 1.35;
-webkit-box-orient: vertical;
-webkit-line-clamp: 2;
}
.nav-submenu-toggle {
flex: 0 0 36px;
border: 0;
border-radius: var(--radius-sm);
background: transparent;
color: var(--text-muted);
cursor: pointer;
}
.nav-submenu-toggle:hover,
.nav-submenu.is-open > .nav-submenu-head .nav-submenu-toggle {
background: var(--bg-soft);
color: var(--accent);
}
.nav-submenu-toggle i {
transition: transform .18s var(--ease);
}
.nav-submenu.is-open > .nav-submenu-head .nav-submenu-toggle i {
transform: rotate(90deg);
}
.nav-submenu-menu {
display: none;
top: -8px;
left: calc(100% + 8px);
margin: 0 !important;
width: 280px;
min-width: 280px;
max-height: min(70vh, 560px);
overflow: visible;
}
.nav-submenu:hover > .nav-submenu-menu,
.nav-submenu.is-open > .nav-submenu-menu {
display: block;
}
.nav-submenu-menu .nav-submenu-menu {
top: -8px;
}
#bd-theme {
display: inline-flex !important;
flex-direction: row !important;
align-items: center !important;
gap: 8px;
padding: .45rem .85rem !important;
border-radius: var(--radius-sm);
border: 1px solid var(--border);
background: transparent;
text-transform: uppercase;
letter-spacing: 0.08em;
font-size: .72rem;
color: var(--text-soft) !important;
}
#bd-theme:hover { background: var(--bg-soft); color: var(--heading) !important; }
#bd-theme::after { display: none; }
#menu-mode {
display: inline-flex;
align-items: center;
justify-content: center;
font-size: .9rem;
line-height: 1;
}
#menu-mode i { animation: themeIconSpin .35s var(--ease); }
@keyframes themeIconSpin {
from { transform: rotate(-90deg); opacity: 0; }
to { transform: rotate(0); opacity: 1; }
}
.theme-menu {
min-width: 160px;
background: var(--bg);
border: 1px solid var(--border);
border-radius: var(--radius-md);
padding: 6px;
}
.theme-pill {
display: flex; align-items: center; gap: 10px;
width: 100%;
padding: .5rem .65rem;
border-radius: var(--radius-sm);
border: 0;
background: transparent;
color: var(--text);
text-align: left;
font-size: .85rem;
transition: background .15s var(--ease);
}
.theme-pill:hover { background: var(--bg-soft); }
.theme-pill[aria-pressed="true"] {
background: var(--bg-soft);
color: var(--accent);
}
@media (max-width: 1399.98px) {
#collapsibleNavId {
width: 100%;
padding-top: .75rem;
}
#collapsibleNavId .navbar-nav {
width: 100%;
align-items: stretch;
gap: 2px;
margin-left: 0 !important;
text-align: left !important;
}
#collapsibleNavId .navbar-nav .nav-item,
#collapsibleNavId .navbar-nav .nav-link {
width: 100%;
}
#collapsibleNavId .navbar-nav .nav-link {
justify-content: flex-start;
padding: .7rem .85rem !important;
}
#collapsibleNavId .navbar-nav .dropdown-toggle {
justify-content: space-between;
}
#collapsibleNavId .dropdown-menu,
#collapsibleNavId .dropdown-menu-product {
position: static !important;
transform: none !important;
width: 100%;
min-width: 0;
max-width: 100%;
margin: .15rem 0 .4rem !important;
box-shadow: none;
border-radius: var(--radius-sm);
}
#collapsibleNavId .dropdown-item {
white-space: normal;
}
#collapsibleNavId .nav-product-menu {
max-height: none;
overflow: visible;
}
#collapsibleNavId .nav-product-menu .nav-submenu-head {
align-items: stretch;
}
#collapsibleNavId .nav-product-menu .nav-submenu-link {
padding-left: 1.2rem;
}
#collapsibleNavId .nav-product-menu .nav-submenu-menu {
position: static !important;
display: none !important;
visibility: hidden;
width: 100%;
min-width: 0;
max-height: none;
margin: 0 0 .2rem !important;
padding: 4px 0 4px .75rem;
border: 0;
border-left: 1px solid var(--border);
border-radius: 0;
box-shadow: none;
}
#collapsibleNavId .nav-product-menu .nav-submenu.is-open > .nav-submenu-menu {
display: block !important;
visibility: visible;
}
#collapsibleNavId .nav-product-menu .nav-submenu-menu .nav-submenu-link,
#collapsibleNavId .nav-product-menu .nav-submenu-menu .nav-leaf-item {
padding-left: 1rem;
}
#collapsibleNavId > .btn,
#collapsibleNavId > form {
display: block;
width: 100%;
margin: .35rem 0 0 !important;
}
#collapsibleNavId > form .btn {
width: 100%;
}
#collapsibleNavId > .nav-action-compact,
#collapsibleNavId > form.nav-action-compact {
display: inline-flex;
width: auto;
align-items: center;
margin: .35rem 0 !important;
vertical-align: middle;
}
#collapsibleNavId > form.nav-action-compact .btn {
width: auto;
margin-top: 0 !important;
margin-bottom: 0 !important;
}
}
.btn {
border-radius: var(--radius-sm);
font-weight: 600;
padding: .55rem 1.1rem;
font-size: .88rem;
letter-spacing: 0.005em;
border: 1px solid transparent;
color: #fff !important;
transition: background .15s var(--ease), color .15s var(--ease), border-color .15s var(--ease), transform .1s var(--ease);
}
.btn:hover, .btn:focus, .btn:active { color: #fff !important; }
.btn:active { transform: translateY(1px); }
.btn-lg { padding: .75rem 1.5rem; font-size: .95rem; }
.btn-sm { padding: .35rem .8rem; font-size: .78rem; }
.btn-md { padding: .55rem 1.1rem; }
.btn-primary {
background: var(--accent);
border-color: var(--accent);
box-shadow: none;
}
.btn-primary:hover { background: var(--accent-hover); border-color: var(--accent-hover); }
.btn-success { background: var(--success); border-color: var(--success); }
.btn-success:hover { background: #15803d; border-color: #15803d; }
.btn-danger { background: var(--danger); border-color: var(--danger); }
.btn-danger:hover { background: #b91c1c; border-color: #b91c1c; }
.btn-warning { background: var(--warning); border-color: var(--warning); }
.btn-warning:hover { background: #a16207; border-color: #a16207; }
.btn-info { background: var(--info); border-color: var(--info); }
.btn-info:hover { background: #1d4ed8; border-color: #1d4ed8; }
.btn-secondary, .btn-light, .btn-grey, .btn-dark {
background: var(--btn-neutral);
border-color: var(--btn-neutral);
}
.btn-secondary:hover, .btn-light:hover, .btn-grey:hover, .btn-dark:hover {
background: var(--btn-neutral-hover);
border-color: var(--btn-neutral-hover);
}
.btn-akun { padding-left: 1rem; padding-right: 1rem; }
.btn-block { width: 100%; display: block; }
.btn-hero-primary {
background: var(--accent);
border-color: var(--accent);
}
.btn-hero-primary:hover { background: var(--accent-hover); border-color: var(--accent-hover); }
.btn-hero-outline {
background: var(--btn-neutral);
border-color: var(--btn-neutral);
}
.btn-hero-outline:hover { background: var(--btn-neutral-hover); border-color: var(--btn-neutral-hover); }
.btn-link { color: #fff !important; text-decoration: underline; }
.btn-link:hover { color: #fff !important; opacity: .85; }
.btn .btn-close { filter: invert(1); opacity: .85; }
.form-control, .form-select {
background: var(--bg);
border: 1px solid var(--border);
color: var(--text);
border-radius: var(--radius-sm);
padding: .55rem .85rem;
font-size: .9rem;
box-shadow: none;
}
.form-control:focus, .form-select:focus {
background: var(--bg);
border-color: var(--text);
box-shadow: 0 0 0 3px var(--bg-soft);
color: var(--text);
}
.form-control::placeholder { color: var(--text-muted); }
.form-group { margin-bottom: 1rem !important; }
.css-rounded { border-radius: var(--radius-sm) !important; }
.form-control-soft {
background: var(--bg);
border: 1px solid var(--border);
color: var(--text);
border-radius: var(--radius-sm);
}
.form-control-soft::placeholder { color: var(--text-muted); }
.banner { padding: 2.5rem 0 3rem; background: transparent; }
.banner-text { padding-top: 0; }
.home-landing { position: relative; }
.home-hero-navy > .container {
padding-top: calc(5.5rem + 72px);
padding-bottom: 5rem;
}
.home-landing .home-section {
padding: 0;
}
.home-landing .home-section > .container {
padding-top: 4rem;
padding-bottom: 4rem;
}
@media (max-width: 991px) {
.home-hero-navy > .container { padding-top: calc(4rem + 72px); padding-bottom: 3.5rem; }
}
.home-hero {
padding: 4rem 0 4rem;
border-bottom: 1px solid var(--border);
}
.home-hero .banner-text h1 {
font-size: clamp(2.25rem, 4vw, 3.5rem);
color: var(--heading);
margin-bottom: 1rem;
font-weight: 800;
letter-spacing: -0.035em;
line-height: 1.05;
}
.home-hero .banner-text h1 span { color: var(--accent); }
.home-hero .banner-text p {
font-size: 1.05rem;
color: var(--text-muted);
max-width: 60ch;
line-height: 1.65;
}
.banner .banner-text h1 {
font-size: clamp(2rem, 3vw, 2.75rem);
font-family: var(--font-display);
font-weight: 800;
line-height: 1.1;
letter-spacing: -0.03em;
}
.banner .banner-text p {
font-size: 1rem;
color: var(--text-muted);
line-height: 1.65;
}
.img-banner { border-radius: var(--radius-lg) !important; }
#img-article {
width: 100%;
aspect-ratio: 16 / 9;
object-fit: cover;
border-radius: var(--radius-md);
border: 1px solid var(--border);
}
.hero-badge, .page-hero .eyebrow {
display: inline-flex; align-items: center; gap: 8px;
padding: 5px 10px;
border-radius: var(--radius-xs);
background: transparent;
border: 1px solid var(--border);
font-family: var(--font-mono);
font-size: .68rem;
font-weight: 500;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--text-muted);
}
.hero-badge .dot {
width: 6px; height: 6px;
border-radius: 50%;
background: var(--success);
}
.hero-badge.badge-blue { background: rgba(27, 95, 172, .10); border-color: rgba(27, 95, 172, .28); color: #1b5fac; }
.hero-badge.badge-green { background: rgba(22, 163, 74, .10); border-color: rgba(22, 163, 74, .28); color: #16a34a; }
.hero-badge.badge-orange { background: var(--accent-warm-soft); border-color: rgba(255, 138, 30, .35); color: var(--accent-warm-hover); }
.hero-badge.badge-purple { background: rgba(147, 51, 234, .10); border-color: rgba(147, 51, 234, .28); color: #9333ea; }
.hero-badge.badge-blue .dot { background: #1b5fac; }
.hero-badge.badge-green .dot { background: #16a34a; }
.hero-badge.badge-orange .dot { background: var(--accent-warm-hover); }
.hero-badge.badge-purple .dot { background: #9333ea; }
.hero-cta { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 1.75rem; }
.hero-cta .btn { padding: .7rem 1.4rem; }
.hero-proof {
display: flex; flex-wrap: wrap;
gap: 8px;
margin-top: 1.75rem;
font-size: .85rem;
}
.hero-proof-item {
display: inline-flex; align-items: center; gap: 6px;
padding: 5px 10px;
border-radius: var(--radius-xs);
border: 1px solid var(--border);
background: transparent;
color: var(--text-muted);
font-size: .8rem;
}
.hero-proof-item i { color: var(--success); }
.home-hero-navy .hero-proof-item {
border-color: var(--navy-border);
background: var(--navy-overlay);
color: var(--on-navy-muted);
}
.home-hero-navy .hero-proof-item i { color: var(--accent-warm); }
.hero-metrics { display: flex; flex-wrap: wrap; gap: 16px; margin-top: 1.75rem; }
.hero-metric {
min-width: 140px;
padding: 14px 16px;
border-radius: var(--radius-md);
background: transparent;
border: 1px solid var(--border);
}
.hero-metric h4 { font-size: 1.05rem; margin-bottom: 2px; }
.hero-metric p { margin: 0; font-size: .8rem; color: var(--text-muted); }
.home-hero-visual { position: relative; }
.hero-image-frame {
position: relative;
border-radius: var(--radius-lg);
padding: 0;
background: transparent;
box-shadow: none;
overflow: hidden;
border: 1px solid var(--border);
}
.hero-image-frame::before { content: none; }
.hero-image-frame img {
position: relative; z-index: 1;
border-radius: var(--radius-lg);
width: 100%;
display: block;
}
.hero-orbit { display: none !important; }
.home-hero-navy {
position: relative;
overflow: hidden;
margin-top: -72px;
background: radial-gradient(1100px 520px at 85% -10%, var(--navy-3), transparent 60%),
radial-gradient(900px 460px at 8% 110%, var(--navy-2), transparent 55%),
var(--navy);
color: var(--on-navy);
}
.home-hero-navy::after {
content: "";
position: absolute;
left: 0; right: 0; bottom: 0;
height: 130px;
background: linear-gradient(to bottom, transparent, var(--bg));
pointer-events: none;
z-index: 1;
}
.home-hero-navy > .container { position: relative; z-index: 2; }
.hero-blob {
position: absolute;
border-radius: 50%;
filter: blur(70px);
opacity: .35;
pointer-events: none;
z-index: 0;
}
.hero-blob-orange { width: 320px; height: 320px; top: -60px; right: 8%; background: var(--accent-warm); }
.hero-blob-blue { width: 260px; height: 260px; bottom: -40px; left: 4%; background: #2563eb; }
.hero-blob-purple { width: 220px; height: 220px; top: 40%; right: 28%; background: #9333ea; opacity: .22; }
@media (max-width: 767px) {
.hero-blob { display: none; }
}
.home-hero-navy .banner-text h1,
.home-hero-navy .banner-text p { color: var(--on-navy); }
.home-hero-navy .banner-text h1 span { color: var(--accent-warm); }
.home-hero-navy .banner-text p { color: var(--on-navy-muted); }
.hero-badge-navy {
display: inline-flex; align-items: center; gap: 8px;
padding: 6px 12px;
border-radius: 999px;
background: var(--navy-overlay-hover);
border: 1px solid var(--navy-border);
font-size: .72rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--on-navy-muted);
}
.hero-badge-navy .dot { width: 6px; height: 6px; border-radius: 50%; background: var(--accent-warm); }
.btn-hero-warm {
background: var(--accent-warm);
border-color: var(--accent-warm);
color: #1a0f00 !important;
}
.btn-hero-warm:hover, .btn-hero-warm:focus { background: var(--accent-warm-hover); border-color: var(--accent-warm-hover); color: #1a0f00 !important; }
.btn-hero-ghost {
background: var(--navy-overlay);
border-color: var(--navy-border);
color: var(--on-navy) !important;
}
.btn-hero-ghost:hover { background: var(--navy-overlay-hover); border-color: var(--navy-border); }
.hero-stats-row {
display: flex; flex-wrap: wrap;
gap: 12px;
margin-top: 2.25rem;
}
.hero-stat-chip {
display: flex; flex-direction: column;
min-width: 130px;
padding: 12px 16px;
border-radius: var(--radius-md);
background: var(--navy-overlay);
border: 1px solid var(--navy-border);
}
.hero-stat-chip strong { font-size: 1.3rem; font-weight: 800; color: var(--on-navy); letter-spacing: -0.02em; }
.hero-stat-chip span { font-size: .78rem; color: var(--on-navy-muted); }
@media (max-width: 575.98px) {
.hero-stats-row { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.hero-stat-chip { min-width: 0; padding: 10px 8px; text-align: center; }
.hero-stat-chip strong { font-size: 1.1rem; }
.hero-stat-chip span { font-size: .68rem; line-height: 1.25; }
}
.hero-image-frame-navy {
position: relative;
border-radius: var(--radius-xl);
overflow: hidden;
border: 1px solid var(--navy-border);
background: var(--navy-overlay);
box-shadow: 0 30px 60px -20px rgba(0, 0, 0, 0.3);
}
.hero-image-frame-navy img { position: relative; z-index: 1; width: 100%; display: block; }
.hero-float-card {
position: absolute;
left: 14px; bottom: 14px;
z-index: 2;
display: flex; align-items: center; gap: 12px;
padding: 14px 18px;
border-radius: var(--radius-lg);
background: var(--bg);
color: var(--text);
border: 1px solid var(--border);
box-shadow: 0 18px 36px -12px rgba(0, 0, 0, 0.35);
max-width: 220px;
}
.hero-float-card i {
display: inline-flex; align-items: center; justify-content: center;
width: 38px; height: 38px;
border-radius: var(--radius-sm);
background: var(--accent-warm-soft);
color: var(--accent-warm-hover);
font-size: 1.05rem;
flex-shrink: 0;
}
.hero-float-card strong { display: block; font-size: .9rem; color: var(--heading); }
.hero-float-card span { font-size: .78rem; color: var(--text-muted); }
@media (max-width: 991px) {
.hero-float-card { position: static; margin-top: 14px; max-width: none; }
}
.home-section {
padding: 4rem 0;
border-bottom: 1px solid var(--border);
position: relative;
}
.home-section:last-of-type { border-bottom: 0; }
.home-landing .home-section,
.jasa-page .home-section { border-bottom: 0; }
.home-section.home-services { background: linear-gradient(180deg, rgba(27, 95, 172, .06), transparent 55%); }
.home-section.product { background: linear-gradient(180deg, rgba(22, 163, 74, .06), transparent 55%); }
.home-section.article { background: linear-gradient(180deg, rgba(147, 51, 234, .05), transparent 45%); }
.home-section.article.magazine-page { --mag-accent: #9333ea; }
.home-section-head {
display: flex; align-items: flex-end; justify-content: space-between;
gap: 20px;
margin-bottom: 2.5rem;
}
.home-section-head h2 {
font-size: clamp(1.6rem, 2.4vw, 2.15rem);
margin-bottom: 6px;
}
.home-section-head p { margin: 0; color: var(--text-muted); }
.home-services-grid {
display: grid;
grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
gap: 18px;
}
.home-service-card {
padding: 28px 24px;
border-radius: var(--radius-lg);
background: var(--bg);
border: 1px solid var(--border);
box-shadow: var(--shadow-sm);
text-align: left;
height: 100%;
position: relative;
transition: transform .2s var(--ease), box-shadow .2s var(--ease), border-color .2s var(--ease);
}
.home-service-card::before { content: none; }
.home-service-card:hover {
transform: translateY(-4px);
border-color: var(--card-accent, var(--accent));
box-shadow: 0 16px 30px -18px var(--card-accent-shadow, rgba(27, 95, 172, .35));
}
.home-service-card:nth-child(4n+1) { --card-accent: #1b5fac; --card-accent-shadow: rgba(27, 95, 172, .35); }
.home-service-card:nth-child(4n+2) { --card-accent: #16a34a; --card-accent-shadow: rgba(22, 163, 74, .35); }
.home-service-card:nth-child(4n+3) { --card-accent: var(--accent-warm); --card-accent-shadow: rgba(255, 138, 30, .35); }
.home-service-card:nth-child(4n+4) { --card-accent: #9333ea; --card-accent-shadow: rgba(147, 51, 234, .35); }
.home-service-card i {
display: inline-flex;
align-items: center; justify-content: center;
width: 48px; height: 48px;
border-radius: var(--radius-lg);
background: var(--bg-soft);
margin-bottom: 14px;
font-size: 1.2rem !important;
color: var(--accent);
}
.home-service-card i.fa-3x, .home-service-card i.fa-2x { font-size: 1.2rem !important; }
.home-service-card h4 { font-size: 1.05rem; margin-bottom: 8px; color: var(--heading); font-weight: 600; }
.home-service-card p { color: var(--text-muted); font-size: .9rem; margin: 0; }
.home-service-card:nth-child(4n+1) i { background: rgba(27, 95, 172, .12); color: #1b5fac; }
.home-service-card:nth-child(4n+2) i { background: rgba(22, 163, 74, .12); color: #16a34a; }
.home-service-card:nth-child(4n+3) i { background: var(--accent-warm-soft); color: var(--accent-warm-hover); }
.home-service-card:nth-child(4n+4) i { background: rgba(147, 51, 234, .12); color: #9333ea; }
.home-section-split { display: grid; gap: 24px; }
.cta-band {
display: flex; flex-wrap: wrap;
align-items: center; justify-content: space-between;
gap: 20px;
padding: 28px 32px;
border-radius: var(--radius-lg);
border: 1px solid var(--border);
background: linear-gradient(135deg, var(--accent-soft), var(--bg-subtle));
}
.cta-band::before { content: none; }
.cta-band-content { display: flex; align-items: center; gap: 18px; }
.cta-band-icon {
display: flex; align-items: center; justify-content: center;
flex-shrink: 0;
width: 48px; height: 48px;
border-radius: var(--radius-md);
background: var(--accent);
color: #fff;
font-size: 1.15rem;
}
.cta-band h4 { margin-bottom: 4px; color: var(--heading); font-size: 1.15rem; font-weight: 700; }
.cta-band p { margin: 0; color: var(--text-muted); font-size: .9rem; }
.cta-band-vivid {
border: 0;
background: linear-gradient(120deg, var(--navy) 0%, var(--navy-2) 55%, var(--navy-warm-end) 100%);
position: relative;
overflow: hidden;
}
.cta-band-vivid::after {
content: "";
position: absolute; inset: 0;
background: radial-gradient(420px 220px at 88% 0%, rgba(255, 138, 30, .25), transparent 65%);
pointer-events: none;
}
.cta-band-vivid h4, .cta-band-vivid p { color: var(--on-navy); position: relative; }
.cta-band-vivid p { color: var(--on-navy-muted); }
.cta-band-vivid .cta-band-icon { background: var(--accent-warm); color: #1a0f00; position: relative; }
.cta-band-vivid .btn { position: relative; }
.home-section-head-link {
display: inline-flex;
align-items: center;
flex-shrink: 0;
color: var(--accent);
font-size: .85rem;
font-weight: 700;
white-space: nowrap;
}
.home-section-head-link:hover { text-decoration: underline; }
.service-hero { padding: 4rem 0 2rem; }
.service-title {
font-family: var(--font-display);
font-size: clamp(2rem, 2.8vw, 2.75rem);
letter-spacing: -0.03em;
font-weight: 800;
}
.service-hero-media { border-radius: var(--radius-lg); overflow: hidden; border: 1px solid var(--border); }
.service-offer-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 1px;
background: var(--border);
border: 1px solid var(--border);
border-radius: var(--radius-md);
overflow: hidden;
}
@media (max-width: 991px) { .service-offer-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 575px) { .service-offer-grid { grid-template-columns: 1fr; } }
.service-split { padding-top: 3rem; }
.service-steps { padding-top: 3rem; }
.service-step {
padding: 18px 22px;
border-radius: var(--radius-md);
border: 1px solid var(--border);
background: transparent;
position: relative;
transition: background .15s var(--ease);
}
.service-step:hover { background: var(--bg-subtle); transform: none; }
.service-step + .service-step { margin-top: 12px; }
.service-step h5 {
font-size: .95rem;
margin-bottom: 4px;
color: var(--heading);
background: none;
-webkit-text-fill-color: initial;
}
.service-step p { margin: 0; color: var(--text-muted); font-size: .9rem; }
.tech-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 16px;
}
.tech-grid .col {
border: 1px solid var(--border);
border-radius: var(--radius-xl);
padding: 24px 16px;
background: var(--bg);
box-shadow: var(--shadow-sm);
transition: transform .2s var(--ease), box-shadow .2s var(--ease), border-color .2s var(--ease);
text-align: center;
}
.tech-grid .col:hover {
transform: translateY(-4px);
border-color: var(--tech-accent, var(--accent));
box-shadow: 0 16px 30px -18px var(--tech-accent-shadow, rgba(27, 95, 172, .35));
}
.tech-grid .col .fw-bold { color: var(--heading); font-size: .9rem; }
.tech-grid .col small { color: var(--text-muted) !important; font-size: .75rem; }
.tech-grid .col i {
display: inline-flex; align-items: center; justify-content: center;
width: 56px; height: 56px;
border-radius: var(--radius-lg);
font-size: 1.4rem !important;
margin-bottom: 12px;
}
.tech-grid .col:nth-child(4n+1) i { background: rgba(27, 95, 172, .12); color: #1b5fac; }
.tech-grid .col:nth-child(4n+2) i { background: rgba(22, 163, 74, .12); color: #16a34a; }
.tech-grid .col:nth-child(4n+3) i { background: var(--accent-warm-soft); color: var(--accent-warm-hover); }
.tech-grid .col:nth-child(4n+4) i { background: rgba(147, 51, 234, .12); color: #9333ea; }
.tech-grid .col:nth-child(4n+1) { --tech-accent: #1b5fac; --tech-accent-shadow: rgba(27, 95, 172, .35); }
.tech-grid .col:nth-child(4n+2) { --tech-accent: #16a34a; --tech-accent-shadow: rgba(22, 163, 74, .35); }
.tech-grid .col:nth-child(4n+3) { --tech-accent: var(--accent-warm); --tech-accent-shadow: rgba(255, 138, 30, .35); }
.tech-grid .col:nth-child(4n+4) { --tech-accent: #9333ea; --tech-accent-shadow: rgba(147, 51, 234, .35); }
@media (max-width: 991px) { .tech-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 767px) { .tech-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 420px) { .tech-grid { grid-template-columns: 1fr; } }
.cta-panel {
padding: 3rem 2.5rem;
border-radius: var(--radius-lg);
background: var(--btn-neutral);
color: #fff;
border: 1px solid var(--btn-neutral);
position: relative;
overflow: hidden;
text-align: center;
}
.cta-panel::before { content: none; }
.cta-panel h2, .cta-panel p, .cta-panel .lead { color: #fff; }
.cta-panel .btn-hero-primary { background: #fff; color: var(--btn-neutral); border-color: #fff; }
.cta-panel .btn-hero-primary:hover { background: #f4f4f5; color: var(--btn-neutral); border-color: #f4f4f5; }
.page-hero { padding: 2.5rem 0 1.5rem; }
.page-hero h1, .page-hero h2, .page-hero h3 {
font-family: var(--font-display);
letter-spacing: -0.025em;
margin-top: 12px;
color: var(--heading);
}
.page-hero p { margin: 0; color: var(--text-muted); }
.content-panel, .card {
border-radius: var(--radius-md);
border: 1px solid var(--border);
background: transparent;
box-shadow: none;
}
.content-panel .card-header, .card .card-header {
background: transparent;
border-bottom: 1px solid var(--border);
padding: 1rem 1.25rem;
}
.content-panel .card-footer, .card .card-footer {
background: transparent;
border-top: 1px solid var(--border);
padding: 1rem 1.25rem;
}
.card-body { padding: 1.25rem; }
.content-panel.media-card { transition: background .15s var(--ease); }
.content-panel.media-card:hover { background: var(--bg-subtle); transform: none; }
.media-card .card-body { padding: 1.25rem; }
.media-card .card-footer { padding: .75rem 1.25rem 1.25rem; border-top: 0; }
.soft-badge {
display: inline-flex; align-items: center; gap: 6px;
padding: 4px 10px;
border-radius: var(--radius-xs);
border: 1px solid var(--border);
background: transparent;
color: var(--text-muted);
text-decoration: none;
font-size: .75rem;
}
.table-surface { border-radius: var(--radius-md); overflow: hidden; border: 1px solid var(--border); }
.table-surface .table { margin: 0; color: var(--text); }
.table-surface .table thead th {
border-bottom: 1px solid var(--border);
color: var(--text-muted);
font-weight: 600;
font-size: .78rem;
text-transform: uppercase;
letter-spacing: 0.06em;
background: var(--bg-subtle);
}
.table-surface .table tbody tr { transition: background .1s var(--ease); border-bottom: 1px solid var(--border-soft); }
.table-surface .table tbody tr:hover { background: var(--bg-subtle); }
.table-surface .table tbody tr:last-child { border-bottom: 0; }
.table { color: var(--text); }
.table th, .table td { vertical-align: middle; border-color: var(--border-soft); padding: .75rem .85rem; }
.table thead th {
color: var(--text-muted);
font-weight: 600;
font-size: .78rem;
text-transform: uppercase;
letter-spacing: 0.06em;
border-bottom: 1px solid var(--border);
}
.table-striped > tbody > tr:nth-of-type(odd) > * {
background-color: var(--bg-subtle) !important;
color: var(--text);
}
.news-card {
display: flex; gap: 18px;
padding: 1.25rem;
align-items: flex-start;
border-bottom: 1px solid var(--border);
}
.news-card:last-child { border-bottom: 0; }
.news-card .news-thumb { flex: 0 0 200px; }
.news-card .news-thumb img {
width: 100%; height: 140px;
object-fit: cover;
border-radius: var(--radius-sm);
border: 1px solid var(--border);
}
.news-card .news-content { flex: 1; min-width: 0; }
.news-card .news-title {
font-size: 1.1rem;
font-weight: 600;
line-height: 1.4;
display: inline-block;
color: var(--heading);
}
.news-card .news-title:hover { color: var(--accent); }
.news-card .news-meta {
display: flex; flex-wrap: wrap; align-items: center;
gap: 10px 14px;
font-size: .82rem;
color: var(--text-muted);
margin-top: 8px;
}
.news-card .news-meta a, .news-card .news-meta span {
display: inline-flex; align-items: center; gap: 5px; line-height: 1;
}
.news-card .news-meta .avatar-article { width: 28px; height: 28px; }
.news-featured { overflow: hidden; }
.news-featured-plain { border: 0; border-radius: 0; background: transparent; box-shadow: none; }
.news-featured-thumb { display: block; height: 100%; }
.news-featured-thumb img {
width: 100%; height: 100%;
min-height: 280px;
object-fit: cover;
border-radius: var(--radius-md);
border: 1px solid var(--border);
}
.news-featured-body { padding: 1.5rem 0; }
.news-featured-body h3 { margin: 10px 0 12px; }
.news-category-grid { display: grid; gap: 24px; }
.news-category-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.news-category-head h4 { margin: 0; }
.news-list { display: grid; gap: 14px; }
.news-list-item {
display: grid;
grid-template-columns: 110px 1fr;
gap: 14px;
padding-bottom: 14px;
border-bottom: 1px solid var(--border-soft);
}
.news-list-thumb img {
width: 100%; height: 80px;
object-fit: cover;
border-radius: var(--radius-sm);
border: 1px solid var(--border);
}
.news-list-body .news-meta { margin-top: 6px; }
.news-list-plain {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
gap: 20px;
}
.news-list-item-plain {
display: grid;
grid-template-columns: 200px 1fr;
gap: 16px;
padding: 16px;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: transparent;
transition: background .15s var(--ease);
}
.news-list-item-plain:hover { background: var(--bg-subtle); transform: none; box-shadow: none; }
.news-list-item-plain .news-list-thumb img {
width: 100%; height: 130px;
object-fit: cover;
border-radius: var(--radius-sm);
}
.news-list-item-plain .news-meta {
display: flex; align-items: center; justify-content: space-between;
gap: 10px; flex-wrap: wrap;
margin-top: 8px;
}
.news-list-item-plain .news-meta a, .news-list-item-plain .news-meta span {
display: inline-flex; align-items: center; gap: 5px;
}
@media (max-width: 767px) {
.news-list-plain { grid-template-columns: 1fr; }
.news-list-item-plain { grid-template-columns: 1fr; }
.news-list-item-plain .news-list-thumb img { height: 200px; }
}
.content-article {
font-size: 1rem;
line-height: 1.75;
color: var(--text);
}
.content-article p { margin-bottom: 1rem; }
.content-article h2, .content-article h3, .content-article h4 { margin-top: 2rem; }
.content-article img { max-width: 100%; height: auto; border-radius: var(--radius-md); border: 1px solid var(--border); }
.content-article pre {
padding: 1.1rem 1.25rem !important;
margin: 1em 0 !important;
border-radius: var(--radius-md) !important;
background: #0b1220 !important;
color: #e6edf6 !important;
border: 1px solid rgba(255, 255, 255, .08);
overflow-x: auto !important;
font-family: var(--font-mono) !important;
font-weight: 400 !important;
font-size: .85rem !important;
line-height: 1.6 !important;
max-height: none !important;
white-space: pre !important;
}
.content-article code {
font-family: var(--font-mono);
font-weight: 400;
font-size: .85rem;
background: var(--bg-soft);
padding: .1rem .35rem;
border-radius: var(--radius-xs);
color: var(--text);
}
.content-article pre code,
.content-article pre code[class*="language-"] {
background: transparent !important;
padding: 0 !important;
margin: 0 !important;
border-radius: 0 !important;
font-size: inherit !important;
line-height: inherit !important;
max-height: none !important;
overflow: visible !important;
color: inherit;
}
.news-pagination .pagination, .pagination { gap: 4px; }
.news-pagination .page-link, .pagination .page-link {
border-radius: var(--radius-sm);
border: 1px solid var(--border);
background: transparent;
color: var(--text);
padding: .4rem .8rem;
font-size: .85rem;
transition: background .15s var(--ease);
}
.news-pagination .page-link:hover, .pagination .page-link:hover {
background: var(--bg-soft);
transform: none;
}
.news-pagination .page-item.active .page-link, .pagination .page-item.active .page-link {
background: var(--accent);
border-color: var(--accent);
color: #fff;
}
.plain-article { margin-bottom: 1.5rem; }
.plain-article img { border-radius: var(--radius-md); border: 1px solid var(--border); }
.plain-article .plain-meta {
display: flex; flex-wrap: wrap; align-items: center;
gap: 8px 14px;
font-size: .85rem;
color: var(--text-muted);
margin-top: 8px;
}
.plain-article .plain-meta a, .plain-article .plain-meta span {
display: inline-flex; align-items: center; gap: 5px; line-height: 1;
}
.plain-product img { border-radius: var(--radius-lg); border: 1px solid var(--border); }
.plain-product-border, .plain-product-card, .product-card-border {
padding: 1rem;
border-radius: var(--radius-lg);
border: 1px solid var(--border);
background: var(--bg);
box-shadow: var(--shadow-sm);
transition: transform .2s var(--ease), box-shadow .2s var(--ease), border-color .2s var(--ease);
}
.plain-product-border:hover, .plain-product-card:hover, .product-card-border:hover {
background: var(--bg);
transform: translateY(-4px);
border-color: rgba(22, 163, 74, .35);
box-shadow: 0 16px 30px -18px rgba(22, 163, 74, .35);
}
.plain-product-card { padding: 22px 20px; text-align: left; height: 100%; }
.plain-product .plain-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.plain-product .plain-tags .btn-sm { border-radius: 999px; }
.plain-category img { border-radius: var(--radius-md); border: 1px solid var(--border); }
.plain-category { padding-bottom: 1.5rem; }
.meta-line {
display: flex; flex-wrap: wrap;
gap: 10px 16px;
align-items: center;
font-size: .88rem;
color: var(--text-muted);
}
.meta-line a { color: inherit; }
.meta-line a:hover { color: var(--accent); }
.tag-chip {
display: inline-flex; align-items: center; gap: 5px;
padding: 3px 8px;
border-radius: var(--radius-xs);
border: 1px solid var(--border);
background: transparent;
color: var(--text-muted);
text-decoration: none;
font-size: .68rem;
font-family: var(--font-mono);
margin: 0 4px 4px 0;
transition: background .15s var(--ease), color .15s var(--ease);
}
.article-tags .tag-chip {
font-size: .68rem;
padding: 3px 8px;
}
.tag-chip:hover {
color: var(--accent);
background: var(--bg-soft);
border-color: var(--accent);
}
.read-layout { padding-bottom: 2rem; }
.read-title {
font-family: var(--font-display);
font-size: clamp(1.7rem, 2.6vw, 2.25rem);
line-height: 1.2;
color: var(--heading);
}
.product-detail-title {
font-family: var(--font-display);
font-size: clamp(1.8rem, 2.8vw, 2.4rem);
color: var(--heading);
}
.product-gallery {
border-radius: var(--radius-md);
overflow: hidden;
border: 1px solid var(--border);
background: transparent;
padding: 1rem;
}
.product-tabs .nav-link { border-radius: var(--radius-sm); }
.profile-hero { padding: 1.5rem 0 1rem; }
.profile-avatar {
width: 130px; height: 130px;
border-radius: 50%;
border: 1px solid var(--border);
object-fit: cover;
box-shadow: none;
}
.profile-meta { color: var(--text-muted); }
#profile {
padding: 1.75rem;
border-radius: var(--radius-md);
background: transparent;
border: 1px solid var(--border);
box-shadow: none;
}
.form-card { margin-top: 1rem; }
.read-sidebar .content-panel { position: sticky; top: 90px; background: transparent; }
.read-plain { padding: .5rem 0 2rem; }
.read-plain-border {
padding: 1.75rem;
border-radius: var(--radius-md);
border: 1px solid var(--border);
background: transparent;
box-shadow: none;
}
.read-divider {
height: 1px;
background: var(--border);
margin: 2rem 0;
}
.read-panel {
padding: 1.25rem 1.4rem;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: transparent;
}
.read-sidebar-stack { display: flex; flex-direction: column; gap: 1rem; }
.read-panel h5 {
font-size: .82rem;
margin-bottom: .9rem;
color: var(--text-muted);
text-transform: uppercase;
letter-spacing: 0.08em;
font-weight: 600;
}
.read-panel .text-judul {
display: inline-flex; align-items: center; gap: 6px;
}
.read-panel .mini-product-price {
margin-top: .3rem;
color: var(--accent);
font-size: .78rem;
font-weight: 700;
}
.read-panel .text-sm {
font-size: .68rem !important;
line-height: 1.35;
white-space: nowrap;
}
.read-panel .text-sm i {
font-size: .64rem;
}
.tracking-pixel {
position: absolute;
width: 1px;
height: 1px;
border: 0;
opacity: 0;
pointer-events: none;
}
.nav-pills { gap: 4px; }
.nav-pills .nav-link {
color: var(--text-muted);
border-radius: var(--radius-sm);
padding: .45rem .9rem;
background: transparent;
border: 1px solid transparent;
font-size: .82rem;
font-weight: 600;
transition: background .15s var(--ease), color .15s var(--ease);
}
.nav-pills .nav-link:hover { background: var(--bg-soft); color: var(--text); }
.nav-pills .nav-link.active {
background: var(--accent);
color: #fff;
border-color: var(--accent);
}
.avatar-article {
border-radius: 50% !important;
width: 40px; height: 40px;
margin-right: 8px;
border: 1px solid var(--border);
}
.card-services {
border-radius: var(--radius-md);
border: 1px solid var(--border);
background: transparent;
color: var(--text);
}
a.text-judul {
color: var(--text);
font-weight: 600;
text-decoration: none;
transition: color .15s var(--ease);
}
a.text-judul:hover { color: var(--accent); text-decoration: none; }
.text-prg { color: var(--text); font-weight: 600; text-decoration: none; }
.text-success { color: var(--success) !important; }
.text-purple { color: #8b5cf6 !important; }
.benefit { padding: 3rem 0; }
.feature {
padding: 2rem 0;
font-size: 1rem;
}
.feature h4 { padding-top: 14px; font-size: 1.1rem; }
.modal { z-index: 1080; }
.modal-backdrop { z-index: 1070; background: #000; }
.modal-backdrop.show { opacity: .55; }
.swal2-container { z-index: 1090 !important; }
.swal2-container:not(.swal2-backdrop-show):not(.swal2-noanimation) {
width: 360px !important;
max-width: 100% !important;
background-color: transparent !important;
pointer-events: none !important;
}
.swal2-container:not(.swal2-backdrop-show):not(.swal2-noanimation) .swal2-popup {
pointer-events: all !important;
}
.modal-dialog { pointer-events: none; }
.modal-content {
pointer-events: auto;
border-radius: var(--radius-lg);
border: 1px solid var(--border);
background: var(--bg);
color: var(--text);
box-shadow: var(--shadow-md);
}
.modal-header, .modal-footer { border-color: var(--border); padding: 1rem 1.25rem; }
.modal-body { padding: 1.25rem; }
.modal-title { color: var(--heading); font-weight: 600; }
.btn-close { filter: invert(0); opacity: .65; }
.btn-close:hover { opacity: 1; }
[data-bs-theme=dark] .btn-close { filter: invert(1); }
.modal-right .modal-dialog {
margin: 0 0 0 auto;
width: 360px;
max-width: 100%;
height: 100vh;
display: flex;
align-items: stretch;
}
.modal-right .modal-content {
width: 100%;
height: 100%;
border-radius: 0;
border: 0;
border-left: 1px solid var(--border);
}
.modal-content-scrollable { height: 100%; overflow-y: auto; }
.list-group-item {
background: transparent;
border-color: var(--border);
color: var(--text);
border-radius: var(--radius-sm) !important;
margin-bottom: 2px;
padding: .65rem .85rem;
font-size: .9rem;
transition: background .15s var(--ease);
}
.list-group-item:hover { background: var(--bg-soft); transform: none; }
.list-group-item.active {
background: var(--accent);
color: #fff;
border-color: var(--accent);
}
.alert {
border-radius: var(--radius-sm);
border: 1px solid var(--border);
background: var(--bg-subtle);
padding: .85rem 1rem;
font-size: .9rem;
}
.alert-warning { background: #fffbeb; border-color: #fde68a; color: #78350f; }
.alert-success { background: #f0fdf4; border-color: #bbf7d0; color: #14532d; }
.alert-danger { background: #fef2f2; border-color: #fecaca; color: #7f1d1d; }
[data-bs-theme=dark] .alert-warning { background: #1c1505; border-color: #422006; color: #fcd34d; }
[data-bs-theme=dark] .alert-success { background: #052e16; border-color: #14532d; color: #86efac; }
[data-bs-theme=dark] .alert-danger { background: #2a0e0e; border-color: #7f1d1d; color: #fca5a5; }
.footer-cta-strip {
margin-top: 4rem;
padding: 36px 0;
background: linear-gradient(120deg, var(--navy) 0%, var(--navy-2) 60%, var(--navy-warm-end) 100%);
position: relative;
overflow: hidden;
}
.footer-cta-strip::before {
content: "";
position: absolute;
left: 0; right: 0; top: 0;
height: 80px;
background: linear-gradient(to bottom, var(--bg), transparent);
pointer-events: none;
}
.footer-cta-strip::after {
content: "";
position: absolute; inset: 0;
background: radial-gradient(480px 240px at 15% 20%, rgba(255, 138, 30, .18), transparent 65%);
pointer-events: none;
}
.footer-cta-strip .footer-cta-inner {
position: relative;
display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between;
gap: 18px;
}
.footer-cta-strip h4 { margin: 0 0 4px; color: var(--on-navy); font-size: 1.2rem; font-weight: 700; }
.footer-cta-strip p { margin: 0; color: var(--on-navy-muted); font-size: .9rem; }
.footer {
width: 100%;
padding: 3.5rem 0 1.5rem;
background: var(--navy);
color: var(--on-navy-muted);
}
.footer h4 {
padding-bottom: 0;
font-size: .78rem;
margin: 0 0 1rem;
position: relative;
text-transform: uppercase;
letter-spacing: 0.1em;
color: var(--on-navy);
font-weight: 700;
}
.footer h4::after { content: none; }
.footer p, .footer a, .footer ul li a {
color: var(--on-navy-muted);
font-size: .9rem;
}
.footer a:hover { color: var(--accent-warm); }
.footer ul { margin: 0; padding: 0; list-style: none; }
.footer ul li { font-size: .9rem; padding-bottom: 8px; list-style: none; }
.footer ul li:last-child { border: 0; }
.footer ul li a { display: inline-flex; align-items: center; gap: 6px; }
.footer .footer-col { margin-bottom: 1.75rem; }
.footer .footer-bottom {
margin-top: 1.5rem;
padding-top: 1.5rem;
border-top: 1px solid var(--navy-border);
}
.footer .footer-bottom p { color: var(--on-navy-muted); font-weight: 400; font-size: .85rem; margin: 0; }
.footer .footer-brand-title { color: var(--on-navy); font-size: 1.1rem; font-weight: 800; margin-bottom: 10px; }
.footer .footer-social { display: flex; flex-wrap: wrap; gap: 8px; }
.footer .footer-social .btn { padding: .45rem .9rem; font-size: .8rem; }
.footer .badge.bg-warning { color: #1a0f00 !important; }
.copyright { width: 100%; padding: 1rem 0; bottom: 0; left: 0; margin-bottom: -2rem; }
.copyright p { margin: 0; font-weight: 500; }
.cookie-consent {
position: fixed;
bottom: 20px; right: 20px;
background: var(--bg);
color: var(--text);
padding: 14px 18px;
border-radius: var(--radius-md);
box-shadow: var(--shadow-md);
border: 1px solid var(--border);
}
.cookie-consent button { margin-left: 10px; }
.cookie-consent p { margin: 0; }
.icon-sosmed { padding-top: 4rem; }
img.lazy { background: var(--bg-subtle); }
.fade-up {
opacity: 0;
transform: translateY(12px);
animation: fadeUp .5s var(--ease) forwards;
}
@keyframes fadeUp { to { opacity: 1; transform: none; } }
@media (max-width: 991px) {
.page-hero { padding: 1.5rem 0 1rem; }
.read-sidebar .content-panel { position: static; }
.home-hero { padding: 3rem 0 3rem; }
.home-section-head { flex-direction: column; align-items: flex-start; }
.news-featured-body { padding: 1rem 0; }
.news-list-item { grid-template-columns: 1fr; }
.news-list-thumb img { height: 180px; }
.cta-panel { padding: 2rem 1.5rem; }
}
@media (max-width: 767px) {
.news-card { flex-direction: column; padding: 1rem; }
.news-card .news-thumb { width: 100%; flex: 1 1 auto; }
.news-card .news-thumb img { height: 200px; }
.home-section { padding: 3rem 0; }
}
@media (max-width: 575px) {
.banner .banner-text h1 { font-size: clamp(1.7rem, 7vw, 2.1rem); }
.banner .banner-text p { font-size: .95rem; }
.img-banner { margin-top: 1rem; }
.icon-sosmed { display: none; }
.svg-icon-arworks { text-align: center; }
.home-services-grid, .service-offer-grid { grid-template-columns: 1fr; }
.cta-band { flex-direction: column; align-items: flex-start; }
.read-layout { padding-left: .75rem; padding-right: .75rem; }
.read-plain-border { padding: 1.1rem; }
.read-panel { padding: 1rem 1.1rem; }
.content-article .card-body { padding: 1rem; }
}
.home-hero .banner-text h1,
.home-hero .banner-text p,
.home-hero .hero-cta,
.home-hero .hero-proof,
.home-hero .hero-badge,
.home-hero-visual .hero-image-frame {
animation: heroFadeUp .5s var(--ease) both;
}
.home-hero .banner-text p { animation-delay: .08s; }
.home-hero .hero-cta { animation-delay: .14s; }
.home-hero .hero-proof { animation-delay: .2s; }
@keyframes heroFadeUp {
from { opacity: 0; transform: translateY(8px); }
to { opacity: 1; transform: none; }
}
.home-hero-visual .hero-image-frame {
transition: transform .25s var(--ease);
}
.home-hero-visual:hover .hero-image-frame {
transform: translateY(-4px);
}
.article-hero { padding: 2rem 0 1.25rem; }
.article-hero .read-title { margin-bottom: 1.25rem; }
.article-byline {
display: flex;
align-items: center;
gap: 14px;
padding-top: .25rem;
}
.article-byline-avatar {
flex: 0 0 auto;
width: 52px; height: 52px;
border-radius: 50%;
overflow: hidden;
border: 1px solid var(--border);
background: var(--bg-soft);
transition: transform .25s var(--ease);
display: inline-block;
}
.article-byline-avatar:hover { transform: scale(1.05); }
.article-byline-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.article-byline-meta { display: flex; flex-direction: column; gap: 2px; }
.article-byline-name {
color: var(--heading) !important;
font-weight: 600;
font-size: 1rem;
text-decoration: none;
}
.article-byline-name:hover { color: var(--accent) !important; }
.article-byline-sub {
display: flex;
flex-wrap: wrap;
gap: 6px 10px;
color: var(--text-muted);
font-size: .85rem;
}
.article-byline-sub i { margin-right: 4px; }
.dot-sep { opacity: .55; }
.article-body { padding: 1.75rem !important; }
.article-cover {
margin: 0 0 1.5rem;
border-radius: var(--radius-md);
overflow: hidden;
border: 1px solid var(--border);
background: var(--bg-soft);
aspect-ratio: 16 / 9;
}
.article-cover img {
width: 100%; height: 100%;
object-fit: cover;
display: block;
}
.article-tags {
display: flex; flex-wrap: wrap;
gap: 6px;
}
.article-author-card {
display: flex;
gap: 18px;
align-items: flex-start;
margin: 2.5rem 0 .5rem;
padding: 1.25rem 1.5rem;
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--bg-subtle);
}
.article-author-avatar {
flex: 0 0 auto;
width: 72px; height: 72px;
border-radius: 50%;
overflow: hidden;
border: 1px solid var(--border);
background: var(--bg-soft);
display: inline-block;
transition: transform .25s var(--ease);
}
.article-author-avatar:hover { transform: scale(1.04); }
.article-author-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.article-author-body {
flex: 1;
min-width: 0;
color: var(--text) !important;
}
.article-author-eyebrow {
display: block;
text-transform: uppercase;
letter-spacing: .12em;
font-size: .72rem;
color: var(--text-muted) !important;
margin-bottom: 4px;
}
.article-author-name {
font-size: 1.15rem;
margin: 0 0 6px;
color: var(--heading) !important;
}
.article-author-name a { color: var(--heading) !important; text-decoration: none; }
.article-author-name a:hover { color: var(--accent); }
.article-author-bio {
color: var(--text-muted) !important;
font-size: .92rem;
margin: 0 0 12px;
line-height: 1.55;
}
.article-author-actions {
display: flex; flex-wrap: wrap; gap: 8px;
}
@media (max-width: 575px) {
.article-author-card { flex-direction: column; padding: 1.25rem; }
.article-author-avatar { width: 64px; height: 64px; }
}
.author-mini {
display: flex; gap: 14px; align-items: center;
}
.author-mini-avatar {
flex: 0 0 auto;
width: 56px; height: 56px;
border-radius: 50%;
overflow: hidden;
border: 1px solid var(--border);
background: var(--bg-soft);
display: inline-block;
}
.author-mini-avatar img { width: 100%; height: 100%; object-fit: cover; display: block; }
.author-mini-body { flex: 1; min-width: 0; }
.author-mini-name {
display: inline-block;
font-weight: 600;
color: var(--heading);
text-decoration: none;
font-size: .98rem;
margin-top: 2px;
}
.author-mini-name:hover { color: var(--accent); }
.author-mini-bio {
font-size: .82rem;
color: var(--text-muted);
margin: 4px 0 0;
line-height: 1.45;
}
.product-detail .product-detail-title { margin-bottom: .65rem; }
.product-gallery-wrap {
border: 1px solid var(--border);
border-radius: var(--radius-md);
overflow: hidden;
background: var(--bg-subtle);
}
.product-carousel { position: relative; }
.product-carousel .carousel-inner { aspect-ratio: 16 / 10; background: var(--bg-soft); }
.product-slide-link { display: block; width: 100%; height: 100%; }
.product-slide-img {
width: 100% !important;
height: 100% !important;
object-fit: contain;
background: var(--bg-soft);
display: block;
}
.product-carousel-btn {
width: 42px; height: 42px;
background: var(--bg);
border: 1px solid var(--border);
border-radius: 50%;
color: var(--text);
opacity: .92;
top: 50%;
transform: translateY(-50%);
box-shadow: var(--shadow-md);
transition: transform .15s var(--ease), background .15s var(--ease);
}
.product-carousel-btn:hover { background: var(--bg); transform: translateY(-50%) scale(1.06); }
.product-carousel-btn.carousel-control-prev { left: 14px; }
.product-carousel-btn.carousel-control-next { right: 14px; }
.product-carousel-btn .carousel-control-prev-icon,
.product-carousel-btn .carousel-control-next-icon { display: none; }
.product-carousel-btn i { font-size: .95rem; color: var(--text); }
.product-thumbs {
display: flex; flex-wrap: wrap;
gap: 8px;
padding: 10px;
border-top: 1px solid var(--border);
background: var(--bg);
}
.product-thumb {
width: 64px; height: 64px;
padding: 0;
border: 2px solid var(--border);
border-radius: var(--radius-sm);
overflow: hidden;
background: var(--bg-soft);
cursor: pointer;
transition: border-color .15s var(--ease), transform .15s var(--ease);
}
.product-thumb img {
width: 100%; height: 100%;
object-fit: cover;
display: block;
}
.product-thumb:hover { transform: translateY(-2px); }
.product-thumb.is-active { border-color: var(--accent); }
.product-panel { padding: 1.25rem 1.4rem !important; }
.product-meta-list {
list-style: none;
margin: .5rem 0 0;
padding: 0;
}
.product-meta-list li {
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: .65rem 0;
border-bottom: 1px dashed var(--border);
font-size: .92rem;
}
.product-meta-list li:last-child { border-bottom: 0; }
.product-meta-list li > span { color: var(--text-muted); }
.product-meta-list li > strong { color: var(--text); text-align: right; }
.product-price {
font-size: 1.2rem;
font-weight: 700;
color: var(--accent);
font-family: var(--font-display);
letter-spacing: -0.01em;
}
.product-price-free { color: var(--success); }
.product-price-contact { color: var(--accent); text-decoration: none; }
.product-price-contact:hover { text-decoration: underline; }
.product-action .btn { font-weight: 600; }
.product-carousel .carousel-item.active ~ .carousel-indicators .active,
.product-carousel .carousel-indicators .active { background: var(--accent); }
.jasa-grad-text {
background: linear-gradient(90deg, var(--accent), #16a34a);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
}
.jasa-italic { font-style: italic; font-weight: 600; }
.jasa-hero.home-hero-navy > .container { padding-top: calc(3.5rem + 72px); padding-bottom: 3.5rem; }
@media (max-width: 991px) {
.jasa-hero.home-hero-navy > .container { padding-top: calc(2.5rem + 72px); padding-bottom: 2.5rem; }
}
.jasa-hero-title {
font-size: clamp(2.2rem, 4vw, 3.4rem);
font-weight: 800;
line-height: 1.08;
letter-spacing: -0.035em;
color: var(--heading);
margin-bottom: 1rem;
}
.jasa-hero-lead {
font-size: 1.05rem;
color: var(--text-muted);
max-width: 56ch;
line-height: 1.7;
}
.jasa-terminal {
border-radius: var(--radius-xl);
border: 1px solid rgba(255, 255, 255, .12);
background: #0b1220;
box-shadow: 0 30px 60px -20px rgba(0, 0, 0, .5);
overflow: hidden;
font-family: var(--font-mono);
color: #e6edf6;
}
.jasa-terminal-bar {
display: flex; align-items: center; gap: 6px;
padding: 10px 14px;
background: #0a1020;
border-bottom: 1px solid rgba(255, 255, 255, .06);
}
.jasa-terminal-bar span {
width: 10px; height: 10px; border-radius: 50%;
background: #3a3f4b;
}
.jasa-terminal-bar span:nth-child(1) { background: #ff5f57; }
.jasa-terminal-bar span:nth-child(2) { background: #febc2e; }
.jasa-terminal-bar span:nth-child(3) { background: #28c840; }
.jasa-terminal-title {
margin-left: auto;
font-size: .72rem;
color: rgba(230, 237, 246, .55);
font-family: var(--font-mono);
}
.jasa-terminal-body {
margin: 0;
padding: 1.1rem 1.25rem;
font-size: .82rem;
line-height: 1.65;
background: transparent;
color: #e6edf6;
font-family: var(--font-mono);
}
.jasa-terminal-body code { background: transparent; color: inherit; padding: 0; }
.jasa-terminal {
animation: terminalIn .55s var(--ease) both;
position: relative;
}
.jasa-terminal::before {
content: "";
position: absolute;
inset: -1px;
border-radius: inherit;
pointer-events: none;
background: linear-gradient(135deg, rgba(77, 143, 222, .35), rgba(62, 240, 200, .25));
opacity: .35;
filter: blur(14px);
z-index: -1;
}
@keyframes terminalIn {
from { opacity: 0; transform: translateY(14px); }
to { opacity: 1; transform: none; }
}
.jasa-terminal-body .t-line {
overflow: hidden;
white-space: nowrap;
text-overflow: clip;
opacity: 0;
animation: tLineIn .45s steps(40, end) forwards;
width: 0;
}
.jasa-terminal-body .t-line:nth-child(1) { animation-delay: .35s; }
.jasa-terminal-body .t-line:nth-child(2) { animation-delay: .80s; }
.jasa-terminal-body .t-line:nth-child(3) { animation-delay: 1.10s; }
.jasa-terminal-body .t-line:nth-child(4) { animation-delay: 1.45s; }
.jasa-terminal-body .t-line:nth-child(5) { animation-delay: 1.80s; }
.jasa-terminal-body .t-line:nth-child(6) { animation-delay: 2.15s; }
.jasa-terminal-body .t-line:nth-child(7) { animation-delay: 2.55s; }
.jasa-terminal-body .t-line:nth-child(8) { animation-delay: 3.05s; }
.jasa-terminal-body .t-line:nth-child(9) { animation-delay: 3.45s; }
@keyframes tLineIn {
from { width: 0; opacity: 1; }
to { width: 100%; opacity: 1; }
}
.jasa-terminal-body .t-line-final {
font-weight: 600;
}
.jasa-terminal-body .t-caret {
display: inline-block;
margin-left: 6px;
color: #3ef0c8;
animation: caretBlink 1s steps(2) infinite;
animation-delay: 3.9s;
}
@keyframes caretBlink {
0%, 49% { opacity: 1; }
50%, 100% { opacity: 0; }
}
@media (max-width: 575px) {
.jasa-terminal-body .t-line { white-space: normal; width: auto !important; opacity: 1 !important; animation: none; }
.jasa-terminal-body .t-caret { animation: caretBlink 1s steps(2) infinite; animation-delay: 0s; }
}
.t-prompt { color: #4d8fde; font-weight: 700; }
.t-arg { color: #ffd166; }
.t-flag { color: #c084fc; }
.t-comment { color: #6b7280; }
.t-ok { color: #3ef0c8; font-weight: 700; }
.t-str { color: #fca5a5; }
.t-keyword { color: #8b5cf6; }
.t-fn { color: #4d8fde; }
.t-cls { color: #ffd166; }
.jasa-trust {
padding: 2rem 0;
border-bottom: 1px solid var(--border);
}
.jasa-trust-eyebrow {
display: inline-block;
text-transform: uppercase;
letter-spacing: .14em;
font-size: .72rem;
color: var(--text-muted);
margin-bottom: 1.25rem;
font-family: var(--font-mono);
}
.jasa-marquee {
position: relative;
overflow: hidden;
width: 100%;
mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
-webkit-mask-image: linear-gradient(90deg, transparent 0, #000 8%, #000 92%, transparent 100%);
}
.jasa-marquee-track {
display: flex;
width: max-content;
gap: 0;
animation: jasaMarquee 38s linear infinite;
will-change: transform;
}
.jasa-marquee:hover .jasa-marquee-track { animation-play-state: paused; }
.jasa-marquee-group {
display: flex;
align-items: center;
gap: 0;
padding-right: 0;
flex-shrink: 0;
}
.jasa-marquee-item {
display: inline-flex;
align-items: center;
gap: 10px;
margin: 0 8px;
padding: 10px 20px 10px 10px;
border-radius: 999px;
border: 1px solid var(--border);
background: var(--bg);
box-shadow: var(--shadow-sm);
color: var(--text);
font-size: .92rem;
font-weight: 600;
letter-spacing: 0.01em;
white-space: nowrap;
transition: color .15s var(--ease), border-color .15s var(--ease), transform .15s var(--ease);
}
.jasa-marquee-item:hover { color: var(--heading); border-color: var(--accent); transform: translateY(-2px); }
.jasa-marquee-item i {
display: inline-flex; align-items: center; justify-content: center;
width: 32px; height: 32px;
border-radius: 50%;
background: var(--accent-warm-soft);
color: var(--accent-warm-hover);
font-size: .95rem;
flex-shrink: 0;
}
.jasa-marquee-dot { display: none; }
@keyframes jasaMarquee {
from { transform: translateX(0); }
to { transform: translateX(-50%); }
}
@media (prefers-reduced-motion: reduce) {
.jasa-marquee-track { animation: none; }
}
.jasa-product-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 18px;
}
@media (max-width: 991px) { .jasa-product-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 575px) { .jasa-product-grid { grid-template-columns: 1fr; } }
.jasa-product-card {
display: block;
padding: 28px 26px;
border: 1px solid var(--border);
border-radius: var(--radius-xl);
background: var(--bg);
color: var(--text);
text-decoration: none;
position: relative;
overflow: hidden;
transition: border-color .2s var(--ease), transform .2s var(--ease), box-shadow .2s var(--ease);
}
.jasa-product-card::after {
content: "";
position: absolute;
inset: 0;
border-radius: inherit;
pointer-events: none;
background: linear-gradient(135deg, var(--accent), transparent 55%);
opacity: 0;
transition: opacity .25s var(--ease);
}
.jasa-product-card:hover {
border-color: var(--accent);
transform: translateY(-4px);
box-shadow: var(--shadow-md);
color: var(--text);
}
.jasa-product-card:hover::after { opacity: .07; }
.jasa-product-icon {
width: 48px; height: 48px;
display: inline-flex; align-items: center; justify-content: center;
border-radius: var(--radius-lg);
background: var(--accent-soft);
color: var(--accent);
font-size: 1.15rem;
margin-bottom: 16px;
}
.jasa-product-card:nth-child(4n+1) .jasa-product-icon { background: rgba(27, 95, 172, .12); color: #1b5fac; }
.jasa-product-card:nth-child(4n+2) .jasa-product-icon { background: rgba(22, 163, 74, .12); color: #16a34a; }
.jasa-product-card:nth-child(4n+3) .jasa-product-icon { background: var(--accent-warm-soft); color: var(--accent-warm-hover); }
.jasa-product-card:nth-child(4n+4) .jasa-product-icon { background: rgba(147, 51, 234, .12); color: #9333ea; }
.jasa-product-card:nth-child(4n+5) .jasa-product-icon { background: rgba(27, 95, 172, .12); color: #1b5fac; }
.jasa-product-card:nth-child(4n+6) .jasa-product-icon { background: rgba(22, 163, 74, .12); color: #16a34a; }
.jasa-product-card h4 {
color: var(--heading);
margin-bottom: 6px;
font-size: 1.1rem;
font-weight: 700;
}
.jasa-product-card p {
color: var(--text-muted);
font-size: .92rem;
margin: 0 0 14px;
}
.jasa-product-link {
display: inline-flex; align-items: center; gap: 6px;
color: var(--accent);
font-weight: 600;
font-size: .88rem;
transition: gap .15s var(--ease);
}
.jasa-product-card:hover .jasa-product-link { gap: 10px; }
.jasa-bullets {
list-style: none;
padding: 0;
margin: 1rem 0 0;
}
.jasa-bullets li {
display: flex; align-items: center; gap: 10px;
padding: 8px 0;
color: var(--text);
font-size: .95rem;
}
.jasa-bullets li i { color: var(--accent); font-size: 1rem; }
.jasa-codeblock {
height: 100%;
display: flex;
flex-direction: column;
border-radius: var(--radius-xl);
overflow: hidden;
border: 1px solid var(--border);
background: #0b1220;
color: #e6edf6;
box-shadow: 0 18px 50px rgba(11, 18, 32, .18);
}
.jasa-codeblock-head {
padding: 10px 14px;
background: #0a1020;
border-bottom: 1px solid rgba(255, 255, 255, .06);
flex: 0 0 auto;
}
.jasa-codeblock-lang {
font-family: var(--font-mono);
font-size: .72rem;
color: rgba(230, 237, 246, .55);
}
.jasa-codeblock pre {
margin: 0;
padding: 1.1rem 1.25rem;
background: transparent;
color: #e6edf6;
font-family: var(--font-mono);
font-size: .82rem;
line-height: 1.7;
flex: 1 1 auto;
overflow: auto;
}
.jasa-codeblock pre code { background: transparent; color: inherit; padding: 0; display: block; }
.jasa-process { padding-top: 2.5rem; }
.jasa-step-grid {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 16px;
}
@media (max-width: 991px) { .jasa-step-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 575px) { .jasa-step-grid { grid-template-columns: 1fr; } }
.jasa-step {
padding: 26px 22px;
border: 1px solid var(--border);
border-radius: var(--radius-xl);
background: var(--bg);
position: relative;
transition: border-color .2s var(--ease), transform .2s var(--ease);
}
.jasa-step:hover { border-color: var(--accent); transform: translateY(-3px); }
.jasa-step-num {
display: block;
font-family: var(--font-display);
font-size: 2.4rem;
font-weight: 800;
line-height: 1;
letter-spacing: -0.04em;
background: linear-gradient(135deg, var(--accent), #16a34a);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
margin-bottom: 12px;
}
.jasa-step h5 {
font-size: 1rem;
margin-bottom: 6px;
color: var(--heading);
font-weight: 700;
}
.jasa-step p {
color: var(--text-muted);
font-size: .9rem;
margin: 0;
}
.jasa-stats-section { padding: 2.5rem 0; }
.jasa-stats {
display: grid;
grid-template-columns: repeat(4, minmax(0, 1fr));
gap: 1px;
background: var(--border);
border: 1px solid var(--border);
border-radius: var(--radius-md);
overflow: hidden;
}
@media (max-width: 767px) { .jasa-stats { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 420px) { .jasa-stats { grid-template-columns: 1fr; } }
.jasa-stat {
padding: 1.5rem 1.25rem;
background: var(--bg);
text-align: center;
transition: background .15s var(--ease);
}
.jasa-stat:hover { background: var(--bg-subtle); }
.jasa-stat-num {
font-family: var(--font-display);
font-size: clamp(2rem, 3.4vw, 2.8rem);
font-weight: 800;
line-height: 1;
letter-spacing: -0.035em;
background: linear-gradient(135deg, var(--accent), #16a34a);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
margin-bottom: 6px;
}
.jasa-stat-num span { font-size: .7em; opacity: .8; }
.jasa-stat small {
display: block;
color: var(--text-muted);
font-size: .85rem;
letter-spacing: 0.01em;
}
.jasa-testi-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 18px;
}
@media (max-width: 991px) { .jasa-testi-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 575px) { .jasa-testi-grid { grid-template-columns: 1fr; } }
.jasa-testi {
margin: 0;
padding: 22px 24px;
border: 1px solid var(--border);
border-radius: var(--radius-xl);
background: var(--bg);
display: flex;
flex-direction: column;
gap: 12px;
position: relative;
transition: border-color .2s var(--ease), transform .2s var(--ease);
}
.jasa-testi:hover { border-color: var(--accent); transform: translateY(-3px); }
.jasa-testi-stars {
color: #f59e0b;
font-size: .82rem;
display: inline-flex; gap: 2px;
}
.jasa-testi blockquote {
margin: 0;
padding: 0;
font-size: .95rem;
line-height: 1.65;
color: var(--text);
quotes: none;
}
.jasa-testi figcaption {
display: flex; flex-direction: column;
gap: 2px;
padding-top: 10px;
border-top: 1px dashed var(--border);
}
.jasa-testi figcaption strong { color: var(--heading); font-size: .92rem; }
.jasa-testi figcaption span { color: var(--text-muted); font-size: .82rem; }
.jasa-pricing-grid {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 18px;
}
@media (max-width: 991px) { .jasa-pricing-grid { grid-template-columns: 1fr; } }
.jasa-price-card {
position: relative;
display: flex;
flex-direction: column;
padding: 28px 26px;
border: 1px solid var(--border);
border-radius: var(--radius-xl);
background: var(--bg);
transition: border-color .2s var(--ease), transform .2s var(--ease);
}
.jasa-price-card:hover { border-color: var(--accent); transform: translateY(-3px); }
.jasa-price-card-popular {
border-color: var(--accent);
box-shadow: 0 0 0 3px var(--accent-soft);
}
.jasa-price-flag {
position: absolute;
top: -12px; right: 18px;
background: var(--accent);
color: #fff;
font-size: .7rem;
font-weight: 600;
letter-spacing: 0.06em;
text-transform: uppercase;
padding: 4px 10px;
border-radius: 999px;
}
.jasa-price-head { margin-bottom: 16px; }
.jasa-price-eyebrow {
display: inline-block;
text-transform: uppercase;
letter-spacing: 0.12em;
font-size: .7rem;
color: var(--text-muted);
margin-bottom: 4px;
font-family: var(--font-mono);
}
.jasa-price-title {
color: var(--heading);
font-size: 1.1rem;
font-weight: 700;
margin-bottom: 12px;
}
.jasa-price-amount {
display: inline-flex;
align-items: baseline;
gap: 4px;
color: var(--heading);
}
.jasa-price-from {
font-size: .72rem;
color: var(--text-muted);
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.1em;
padding: 3px 8px;
border: 1px solid var(--border);
border-radius: 999px;
align-self: center;
margin-right: 4px;
}
.jasa-price-curr { font-size: 1rem; color: var(--text-muted); font-weight: 500; }
.jasa-price-num {
font-family: var(--font-display);
font-size: clamp(2rem, 3.4vw, 2.6rem);
font-weight: 800;
letter-spacing: -0.03em;
line-height: 1;
background: linear-gradient(135deg, var(--accent), #16a34a);
-webkit-background-clip: text;
background-clip: text;
-webkit-text-fill-color: transparent;
color: transparent;
}
.jasa-price-unit { font-size: 1rem; color: var(--text-muted); font-weight: 500; }
.jasa-price-amount-text { padding: 6px 0; }
.jasa-price-quote {
font-family: var(--font-display);
font-size: 1.6rem;
font-weight: 700;
color: var(--heading);
}
.jasa-price-note {
display: block;
margin-top: 6px;
color: var(--text-muted);
font-size: .8rem;
line-height: 1.55;
}
.jasa-price-excl {
margin-top: 4px;
color: var(--warning);
font-size: .75rem;
font-weight: 500;
}
.jasa-price-excl i { opacity: .85; }
.jasa-price-list {
list-style: none;
margin: 0 0 18px;
padding: 16px 0 0;
border-top: 1px dashed var(--border);
flex: 1 1 auto;
}
.jasa-price-list li {
display: flex;
align-items: flex-start;
gap: 10px;
padding: 6px 0;
color: var(--text);
font-size: .9rem;
}
.jasa-price-list li i {
color: var(--accent);
font-size: .85rem;
line-height: 1.6;
flex: 0 0 auto;
}
.jasa-addon {
display: flex;
align-items: flex-start;
gap: 14px;
padding: 18px 22px;
border: 1px dashed var(--border);
border-radius: var(--radius-md);
background: var(--bg-subtle);
}
.jasa-addon-icon {
flex: 0 0 auto;
width: 42px; height: 42px;
display: inline-flex; align-items: center; justify-content: center;
border-radius: var(--radius-sm);
background: var(--accent-soft);
color: var(--accent);
font-size: 1.1rem;
}
.jasa-addon-body { flex: 1; min-width: 0; }
.jasa-addon-body h5 {
color: var(--heading);
font-size: 1rem;
font-weight: 700;
margin: 0 0 4px;
display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.jasa-addon-tag {
display: inline-block;
padding: 2px 8px;
font-size: .68rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.06em;
border-radius: 999px;
background: var(--accent-soft);
color: var(--accent);
border: 1px solid var(--border);
}
.jasa-addon-body p {
margin: 0;
color: var(--text-muted);
font-size: .92rem;
line-height: 1.6;
}
.jasa-pricing-foot {
color: var(--text-muted);
font-size: .88rem;
}
.jasa-faq { display: flex; flex-direction: column; gap: 10px; }
.jasa-faq-item {
border: 1px solid var(--border);
border-radius: var(--radius-md);
background: var(--bg);
overflow: hidden;
transition: border-color .15s var(--ease);
}
.jasa-faq-item[open] { border-color: var(--accent); }
.jasa-faq-item summary {
list-style: none;
cursor: pointer;
padding: 14px 18px;
font-weight: 600;
color: var(--heading);
font-size: .95rem;
display: flex;
align-items: center;
justify-content: space-between;
gap: 14px;
}
.jasa-faq-item summary::-webkit-details-marker { display: none; }
.jasa-faq-item summary::after {
content: "";
width: 9px; height: 9px;
border-right: 1.5px solid currentColor;
border-bottom: 1.5px solid currentColor;
transform: rotate(45deg) translateY(-2px);
transition: transform .2s var(--ease);
opacity: .7;
flex: 0 0 auto;
}
.jasa-faq-item[open] summary::after {
transform: rotate(-135deg) translateY(0);
}
.jasa-faq-body {
padding: 0 18px 16px;
color: var(--text-muted);
font-size: .92rem;
line-height: 1.65;
}
.sticky-wa {
position: fixed;
bottom: 20px;
right: 20px;
z-index: 1040;
display: inline-flex;
align-items: center;
gap: 8px;
padding: 12px 16px;
border-radius: 999px;
background: #25d366;
color: #fff !important;
font-weight: 600;
font-size: .88rem;
text-decoration: none;
box-shadow: 0 10px 24px rgba(37, 211, 102, .35), 0 2px 6px rgba(0, 0, 0, .1);
transition: transform .15s var(--ease), box-shadow .15s var(--ease);
}
.sticky-wa:hover {
transform: translateY(-2px);
color: #fff !important;
box-shadow: 0 14px 30px rgba(37, 211, 102, .45);
}
.sticky-wa i { font-size: 1.15rem; }
.sticky-wa-label { line-height: 1; }
@media (max-width: 575px) {
.sticky-wa { padding: 12px; }
.sticky-wa-label { display: none; }
}
.dev-card {
display: grid;
grid-template-columns: 220px 1fr;
gap: 36px;
align-items: stretch;
padding: 36px;
border: 1px solid var(--border);
border-radius: var(--radius-xl);
background: var(--bg);
box-shadow: var(--shadow-md);
position: relative;
overflow: hidden;
transition: transform .25s var(--ease), box-shadow .25s var(--ease);
}
.dev-card:hover { transform: translateY(-3px); box-shadow: 0 20px 40px -20px rgba(27, 95, 172, .25); }
.dev-card::before {
content: "";
position: absolute;
inset: 0;
background: radial-gradient(420px 220px at 0% 0%, rgba(27, 95, 172, .07), transparent 60%),
radial-gradient(360px 200px at 100% 100%, var(--accent-warm-soft), transparent 60%);
pointer-events: none;
}
.dev-card-side, .dev-card-body { position: relative; }
.dev-card-side {
display: flex;
flex-direction: column;
align-items: center;
gap: 18px;
}
.dev-card-avatar {
position: relative;
display: block;
width: 200px; height: 200px;
border-radius: 50%;
overflow: hidden;
border: 1px solid var(--border);
background: var(--bg-soft);
box-shadow: 0 6px 20px rgba(15, 23, 42, .06);
transition: transform .2s var(--ease), border-color .2s var(--ease);
}
.dev-card-avatar:hover { transform: translateY(-2px); border-color: var(--accent); }
.dev-card-avatar img {
width: 100%; height: 100%;
object-fit: cover;
display: block;
}
.dev-card-status {
position: absolute;
bottom: 8px; left: 50%;
transform: translateX(-50%);
display: inline-flex;
align-items: center;
gap: 6px;
padding: 4px 10px;
border-radius: 999px;
background: var(--bg);
border: 1px solid var(--border);
font-size: .68rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.08em;
color: var(--text);
box-shadow: 0 2px 6px rgba(0, 0, 0, .06);
}
.dev-card-status-dot {
width: 7px; height: 7px;
border-radius: 50%;
background: #16a34a;
box-shadow: 0 0 0 3px rgba(22, 163, 74, .18);
}
.dev-card-socials {
display: flex;
gap: 8px;
justify-content: center;
}
.dev-card-socials a {
display: inline-flex;
align-items: center;
justify-content: center;
width: 38px; height: 38px;
border-radius: 50%;
border: 1px solid var(--border);
color: var(--text-muted);
background: var(--bg);
transition: color .15s var(--ease), border-color .15s var(--ease), transform .15s var(--ease);
font-size: .95rem;
}
.dev-card-socials a:hover {
color: var(--accent);
border-color: var(--accent);
transform: translateY(-2px);
}
.dev-card-body { min-width: 0; }
.dev-card-eyebrow {
display: inline-flex;
align-items: center;
gap: 8px;
font-family: var(--font-mono);
font-size: .72rem;
font-weight: 600;
text-transform: uppercase;
letter-spacing: 0.12em;
color: var(--text-muted);
margin-bottom: 10px;
}
.dev-card-eyebrow i { color: var(--accent); font-size: .85rem; }
.dev-card-eyebrow-sep { opacity: .45; }
.dev-card-name {
font-family: var(--font-display);
font-size: clamp(1.7rem, 2.8vw, 2.4rem);
font-weight: 800;
letter-spacing: -0.035em;
color: var(--heading);
margin: 0 0 4px;
line-height: 1.1;
}
.dev-card-name-link {
color: inherit;
text-decoration: none;
transition: color .15s var(--ease);
}
.dev-card-name-link:hover { color: var(--accent); }
.dev-card-tag {
color: var(--accent);
font-size: .92rem;
font-weight: 600;
margin: 0 0 14px;
}
.dev-card-bio {
color: var(--text-muted);
line-height: 1.75;
font-size: .95rem;
margin: 0 0 22px;
max-width: 64ch;
}
.dev-card-meta {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 12px;
padding: 16px;
border: 0;
border-radius: var(--radius-lg);
background: var(--bg-subtle);
margin-bottom: 22px;
}
.dev-card-meta-item {
display: flex;
align-items: center;
gap: 12px;
min-width: 0;
}
.dev-card-meta-item > i {
width: 38px; height: 38px;
display: inline-flex;
align-items: center;
justify-content: center;
border-radius: var(--radius-md);
background: var(--accent-soft);
color: var(--accent);
font-size: 1rem;
flex-shrink: 0;
}
.dev-card-meta-item:nth-child(2) > i { background: var(--accent-warm-soft); color: var(--accent-warm-hover); }
.dev-card-meta-item:nth-child(3) > i { background: rgba(22, 163, 74, .12); color: #16a34a; }
.dev-card-meta-item > div { min-width: 0; }
.dev-card-meta-item small {
display: block;
color: var(--text-muted);
font-size: .72rem;
text-transform: uppercase;
letter-spacing: 0.08em;
line-height: 1;
margin-bottom: 4px;
}
.dev-card-meta-item strong {
display: block;
color: var(--heading);
font-size: .9rem;
font-weight: 600;
line-height: 1.25;
}
.dev-card-stack {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 22px;
}
.dev-card-stack span {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 14px;
border: 1px solid var(--border);
border-radius: 999px;
color: var(--text);
font-size: .78rem;
font-weight: 500;
background: var(--bg-subtle);
transition: border-color .15s var(--ease), color .15s var(--ease), transform .15s var(--ease);
}
.dev-card-stack span:hover { border-color: var(--accent); color: var(--accent); transform: translateY(-2px); }
.dev-card-stack span i { color: var(--accent); font-size: .9rem; }
.dev-card-stack span:nth-child(3n+2) i { color: var(--accent-warm-hover); }
.dev-card-stack span:nth-child(3n+3) i { color: #16a34a; }
.dev-card-actions {
display: flex;
flex-wrap: wrap;
gap: 10px;
}
@media (max-width: 991px) {
.dev-card-meta { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 767px) {
.dev-card {
grid-template-columns: 1fr;
gap: 24px;
padding: 28px 22px;
text-align: center;
}
.dev-card-side { align-items: center; }
.dev-card-avatar { width: 150px; height: 150px; }
.dev-card-bio,
.dev-card-eyebrow,
.dev-card-stack,
.dev-card-actions { margin-left: auto; margin-right: auto; }
.dev-card-eyebrow,
.dev-card-stack,
.dev-card-actions { justify-content: center; }
.dev-card-meta { grid-template-columns: 1fr; text-align: left; }
}
.jasa-cta-flat {
border: 0;
border-radius: var(--radius-xl);
background: linear-gradient(120deg, var(--navy) 0%, var(--navy-2) 55%, var(--navy-warm-end) 100%);
padding: 3rem 2rem;
text-align: center;
position: relative;
overflow: hidden;
}
.jasa-cta-flat::after {
content: "";
position: absolute; inset: 0;
background: radial-gradient(480px 260px at 50% 0%, rgba(255, 138, 30, .2), transparent 65%);
pointer-events: none;
}
.jasa-cta-flat > * { position: relative; }
.jasa-cta-flat .hero-badge { background: var(--navy-overlay-hover); border-color: var(--navy-border); color: var(--on-navy-muted); }
.jasa-cta-flat .hero-badge .dot { background: var(--accent-warm); }
.jasa-cta-flat-title {
font-family: var(--font-display);
font-size: clamp(1.8rem, 3vw, 2.5rem);
font-weight: 800;
line-height: 1.15;
letter-spacing: -0.03em;
color: var(--on-navy);
max-width: 26ch;
margin: 0 auto 1rem;
}
.jasa-cta-flat-lead {
color: var(--on-navy-muted);
font-size: 1rem;
line-height: 1.7;
margin: 0 auto 1.5rem;
max-width: 58ch;
}
.jasa-cta-flat-note {
display: inline-flex;
align-items: center;
flex-wrap: wrap;
justify-content: center;
gap: 6px 10px;
margin-top: 1.25rem;
color: var(--on-navy-muted);
font-size: .82rem;
}
.jasa-cta-flat .btn-primary { background: var(--accent-warm); border-color: var(--accent-warm); color: #1a0f00 !important; }
.jasa-cta-flat .btn-primary:hover { background: var(--accent-warm-hover); border-color: var(--accent-warm-hover); }
.jasa-cta-flat .hero-cta {
justify-content: center;
display: inline-flex;
flex-wrap: wrap;
}
.page-list {
list-style: none;
margin: 0;
padding: 0;
}
.page-list li {
border-bottom: 1px dashed var(--border);
}
.page-list li:last-child { border-bottom: 0; }
.page-list li a {
display: flex;
align-items: center;
gap: 8px;
padding: .55rem 0;
font-size: .92rem;
color: var(--text);
text-decoration: none;
transition: color .15s var(--ease), transform .15s var(--ease);
}
.page-list li a i {
color: var(--accent);
font-size: .8rem;
width: 14px;
text-align: center;
}
.page-list li a:hover {
color: var(--accent);
transform: translateX(2px);
}
@media (prefers-reduced-motion: reduce) {
*, body, body * { transition-duration: .01ms !important; animation: none !important; }
}
#img-article{
height: auto;
aspect-ratio: 16 / 9;
object-fit: cover;
border-radius: 16px;
}
#gambar_slider{
width: 100%;
height: 500px;
object-fit: cover;
border-radius: 10px;
}
.form-group label {
padding-bottom: 8px;
}
.content-article img {
display: block;
width: auto !important;
max-width: 100%;
height: auto;
}
.content-article iframe,
.content-article video,
.content-article table {
max-width: 100%;
}
.content-article iframe,
.content-article video {
display: block;
}
.content-article table {
display: block;
overflow-x: auto;
}
.magazine-page {
--mag-ink: var(--heading);
--mag-muted: var(--text-muted);
--mag-border: var(--border);
--mag-soft: var(--bg-soft);
--mag-accent: var(--accent);
padding-bottom: 4rem;
}
.home-section.magazine-page { padding-bottom: 0; }
.magazine-header {
margin-top: 1rem;
padding: 1.5rem 0 2.25rem;
border-bottom: 1px solid var(--mag-border);
}
.magazine-header-top {
display: flex;
align-items: center;
justify-content: space-between;
gap: 1rem;
color: var(--mag-muted);
font-family: var(--font-mono);
font-size: .7rem;
font-weight: 600;
letter-spacing: .1em;
text-transform: uppercase;
}
.magazine-header-top span:first-child {
display: inline-flex;
align-items: center;
gap: .45rem;
color: var(--mag-accent);
}
.magazine-header-top span:first-child::before {
width: 6px;
height: 6px;
border-radius: 50%;
background: var(--mag-accent);
content: '';
}
.magazine-header h1 {
max-width: 820px;
margin: 1.1rem 0 .6rem;
color: var(--mag-ink);
font-family: var(--font-display, inherit);
font-size: clamp(2.3rem, 5.5vw, 4.6rem);
font-weight: 800;
letter-spacing: -.03em;
line-height: 1.03;
}
.magazine-header p {
max-width: 680px;
margin: 0;
color: var(--mag-muted);
font-size: 1rem;
line-height: 1.7;
}
.magazine-topic-nav {
display: flex;
flex-wrap: wrap;
gap: .5rem;
margin-top: 1.5rem;
}
.magazine-topic-nav a {
display: inline-flex;
align-items: center;
padding: .45rem .8rem;
border: 1px solid var(--mag-border);
border-radius: var(--radius-xs);
color: var(--mag-muted);
background: transparent;
font-size: .76rem;
font-weight: 600;
transition: color .15s var(--ease), border-color .15s var(--ease), background .15s var(--ease);
}
.magazine-topic-nav a:first-child {
border-color: var(--mag-accent);
color: var(--mag-accent);
background: color-mix(in srgb, var(--mag-accent) 8%, transparent);
}
.magazine-topic-nav a:hover {
border-color: var(--mag-accent);
color: var(--mag-accent);
}
.magazine-body { margin-top: 2.25rem; }
.magazine-section-heading {
display: flex;
align-items: end;
justify-content: space-between;
gap: 1rem;
margin-bottom: 1.5rem;
padding-bottom: .85rem;
border-bottom: 1px solid var(--mag-border);
}
.magazine-section-heading h2 {
display: flex;
align-items: center;
gap: .55rem;
margin: 0;
color: var(--mag-ink);
font-size: 1.2rem;
font-weight: 800;
letter-spacing: -.02em;
}
.magazine-section-heading h2::before {
flex-shrink: 0;
width: 8px;
height: 8px;
border-radius: 2px;
background: var(--mag-accent);
content: '';
}
.magazine-section-heading a {
color: var(--mag-accent);
font-size: .76rem;
font-weight: 700;
white-space: nowrap;
}
.magazine-section-heading a:hover { text-decoration: underline; }
.magazine-articles {
display: grid;
grid-template-columns: repeat(3, minmax(0, 1fr));
gap: 1.5rem 1.25rem;
}
.magazine-lead {
display: grid;
grid-column: 1 / -1;
grid-template-columns: minmax(0, 1.15fr) minmax(260px, .85fr);
align-items: stretch;
gap: 1.75rem;
margin-bottom: .5rem;
padding-bottom: 1.75rem;
border-bottom: 1px solid var(--mag-border);
}
.magazine-lead-image { display: block; }
.magazine-lead-image img,
.magazine-card-image img {
display: block;
}
.magazine-lead-content {
display: flex;
flex-direction: column;
justify-content: center;
}
.magazine-story-label {
display: inline-block;
width: fit-content;
margin: 0 0 .65rem;
padding: .2rem .55rem;
border-radius: var(--radius-xs);
background: var(--mag-soft);
color: var(--mag-accent);
font-size: .66rem;
font-weight: 700;
letter-spacing: .08em;
text-transform: uppercase;
}
.magazine-lead-title,
.magazine-card-title {
display: block;
color: var(--mag-ink);
font-weight: 700;
letter-spacing: -.02em;
line-height: 1.24;
}
.magazine-lead-title { font-size: clamp(1.5rem, 2.8vw, 2.1rem); }
.magazine-card-title { font-size: 1rem; }
.magazine-lead-title:hover,
.magazine-card-title:hover { color: var(--mag-accent); }
.magazine-story-meta {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: .85rem 1.25rem;
margin-top: 1.1rem;
color: var(--mag-muted);
font-size: .78rem;
line-height: 1;
}
.magazine-story-meta a {
display: inline-flex;
align-items: center;
gap: .55rem;
color: inherit;
}
.magazine-story-meta a:hover { color: var(--mag-accent); }
.magazine-story-meta span {
display: inline-flex;
align-items: center;
}
.magazine-story-meta i {
margin-right: .4rem;
color: var(--mag-muted);
}
.magazine-story-meta img {
width: 26px;
height: 26px;
border: 1px solid var(--mag-border);
border-radius: 50%;
object-fit: cover;
flex-shrink: 0;
}
.magazine-card {
display: flex;
flex-direction: column;
min-width: 0;
}
.magazine-card-image { display: block; }
.magazine-card .magazine-story-label { margin: 1rem 0 0; }
.magazine-card .magazine-card-title { margin-top: .5rem; }
.magazine-card .magazine-story-meta { margin-top: .65rem; }
.magazine-card:nth-of-type(2) { grid-column: span 2; }
.magazine-card:nth-of-type(2) .magazine-card-title { font-size: 1.3rem; }
.magazine-empty { grid-column: 1 / -1; padding: 2.5rem 0; color: var(--mag-muted); text-align: center; }
.magazine-feed .pagination .page-link { border: 0 !important; background: transparent; color: var(--mag-muted); }
.magazine-feed .pagination .page-item.active .page-link {
background: transparent !important;
color: var(--mag-accent);
font-weight: 700;
}
.magazine-side-block {
margin-top: 1.75rem;
padding-bottom: 1.5rem;
border-bottom: 1px solid var(--mag-border);
}
.magazine-side-block:first-child { margin-top: 0; }
.magazine-side-kicker {
display: block;
margin-bottom: .5rem;
color: var(--mag-accent);
font-family: var(--font-mono);
font-size: .66rem;
font-weight: 700;
letter-spacing: .1em;
text-transform: uppercase;
}
.magazine-side-block h3 {
margin-bottom: .35rem;
color: var(--mag-ink);
font-size: 1.1rem;
font-weight: 800;
letter-spacing: -.02em;
}
.magazine-side-block > p {
margin-bottom: 1rem;
color: var(--mag-muted);
font-size: .82rem;
line-height: 1.6;
}
.magazine-topic-list { margin-top: 1rem; }
.magazine-topic-item {
display: grid;
grid-template-columns: 28px minmax(0, 1fr) 16px;
align-items: center;
gap: .75rem;
padding: .75rem .25rem;
border-radius: var(--radius-sm);
color: var(--mag-ink);
transition: background .15s var(--ease), padding .15s var(--ease);
}
.magazine-topic-item:hover { padding-right: .5rem; padding-left: .5rem; background: var(--mag-soft); }
.magazine-topic-number {
color: var(--mag-accent);
font-family: var(--font-mono);
font-size: .72rem;
font-weight: 700;
}
.magazine-topic-copy { min-width: 0; }
.magazine-topic-copy strong { display: block; font-size: .85rem; font-weight: 700; }
.magazine-topic-copy small { display: block; margin-top: .2rem; color: var(--mag-muted); font-size: .72rem; line-height: 1.45; }
.magazine-topic-item i {
color: var(--mag-muted);
font-size: .68rem;
transition: transform .15s var(--ease), color .15s var(--ease);
}
.magazine-topic-item:hover i { color: var(--mag-accent); transform: translateX(2px); }
.magazine-mini-list { display: flex; flex-direction: column; gap: .1rem; margin-top: 1rem; }
.magazine-mini-item {
display: grid;
grid-template-columns: 56px minmax(0, 1fr);
align-items: center;
gap: .75rem;
padding: .6rem .25rem;
border-radius: var(--radius-sm);
color: var(--mag-ink);
transition: background .15s var(--ease);
}
.magazine-mini-item:hover { background: var(--mag-soft); }
.magazine-mini-thumb {
display: block;
overflow: hidden;
width: 56px;
height: 56px;
flex-shrink: 0;
border-radius: var(--radius-sm);
background: var(--mag-soft);
}
.magazine-mini-thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }
.magazine-mini-copy { min-width: 0; }
.magazine-mini-copy strong {
display: block;
overflow: hidden;
color: var(--mag-ink);
font-size: .85rem;
font-weight: 700;
line-height: 1.3;
text-overflow: ellipsis;
white-space: nowrap;
}
.magazine-mini-copy small { display: block; margin-top: .2rem; color: var(--mag-accent); font-size: .74rem; font-weight: 700; }
.magazine-mini-more {
display: inline-flex;
align-items: center;
margin-top: .85rem;
color: var(--mag-accent);
font-size: .78rem;
font-weight: 700;
}
.magazine-mini-more:hover { text-decoration: underline; }
.magazine-side-note {
margin-top: 1.75rem;
padding: 1.25rem;
border: 1px solid var(--mag-border);
border-radius: var(--radius-lg);
background: var(--mag-soft);
}
.magazine-side-note:first-child { margin-top: 0; }
.magazine-side-note h3 { font-size: .95rem; font-weight: 800; }
.magazine-side-note p { margin-bottom: 1rem; color: var(--mag-muted); font-size: .82rem; line-height: 1.6; }
.magazine-side-note a { color: var(--mag-accent); font-size: .78rem; font-weight: 700; }
.magazine-side-note a:hover { text-decoration: underline; }
.magazine-side-list { margin: .75rem 0 0; padding: 0; list-style: none; }
.magazine-side-list li { position: relative; margin-bottom: .6rem; padding-left: 1rem; color: var(--mag-muted); font-size: .8rem; line-height: 1.55; }
.magazine-side-list li::before { position: absolute; top: .6rem; left: 0; width: 5px; height: 5px; border-radius: 50%; background: var(--mag-accent); content: ''; }
@media (max-width: 991px) {
.magazine-lead { grid-template-columns: 1fr; }
.magazine-articles { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 575px) {
.magazine-header { margin-top: 0; padding-top: 1rem; }
.magazine-header h1 { font-size: 2.6rem; }
.magazine-header-top span:last-child { display: none; }
.magazine-section-heading { flex-direction: column; align-items: start; gap: .4rem; }
.magazine-articles { grid-template-columns: 1fr; gap: 2rem; }
.magazine-lead { padding-bottom: 1.5rem; }
.magazine-card:nth-of-type(2) { grid-column: auto; }
.magazine-card:nth-of-type(2) .magazine-card-title { font-size: 1rem; }
}
.store-profile-card,
.store-banner-card {
border: 1px solid var(--border);
border-radius: var(--radius-lg);
background: var(--bg);
}
.store-profile-card {
position: relative;
overflow: hidden;
border-top: 3px solid var(--accent);
}
.store-profile-content {
display: flex;
align-items: center;
gap: 1.25rem;
min-height: 0;
padding: 1.25rem 1.5rem;
min-width: 0;
}
.store-profile-copy { min-width: 0; overflow-wrap: anywhere; }
.store-profile-copy h1 { margin: .25rem 0 .5rem; }
.store-profile-copy p { max-width: 700px; margin-bottom: 1rem; color: var(--text-muted); white-space: pre-line; }
.store-banner-card {
margin-top: 1rem;
padding: .5rem;
overflow: hidden;
}
.store-banner-card img {
display: block;
width: 100%;
height: auto;
max-width: 100%;
object-fit: contain;
border-radius: calc(var(--radius-lg) - .25rem);
}
.store-logo {
flex: 0 0 92px;
width: 92px;
height: 92px;
object-fit: cover;
border: 4px solid var(--bg);
border-radius: 1rem;
}
@media (max-width: 575.98px) {
.store-profile-content { align-items: flex-start; flex-direction: column; padding: 1.1rem; }
.store-logo { flex-basis: 72px; width: 72px; height: 72px; }
.store-banner-card { margin-top: .75rem; padding: .35rem; }
.store-banner-card img { border-radius: calc(var(--radius-lg) - .35rem); }
}
#daftarIsi {
position: fixed;
right: 1rem;
top: 5.5rem;
z-index: 9999;
width: 2.85rem;
height: 2.85rem;
display: inline-flex;
align-items: center;
justify-content: center;
border: 0;
border-radius: 999px;
box-shadow: 0 12px 28px rgba(15, 23, 42, .2);
}
html {
scroll-behavior: smooth;
}
.article-docs-layout {
margin-top: .5rem;
}
.article-toc-links a { text-decoration: none; }
.article-docs-row {
align-items: flex-start;
}
.article-toc-sidebar {
align-self: flex-start;
position: relative;
}
.article-toc-sidebar.is-following .content-panel {
position: fixed;
top: var(--toc-fixed-top, 90px);
left: var(--toc-fixed-left, auto);
width: var(--toc-fixed-width, auto);
z-index: 30;
}
.article-toc-panel {
padding: 0;
border: 1px solid var(--border);
border-top: 3px solid var(--accent);
border-radius: var(--radius-lg);
background: var(--bg);
box-shadow: 0 16px 40px rgba(15, 23, 42, .08);
overflow: hidden;
max-height: calc(100vh - 120px);
}
.article-toc-head {
display: flex;
align-items: center;
justify-content: space-between;
gap: .75rem;
padding: 1rem 1.1rem .85rem;
border-bottom: 1px solid var(--border-soft);
background: var(--bg-soft);
}
.article-toc-head h5 {
margin: 0;
font-size: .78rem;
letter-spacing: 0.12em;
color: var(--heading);
}
.article-toc-kicker {
display: inline-flex;
align-items: center;
gap: .45rem;
font-size: .72rem;
color: var(--text-muted, #64748b);
text-transform: uppercase;
letter-spacing: .08em;
font-weight: 700;
}
.article-toc-kicker i {
color: var(--bs-primary, #2563eb);
}
.article-toc-panel .toc-body {
overflow-y: auto;
overflow-x: hidden;
max-height: calc(100vh - 190px);
padding: .9rem .75rem 1rem;
scroll-behavior: smooth;
scrollbar-width: thin;
scrollbar-color: rgba(148, 163, 184, 0.7) transparent;
}
.article-toc-panel .toc-body::-webkit-scrollbar {
width: 6px;
}
.article-toc-panel .toc-body::-webkit-scrollbar-thumb {
background: rgba(148, 163, 184, 0.7);
border-radius: 999px;
}
.article-toc-panel .toc-body::-webkit-scrollbar-track {
background: transparent;
}
.article-toc-panel .toc-body a {
text-decoration: none;
display: block;
padding: .5rem .75rem;
border-radius: 12px;
color: var(--text);
font-size: .95rem;
line-height: 1.45;
transition: background-color .2s ease, color .2s ease, transform .2s ease, box-shadow .2s ease;
border: 1px solid transparent;
}
.article-toc-panel .toc-body a:hover {
color: var(--heading);
background: var(--accent-soft);
border-color: color-mix(in srgb, var(--accent) 20%, var(--border));
transform: translateX(2px);
}
.article-toc-panel .toc-body a.is-active {
color: var(--accent);
background: var(--accent-soft);
border-color: color-mix(in srgb, var(--accent) 28%, var(--border));
box-shadow: inset 3px 0 0 var(--accent);
}
.article-toc-panel .toc-body ul,
.article-toc-panel .toc-body ol {
list-style: none;
padding-left: 0;
margin-bottom: 0;
}
.article-toc-panel .toc-body li + li {
margin-top: .15rem;
}
.article-toc-panel .toc-body li > ul,
.article-toc-panel .toc-body li > ol {
margin-top: .2rem;
padding-left: .85rem;
border-left: 1px solid rgba(148, 163, 184, 0.25);
}
.article-toc-panel .toc-body li > ul a,
.article-toc-panel .toc-body li > ol a {
font-size: .9rem;
color: var(--text-muted);
}
.article-toc-panel .toc-body .toc-empty {
padding: .5rem .75rem;
color: var(--text-muted, #64748b);
font-size: .92rem;
}
[data-bs-theme="dark"] .article-toc-panel {
border-color: var(--border);
background: var(--bg);
box-shadow: 0 16px 40px rgba(0, 0, 0, .2);
}
[data-bs-theme="dark"] .article-toc-head {
background: var(--bg-soft);
border-bottom-color: var(--border);
}
[data-bs-theme="dark"] .article-toc-panel .toc-body a:hover {
background: var(--accent-soft);
}
[data-bs-theme="dark"] .article-toc-panel .toc-body a.is-active {
background: var(--accent-soft);
border-color: color-mix(in srgb, var(--accent) 28%, var(--border));
}
@media (max-width: 767.98px) {
.article-toc-sidebar.is-following .content-panel {
position: static;
top: auto;
left: auto;
width: auto;
}
.article-toc-panel {
max-height: none;
overflow: visible;
}
.article-toc-head {
padding: .95rem 1rem .8rem;
}
.article-toc-panel .toc-body {
overflow: visible;
max-height: none;
padding: .85rem .75rem 1rem;
}
}
.content-article h1 {
font-size: 18pt !important;
}
.content-article h2 {
font-size: 16pt !important;
}
.content-article h3 {
font-size: 14pt !important;
}
.content-article h4 {
font-size: 12pt !important;
}
.content-article h1,
.content-article h2,
.content-article h3,
.content-article h4 {
scroll-margin-top: 110px;
}
.accordion-button {
margin-top:-2pc !important;
}
.card .card-header {
padding-top: 0.5rem;
padding-bottom: 0.5rem;
}
.card .card-header h1,
.card .card-header h2,
.card .card-header h3,
.card .card-header h4 {
margin: 0 !important;
}
.contact-section {
padding: 60px 0;
}
.contact-hero {
max-width: 760px;
margin: 0 auto 38px;
}
.contact-eyebrow {
display: inline-flex;
align-items: center;
gap: 8px;
padding: 8px 16px;
border-radius: 999px;
font-size: 14px;
font-weight: 700;
margin-bottom: 16px;
}
.contact-hero h2 {
font-size: 36px;
font-weight: 800;
margin-bottom: 14px;
}
.contact-hero p {
font-size: 16px;
line-height: 1.8;
color: #6b7280;
margin-bottom: 0;
}
.contact-card {
position: relative;
height: 100%;
padding: 32px 26px;
border-radius: 26px;
border: 1px solid rgba(229, 231, 235, .9);
transition: all .25s ease;
overflow: hidden;
}
.contact-card:hover {
transform: translateY(-6px);
box-shadow: 0 24px 60px rgba(15, 23, 42, .12);
}
.contact-icon {
width: 72px;
height: 72px;
margin: 0 auto 22px;
border-radius: 22px;
display: flex;
align-items: center;
justify-content: center;
font-size: 32px;
}
.contact-icon.email {
color: #dc3545;
}
.contact-icon.whatsapp {
color: #198754;
}
.contact-icon.instagram {
color: #6c757d;
}
.contact-card h4 {
font-size: 21px;
font-weight: 800;
margin-bottom: 10px;
}
.contact-card p {
min-height: 54px;
font-size: 15px;
line-height: 1.7;
margin-bottom: 22px;
}
.contact-btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: 8px;
width: 100%;
padding: 13px 18px;
border-radius: 16px;
font-weight: 800;
text-decoration: none;
transition: all .2s ease;
}
.contact-btn:hover {
transform: translateY(-2px);
}
.contact-note {
display: block;
margin-top: 12px;
font-size: 13px;
font-weight: 600;
}
@media (max-width: 767px) {
.contact-section {
padding: 40px 0;
}
.contact-hero h2 {
font-size: 28px;
}
.contact-card {
padding: 28px 22px;
}
}
.accordion-button {
margin-top:-2pc !important;
}
.footer-tag { font-size: .68rem !important; line-height: 1.2; padding: .25rem .45rem; }
.footer-heart { color: var(--accent-warm); }
.form-select-border { border: 1px solid #ddd !important; }
.nav-brand-img { width: 48px; }
.pos-skeleton { background: var(--bg-soft); }
.avatar-xs { width: 26px; height: 26px; border-radius: 50%; object-fit: cover; border: 1px solid var(--border); }
.avatar-sm { width: 32px; height: 32px; border-radius: 50%; object-fit: cover; }
.thumb-cover { min-height: 100px; object-fit: cover; }
img.avatar-article.thumb-cover { width: 40px; height: 40px; min-height: 0; aspect-ratio: 1 / 1; flex: 0 0 40px; object-fit: cover; border-radius: 50% !important; }
.category-card-img { border-radius: 12px; }
.page-loading { height: 3px; position: fixed; top: 0; left: 0; z-index: 2000; width: 0; background: var(--bs-primary, #2563eb); transition: width .25s ease, opacity .3s ease; opacity: 0; }
.page-loading.is-progress { width: 70%; }
.page-loading.is-complete { width: 100%; }
.page-loading.is-active { opacity: 1; }
.translate-bar { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin: .75rem 0 0; }
.translate-bar-label { font-size: .85rem; font-weight: 600; color: var(--text-muted, #64748b); }
.not-found-title { font-family: var(--font-display); letter-spacing: -.03em; }
.facebook-frame { border: 0; max-width: 100%; overflow: hidden; }
.comment-embed { overflow-x: auto; }
.magazine-header--compact h1 { font-size: clamp(1.7rem, 3.4vw, 2.75rem); line-height: 1.12; letter-spacing: -.02em; max-width: 920px; }
.taxonomy-page .magazine-header h1 {
font-size: clamp(1.8rem, 3.6vw, 2.8rem);
line-height: 1.1;
}
.taxonomy-page .page-hero h2 {
font-size: clamp(1.65rem, 3vw, 2.35rem);
line-height: 1.15;
}
.facebook-shell { max-width: 760px; }
.account-page { max-width: 1180px; }
.account-hero { margin-bottom: 1.25rem; }
.account-card { height: 100%; overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--bg); box-shadow: none; }
.account-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; min-height: 76px; padding: 1.25rem 1.35rem; border-bottom: 1px solid var(--border-soft); background: var(--bg-soft); }
.account-card-head > div { min-width: 0; }
.account-card-head h2, .account-profile-card h2, .account-downloads h3 { margin: 0; font-size: 1.05rem; font-weight: 800; color: var(--heading); }
.account-card-head p { margin: .3rem 0 0; color: var(--text-muted); font-size: .86rem; }
.account-card-head > i { color: var(--accent); font-size: 1.25rem; }
.account-card-body { padding: 1.35rem; }
.account-profile-card { padding: 2rem 1.35rem; text-align: center; }
.account-avatar-wrap { margin: 0 auto 1rem; width: 96px; height: 96px; }
.account-avatar { width: 100%; height: 100%; object-fit: cover; border: 4px solid var(--border-soft); border-radius: 50%; }
.account-profile-card h2 { font-size: 1.25rem; }
.account-quick-links { display: grid; gap: .55rem; margin-top: 1.5rem; text-align: left; }
.account-quick-links a { display: flex; align-items: center; gap: .65rem; padding: .7rem .8rem; border: 1px solid var(--border); border-radius: var(--radius-sm); color: var(--text); text-decoration: none; }
.account-quick-links a:hover { border-color: var(--accent); color: var(--accent); }
.account-cart-table { padding: 0; }
.account-cart-table .table { color: var(--text); }
.account-cart-table .table > :not(caption) > * > * { border-color: var(--border-soft); }
.account-cart-table tfoot th { border-top: 2px solid var(--border) !important; }
.account-summary .account-card-body { padding: 1.35rem; }
.account-total { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: .8rem 0; border-bottom: 1px solid var(--border-soft); }
.account-total span { color: var(--text-muted); }
.account-total strong { text-align: right; color: var(--heading); }
.account-empty { padding: 3rem 1rem; text-align: center; color: var(--text-muted); }
.account-empty > i { margin-bottom: .75rem; color: var(--accent); font-size: 2rem; }
.account-empty h3 { margin: 0 0 .35rem; color: var(--heading); font-size: 1.15rem; }
.account-empty p { margin-bottom: 1.25rem; }
.account-downloads h3 { margin-bottom: .75rem; font-size: .95rem; }
.account-file-list { min-height: 180px; }
.account-file-item { display: flex; align-items: center; justify-content: space-between; gap: 1rem; height: 100%; padding: 1rem; border: 1px solid var(--border); border-radius: var(--radius-sm); }
.account-file-item strong, .account-file-item small { display: block; }
.account-file-item small { margin-top: .25rem; color: var(--text-muted); }
.account-cart-count { display: inline-flex; align-items: center; justify-content: center; min-width: 1.15rem; height: 1.15rem; padding: 0 .25rem; border-radius: 999px; background: var(--danger, #dc3545); color: #fff; font-size: .68rem; font-weight: 800; line-height: 1; vertical-align: middle; }
.account-cart-count--menu { min-width: 1.3rem; height: 1.3rem; }
.account-datatable-toolbar, .account-datatable-footer { display: flex; align-items: center; justify-content: space-between; gap: 1rem; flex-wrap: wrap; padding: .9rem 1.35rem; border-bottom: 1px solid var(--border-soft); }
.account-datatable-footer { border-top: 1px solid var(--border-soft); border-bottom: 0; color: var(--text-muted); font-size: .85rem; }
.account-datatable-length, .account-datatable-search, .account-datatable-pagination { display: inline-flex; align-items: center; gap: .5rem; }
.account-datatable-length { color: var(--text-muted); font-size: .85rem; }
.account-datatable-length select, .account-datatable-search input { min-height: 36px; border: 1px solid var(--border); border-radius: var(--radius-sm); background: var(--bg); color: var(--text); }
.account-datatable-length select { padding: 0 1.8rem 0 .65rem; }
.account-datatable-search { position: relative; min-width: min(100%, 280px); }
.account-datatable-search > span { position: absolute; left: .7rem; color: var(--text-muted); pointer-events: none; }
.account-datatable-search input { width: 100%; padding: 0 .75rem 0 2.15rem; }
.account-datatable .account-cart-table { overflow-x: auto; }
.account-datatable .account-cart-table table th[data-sort] { cursor: pointer; user-select: none; }
.account-datatable .account-cart-table table th[data-sort]:hover { color: var(--accent); }
.account-datatable-pagination { margin-left: auto; }
.account-datatable-pagination [data-table-page] { min-width: 7.5rem; text-align: center; font-size: .82rem; }
.account-datatable-pagination .btn:disabled { opacity: .45; pointer-events: none; }
@media (max-width: 767.98px) {
.account-card-head, .account-card-body { padding: 1rem; }
.account-datatable-toolbar, .account-datatable-footer { padding: .85rem 1rem; }
.account-datatable-search { width: 100%; }
.account-cart-table .table { min-width: 620px; }
.account-cart-table { overflow-x: auto; }
}
@media (max-width: 575.98px) {
.taxonomy-page .magazine-header h1 { font-size: 1.9rem; }
.taxonomy-page .page-hero h2 { font-size: 1.65rem; }
}
.account-template .account-page { padding-top: clamp(1rem, 2vw, 1.75rem); }
.account-template .account-hero { margin-bottom: 1.5rem; padding: clamp(1.35rem, 3vw, 2.2rem) 0 1.5rem; }
.account-template .account-page > .row > [class*="col-"] { display: flex; flex-direction: column; }
.account-template .account-page > .row > [class*="col-"] > .account-card { width: 100%; flex: 1 1 auto; }
.account-template .account-hero .eyebrow { display: inline-flex; align-items: center; gap: .45rem; color: var(--account-accent, var(--accent)); font-size: .72rem; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; }
.account-template .account-hero .eyebrow i { font-size: .8rem; }
.account-template .account-hero h1 { max-width: 780px; margin: .7rem 0 .35rem; color: var(--heading); font-size: clamp(1.7rem, 4vw, 2.55rem); letter-spacing: -.04em; }
.account-template .account-hero p { max-width: 650px; margin: 0; color: var(--text-muted); }
.account-template .account-card-head > i { color: var(--account-accent, var(--accent)); }
.account-template .account-card .btn { min-height: 36px; }
.account-template .account-datatable { border-radius: var(--radius-lg); }
.account-template .account-datatable-search input:focus, .account-template .account-datatable-length select:focus, .account-template .form-control:focus { border-color: var(--account-accent, var(--accent)); box-shadow: 0 0 0 .2rem color-mix(in srgb, var(--account-accent, var(--accent)) 16%, transparent); }
.account-template .account-total strong { color: var(--account-accent, var(--heading)); }
.account-template--transactions { --account-accent: #2563eb; }
.account-template--transaction-detail { --account-accent: #7c3aed; }
.account-template--checkout { --account-accent: #0f766e; }
.account-template--files { --account-accent: #d97706; }
.account-template--profile { --account-accent: #2563eb; }
.account-template--checkout .account-summary { border-color: color-mix(in srgb, var(--account-accent) 35%, var(--border)); }
.account-template--files .account-file-item { transition: border-color .18s ease, background-color .18s ease; }
.account-template--files .account-file-item:hover { border-color: color-mix(in srgb, var(--account-accent) 55%, var(--border)); }
@media (max-width: 575.98px) {
.account-template .account-page { padding-top: .5rem; }
.account-template .account-hero { padding: 1.25rem 0 1rem; border-radius: 0; }
.account-template .account-hero h1 { font-size: 1.75rem; }
}
.btn:not([class*="btn-hero"]):not(.btn-close):not(.btn-link) {
min-height: 36px;
padding: .4375rem 1rem;
border-radius: var(--radius-xs);
font-size: .875rem;
font-weight: 500;
line-height: 1.4;
letter-spacing: 0;
display: inline-flex;
align-items: center;
justify-content: center;
gap: .5rem;
box-shadow: 0 1px 0 rgba(24, 36, 51, .04);
border-color: rgba(24, 36, 51, .12);
transition: background-color .15s var(--ease), border-color .15s var(--ease), color .15s var(--ease), box-shadow .15s var(--ease), filter .15s var(--ease);
}
.btn:not([class*="btn-hero"]):not(.btn-close):not(.btn-link):active { transform: none; }
.btn.btn-sm { min-height: 28px; padding: .25rem .625rem; font-size: .75rem; }
.btn.btn-lg { min-height: 44px; padding: .5rem 1.25rem; font-size: 1rem; }
.btn.btn-block, .btn.w-100 { display: flex; }
.btn-primary { background: var(--accent); border-color: rgba(0, 0, 0, .12); }
.btn-success { background: var(--success); border-color: rgba(0, 0, 0, .12); }
.btn-danger { background: var(--danger); border-color: rgba(0, 0, 0, .12); }
.btn-warning { background: var(--warning); border-color: rgba(0, 0, 0, .12); }
.btn-info { background: var(--info); border-color: rgba(0, 0, 0, .12); }
.btn-primary:hover, .btn-success:hover, .btn-danger:hover, .btn-warning:hover, .btn-info:hover { filter: brightness(.92); }
.btn-secondary, .btn-light, .btn-grey {
background: var(--bg) !important;
color: var(--text) !important;
border-color: var(--border-strong) !important;
}
.btn-secondary:hover, .btn-light:hover, .btn-grey:hover,
.btn-secondary:focus, .btn-light:focus, .btn-grey:focus,
.btn-secondary:active, .btn-light:active, .btn-grey:active {
background: var(--bg-soft) !important;
color: var(--heading) !important;
border-color: var(--border-strong) !important;
filter: none;
}
.btn-dark { background: var(--btn-neutral); border-color: rgba(0, 0, 0, .2); }
.btn-dark:hover { filter: brightness(1.15); }
.btn[class*="btn-outline-"] {
background: transparent !important;
color: var(--text) !important;
border-color: var(--border-strong) !important;
}
.btn.btn-outline-primary {
color: var(--accent) !important;
border-color: var(--accent) !important;
}
.btn.btn-outline-success {
color: var(--success) !important;
border-color: var(--success) !important;
}
.btn.btn-outline-danger {
color: var(--danger) !important;
border-color: var(--danger) !important;
}
.btn.btn-outline-warning {
color: var(--warning) !important;
border-color: var(--warning) !important;
}
.btn.btn-outline-info {
color: var(--info) !important;
border-color: var(--info) !important;
}
.btn[class*="btn-outline-"] > i,
.btn[class*="btn-outline-"] > .fa,
.btn[class*="btn-outline-"] > .fas,
.btn[class*="btn-outline-"] > .far,
.btn[class*="btn-outline-"] > .fab,
.btn[class*="btn-outline-"] > .rt {
color: currentColor !important;
}
.btn[class*="btn-outline-"]:hover,
.btn[class*="btn-outline-"]:focus,
.btn[class*="btn-outline-"]:active {
background: var(--bg-soft) !important;
color: var(--heading) !important;
border-color: var(--border-strong) !important;
}
.btn.btn-outline-primary:hover,
.btn.btn-outline-primary:focus,
.btn.btn-outline-primary:active {
background: var(--accent) !important;
color: #fff !important;
border-color: var(--accent) !important;
}
.btn.btn-outline-success:hover,
.btn.btn-outline-success:focus,
.btn.btn-outline-success:active {
background: var(--success) !important;
color: #fff !important;
border-color: var(--success) !important;
}
.btn.btn-outline-danger:hover,
.btn.btn-outline-danger:focus,
.btn.btn-outline-danger:active {
background: var(--danger) !important;
color: #fff !important;
border-color: var(--danger) !important;
}
.btn.btn-outline-warning:hover,
.btn.btn-outline-warning:focus,
.btn.btn-outline-warning:active {
background: var(--warning) !important;
color: #fff !important;
border-color: var(--warning) !important;
}
.btn.btn-outline-info:hover,
.btn.btn-outline-info:focus,
.btn.btn-outline-info:active {
background: var(--info) !important;
color: #fff !important;
border-color: var(--info) !important;
}
.btn:focus-visible { outline: 0; box-shadow: 0 0 0 .25rem rgba(27, 95, 172, .25); }
.btn.disabled, .btn:disabled { opacity: .55; filter: none; }
.badge {
display: inline-flex;
align-items: center;
min-height: 1.25rem;
padding: .25em .5em;
border-radius: var(--radius-xs);
font-size: .625rem;
font-weight: 600;
line-height: 1;
letter-spacing: .04em;
text-transform: uppercase;
vertical-align: middle;
}
.badge.bg-warning { background: rgba(202, 138, 4, .16) !important; color: #854d0e !important; }
.badge.bg-success { background: rgba(22, 163, 74, .14) !important; color: #166534 !important; }
.badge.bg-danger { background: rgba(220, 38, 38, .14) !important; color: #991b1b !important; }
.badge.bg-primary { background: rgba(27, 95, 172, .14) !important; color: var(--accent) !important; }
.badge.bg-secondary { background: var(--bg-soft) !important; color: var(--text-soft) !important; border: 1px solid var(--border); }
.badge.bg-info { background: rgba(37, 99, 235, .14) !important; color: #1d4ed8 !important; }
[data-bs-theme=dark] .badge.bg-warning { color: #fcd34d !important; }
[data-bs-theme=dark] .badge.bg-success { color: #86efac !important; }
[data-bs-theme=dark] .badge.bg-danger { color: #fca5a5 !important; }
[data-bs-theme=dark] .badge.bg-info { color: #93c5fd !important; }
.footer .badge.bg-warning { color: #854d0e !important; }
[data-bs-theme=dark] .footer .badge.bg-warning { color: #fcd34d !important; }
.footer-tag { font-size: .7rem !important; }
.tag-chip {
height: 1.5rem;
padding: 0 .5rem;
gap: .375rem;
border: 1px solid var(--border);
border-radius: var(--radius-xs);
background: var(--bg-soft);
color: var(--text);
font-family: var(--font-sans);
font-size: .75rem;
font-weight: 500;
line-height: 1;
}
.tag-chip i { color: var(--text-muted); font-size: .7rem; }
.tag-chip:hover { background: var(--bg); border-color: var(--accent); color: var(--accent); }
.tag-chip:hover i { color: var(--accent); }
.pagination { gap: .25rem; margin-bottom: 0; }
.pagination .page-link {
min-width: 2rem;
height: 2rem;
padding: 0 .5rem;
display: inline-flex;
align-items: center;
justify-content: center;
border: 1px solid transparent;
border-radius: var(--radius-xs) !important;
background: transparent;
color: var(--text-soft);
font-size: .875rem;
font-weight: 500;
box-shadow: none;
}
.pagination .page-link:hover { background: var(--bg-soft); color: var(--heading); border-color: var(--border); }
.pagination .page-item.active .page-link { background: var(--accent); border-color: var(--accent); color: #fff; }
.pagination .page-item.disabled .page-link { color: var(--text-muted); opacity: .6; background: transparent; }
.magazine-feed .pagination .page-item.active .page-link { background: var(--accent) !important; color: #fff !important; font-weight: 600; }
.magazine-feed .pagination .page-link { border-radius: var(--radius-xs); }
.plain-product .plain-tags { display: flex; flex-wrap: wrap; align-items: center; gap: .375rem; }
.plain-product .plain-tags .btn,
.plain-product .plain-tags .btn.btn-sm {
margin: 0 !important;
min-height: 24px;
padding: 0 .5rem;
border-radius: var(--radius-xs);
font-size: .7rem;
line-height: 1;
gap: .3rem;
}
.plain-product .plain-tags .btn small { font-size: inherit; }
