-
@@ -0,0 +1,803 @@
|
||||
/* ==========================================================================
|
||||
Apple-inspired Design System
|
||||
Clean, minimal, with elegant typography and subtle animations
|
||||
========================================================================== */
|
||||
|
||||
:root {
|
||||
/* Apple-inspired color palette */
|
||||
--color-primary: #0071e3;
|
||||
--color-primary-hover: #0077ed;
|
||||
--color-secondary: #86868b;
|
||||
--color-text: #1d1d1f;
|
||||
--color-text-muted: #6e6e73;
|
||||
--color-background: #ffffff;
|
||||
--color-background-secondary: #fbfbfd;
|
||||
--color-background-tertiary: #f5f5f7;
|
||||
--color-border: #d2d2d7;
|
||||
--color-border-light: #e8e8ed;
|
||||
--color-success: #34c759;
|
||||
--color-warning: #ff9f0a;
|
||||
--color-error: #ff3b30;
|
||||
|
||||
/* Typography */
|
||||
--font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Helvetica Neue", Helvetica, Arial, sans-serif;
|
||||
--font-weight-regular: 400;
|
||||
--font-weight-medium: 500;
|
||||
--font-weight-semibold: 600;
|
||||
--font-weight-bold: 700;
|
||||
|
||||
/* Font sizes - fluid and responsive */
|
||||
--font-size-base: 1.0625rem; /* 17px - improved readability */
|
||||
--font-size-sm: 0.9375rem; /* 15px */
|
||||
--font-size-xs: 0.875rem; /* 14px */
|
||||
--font-size-lg: 1.1875rem; /* 19px */
|
||||
--font-size-xl: 1.375rem; /* 22px */
|
||||
--font-size-h1: clamp(2.25rem, 5vw, 3.5rem); /* 36px-56px - responsive */
|
||||
--font-size-h2: clamp(1.875rem, 4vw, 2.5rem); /* 30px-40px */
|
||||
--font-size-h3: clamp(1.5rem, 3vw, 2rem); /* 24px-32px */
|
||||
--font-size-h4: clamp(1.25rem, 2.5vw, 1.5rem); /* 20px-24px */
|
||||
--font-size-h5: 1.125rem; /* 18px */
|
||||
--font-size-h6: 1rem; /* 16px */
|
||||
|
||||
/* Line heights for better readability */
|
||||
--line-height-base: 1.6;
|
||||
--line-height-tight: 1.3;
|
||||
--line-height-loose: 1.8;
|
||||
|
||||
/* Spacing */
|
||||
--spacing-xs: 0.25rem;
|
||||
--spacing-sm: 0.5rem;
|
||||
--spacing-md: 1rem;
|
||||
--spacing-lg: 1.5rem;
|
||||
--spacing-xl: 2rem;
|
||||
--spacing-2xl: 3rem;
|
||||
--spacing-3xl: 4rem;
|
||||
|
||||
/* Border radius */
|
||||
--radius-sm: 8px;
|
||||
--radius-md: 12px;
|
||||
--radius-lg: 18px;
|
||||
--radius-xl: 22px;
|
||||
|
||||
/* Shadows */
|
||||
--shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.04);
|
||||
--shadow-md: 0 4px 12px rgba(0, 0, 0, 0.08);
|
||||
--shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.12);
|
||||
|
||||
/* Transitions */
|
||||
--transition-fast: 0.15s ease;
|
||||
--transition-normal: 0.25s ease;
|
||||
--transition-slow: 0.4s ease;
|
||||
}
|
||||
|
||||
/* Dark mode support */
|
||||
@media (prefers-color-scheme: dark) {
|
||||
:root {
|
||||
--color-primary: #2997ff;
|
||||
--color-primary-hover: #47a9ff;
|
||||
--color-secondary: #a1a1a6;
|
||||
--color-text: #f5f5f7;
|
||||
--color-text-muted: #a1a1a6;
|
||||
--color-background: #000000;
|
||||
--color-background-secondary: #161617;
|
||||
--color-background-tertiary: #1d1d1f;
|
||||
--color-border: #424245;
|
||||
--color-border-light: #2d2d2d;
|
||||
}
|
||||
|
||||
body {
|
||||
background-color: var(--color-background);
|
||||
}
|
||||
|
||||
.navbar-dark {
|
||||
background-color: rgba(0, 0, 0, 0.8) !important;
|
||||
}
|
||||
|
||||
.bg-light {
|
||||
background-color: var(--color-background-tertiary) !important;
|
||||
}
|
||||
|
||||
.bg-dark {
|
||||
background-color: var(--color-background-tertiary) !important;
|
||||
}
|
||||
|
||||
.text-dark {
|
||||
color: var(--color-text) !important;
|
||||
}
|
||||
|
||||
.form-control {
|
||||
background-color: var(--color-background-secondary);
|
||||
border-color: var(--color-border);
|
||||
color: var(--color-text);
|
||||
}
|
||||
}
|
||||
|
||||
html {
|
||||
position: relative;
|
||||
min-height: 100%;
|
||||
scroll-behavior: smooth;
|
||||
-webkit-font-smoothing: antialiased;
|
||||
-moz-osx-font-smoothing: grayscale;
|
||||
}
|
||||
|
||||
body {
|
||||
font-family: var(--font-family);
|
||||
font-size: var(--font-size-base);
|
||||
font-weight: var(--font-weight-regular);
|
||||
color: var(--color-text);
|
||||
background-color: var(--color-background);
|
||||
padding-top: 56px;
|
||||
margin-bottom: 100px;
|
||||
line-height: var(--line-height-base);
|
||||
letter-spacing: -0.022em;
|
||||
}
|
||||
|
||||
/* Skip link for accessibility */
|
||||
.skip-link {
|
||||
position: absolute;
|
||||
top: -40px;
|
||||
left: 0;
|
||||
background: var(--color-primary);
|
||||
color: #fff;
|
||||
padding: 8px 16px;
|
||||
z-index: 9999;
|
||||
transition: top var(--transition-normal);
|
||||
border-radius: 0 0 var(--radius-sm) 0;
|
||||
}
|
||||
|
||||
.skip-link:focus {
|
||||
top: 0;
|
||||
}
|
||||
|
||||
section {
|
||||
padding: 80px 0;
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
}
|
||||
|
||||
/* Links */
|
||||
a {
|
||||
color: var(--color-primary);
|
||||
text-decoration: none;
|
||||
transition: color var(--transition-fast), opacity var(--transition-fast);
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: var(--color-primary-hover);
|
||||
}
|
||||
|
||||
a:focus {
|
||||
outline: 2px solid var(--color-primary);
|
||||
outline-offset: 2px;
|
||||
border-radius: 4px;
|
||||
}
|
||||
|
||||
/* Typography */
|
||||
h1, h2, h3, h4, h5, h6 {
|
||||
font-weight: var(--font-weight-semibold);
|
||||
letter-spacing: -0.022em;
|
||||
color: var(--color-text);
|
||||
}
|
||||
|
||||
h1.title {
|
||||
font-size: var(--font-size-h1);
|
||||
line-height: var(--line-height-tight);
|
||||
font-weight: var(--font-weight-bold);
|
||||
margin-bottom: 1.5rem;
|
||||
}
|
||||
|
||||
h2.title {
|
||||
font-size: var(--font-size-h2);
|
||||
line-height: var(--line-height-tight);
|
||||
font-weight: var(--font-weight-semibold);
|
||||
margin-bottom: 1rem;
|
||||
}
|
||||
|
||||
h2.title a {
|
||||
color: var(--color-text);
|
||||
text-decoration: none;
|
||||
transition: color var(--transition-fast);
|
||||
}
|
||||
|
||||
h2.title a:hover {
|
||||
color: var(--color-primary);
|
||||
}
|
||||
|
||||
/* Code blocks */
|
||||
pre,
|
||||
code {
|
||||
background: var(--color-background-tertiary);
|
||||
color: var(--color-text);
|
||||
font-family: "SF Mono", SFMono-Regular, ui-monospace, Menlo, Monaco, monospace;
|
||||
font-size: var(--font-size-sm);
|
||||
border-radius: var(--radius-sm);
|
||||
}
|
||||
|
||||
pre {
|
||||
padding: var(--spacing-md);
|
||||
overflow-x: auto;
|
||||
border: 1px solid var(--color-border-light);
|
||||
}
|
||||
|
||||
code {
|
||||
display: inline-block;
|
||||
padding: 0.125em 0.5em;
|
||||
line-height: 1.5;
|
||||
}
|
||||
|
||||
/* Tables */
|
||||
table {
|
||||
empty-cells: show;
|
||||
border: 1px solid var(--color-border-light);
|
||||
width: 100%;
|
||||
font-size: var(--font-size-base);
|
||||
margin-bottom: var(--spacing-md);
|
||||
border-collapse: collapse;
|
||||
border-radius: var(--radius-md);
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
thead {
|
||||
background-color: var(--color-background-tertiary);
|
||||
color: var(--color-text);
|
||||
text-align: left;
|
||||
vertical-align: bottom;
|
||||
font-weight: var(--font-weight-medium);
|
||||
}
|
||||
|
||||
tr {
|
||||
display: table-row;
|
||||
vertical-align: inherit;
|
||||
border-color: inherit;
|
||||
}
|
||||
|
||||
tbody tr:nth-child(even) {
|
||||
background-color: var(--color-background-secondary);
|
||||
}
|
||||
|
||||
tbody tr:hover {
|
||||
background-color: var(--color-background-tertiary);
|
||||
}
|
||||
|
||||
th,
|
||||
td {
|
||||
padding: 0.75em 1em;
|
||||
border-bottom: 1px solid var(--color-border-light);
|
||||
}
|
||||
|
||||
/* Blockquote */
|
||||
blockquote {
|
||||
padding: var(--spacing-md) var(--spacing-lg);
|
||||
margin: var(--spacing-lg) 0;
|
||||
border-left: 4px solid var(--color-primary);
|
||||
font-style: italic;
|
||||
background-color: var(--color-background-secondary);
|
||||
border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
.bi {
|
||||
margin-right: 0.5rem !important;
|
||||
}
|
||||
|
||||
/* Buttons */
|
||||
.btn {
|
||||
font-weight: var(--font-weight-medium);
|
||||
border-radius: var(--radius-xl);
|
||||
padding: 0.5rem 1.25rem;
|
||||
transition: all var(--transition-fast);
|
||||
border: none;
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
background: var(--color-primary);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.btn-primary:hover {
|
||||
background: var(--color-primary-hover);
|
||||
transform: scale(1.02);
|
||||
}
|
||||
|
||||
.btn-outline-primary {
|
||||
background: transparent;
|
||||
color: var(--color-primary);
|
||||
border: 1.5px solid var(--color-primary);
|
||||
}
|
||||
|
||||
.btn-outline-primary:hover {
|
||||
background: var(--color-primary);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.btn:focus {
|
||||
box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.3);
|
||||
}
|
||||
|
||||
/* Paginator */
|
||||
.paginator {
|
||||
margin-top: var(--spacing-2xl);
|
||||
margin-bottom: var(--spacing-3xl);
|
||||
}
|
||||
|
||||
.paginator .pagination {
|
||||
gap: var(--spacing-sm);
|
||||
}
|
||||
|
||||
.paginator .page-item .page-link {
|
||||
border: none;
|
||||
background: var(--color-background-tertiary);
|
||||
color: var(--color-text);
|
||||
border-radius: var(--radius-xl);
|
||||
padding: 0.5rem 1rem;
|
||||
font-weight: var(--font-weight-medium);
|
||||
transition: all var(--transition-fast);
|
||||
}
|
||||
|
||||
.paginator .page-item .page-link:hover {
|
||||
background: var(--color-primary);
|
||||
color: #fff;
|
||||
}
|
||||
|
||||
.paginator .page-item.disabled .page-link {
|
||||
background: var(--color-background-secondary);
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
.paginator .page-link:focus {
|
||||
box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.3);
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Navbar - Apple style frosted glass effect
|
||||
========================================================================== */
|
||||
|
||||
.navbar {
|
||||
transition: background-color var(--transition-normal);
|
||||
backdrop-filter: saturate(180%) blur(20px);
|
||||
-webkit-backdrop-filter: saturate(180%) blur(20px);
|
||||
background-color: rgba(29, 29, 31, 0.8) !important;
|
||||
}
|
||||
|
||||
.navbar-brand {
|
||||
font-weight: var(--font-weight-semibold);
|
||||
font-size: var(--font-size-h4);
|
||||
letter-spacing: -0.01em;
|
||||
}
|
||||
|
||||
img.nav-svg-icon {
|
||||
width: 1rem;
|
||||
height: 1rem;
|
||||
padding-bottom: 2px;
|
||||
transition: opacity var(--transition-fast);
|
||||
filter: brightness(0) invert(1);
|
||||
}
|
||||
|
||||
img.nav-svg-icon:hover {
|
||||
opacity: 0.7;
|
||||
}
|
||||
|
||||
.nav-link {
|
||||
font-size: var(--font-size-sm);
|
||||
font-weight: var(--font-weight-medium);
|
||||
letter-spacing: 0.02em;
|
||||
transition: color var(--transition-fast);
|
||||
padding: 0.5rem 0.75rem !important;
|
||||
}
|
||||
|
||||
.nav-item.active .nav-link {
|
||||
font-weight: var(--font-weight-semibold);
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Footer
|
||||
========================================================================== */
|
||||
|
||||
footer.footer {
|
||||
position: absolute;
|
||||
bottom: 0;
|
||||
width: 100%;
|
||||
min-height: 60px;
|
||||
padding: var(--spacing-lg) 0;
|
||||
font-size: 0.75rem;
|
||||
background-color: var(--color-background-tertiary) !important;
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
footer.footer.bg-dark {
|
||||
background-color: var(--color-background-tertiary) !important;
|
||||
}
|
||||
|
||||
footer.footer .text-white {
|
||||
color: var(--color-text-muted) !important;
|
||||
}
|
||||
|
||||
footer.footer a {
|
||||
color: var(--color-primary) !important;
|
||||
}
|
||||
|
||||
footer.footer a:hover {
|
||||
color: var(--color-primary-hover) !important;
|
||||
}
|
||||
|
||||
.mini-logo {
|
||||
height: 18px;
|
||||
padding-bottom: 3px;
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Hero Section - Clean Modern Header
|
||||
========================================================================== */
|
||||
|
||||
.hero {
|
||||
padding: 100px 0 60px;
|
||||
background: var(--color-background-secondary);
|
||||
}
|
||||
|
||||
.hero-content {
|
||||
max-width: 680px;
|
||||
margin: 0 auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.hero-title {
|
||||
font-size: var(--font-size-h1);
|
||||
font-weight: var(--font-weight-bold);
|
||||
color: var(--color-text);
|
||||
margin-bottom: var(--spacing-sm);
|
||||
letter-spacing: -0.02em;
|
||||
line-height: var(--line-height-tight);
|
||||
}
|
||||
|
||||
.hero-subtitle {
|
||||
color: var(--color-text-secondary);
|
||||
font-size: var(--font-size-lg);
|
||||
font-weight: var(--font-weight-regular);
|
||||
line-height: var(--line-height-base);
|
||||
margin: 0 auto;
|
||||
max-width: 500px;
|
||||
}
|
||||
|
||||
.hero-search {
|
||||
margin-top: var(--spacing-xl);
|
||||
}
|
||||
|
||||
.search-input-wrapper {
|
||||
position: relative;
|
||||
max-width: 320px;
|
||||
margin: 0 auto;
|
||||
}
|
||||
|
||||
.search-icon {
|
||||
position: absolute;
|
||||
right: 14px;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
color: var(--color-text-muted);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
.hero-search .form-control {
|
||||
border-radius: var(--radius-full);
|
||||
border: 1px solid var(--color-border);
|
||||
padding: 0.75rem 1rem 0.75rem 42px;
|
||||
font-size: var(--font-size-base);
|
||||
transition: all var(--transition-fast);
|
||||
background-color: var(--color-background-secondary);
|
||||
width: 100%;
|
||||
}
|
||||
|
||||
.hero-search .form-control:focus {
|
||||
border-color: var(--color-primary);
|
||||
box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.1);
|
||||
background-color: var(--color-background);
|
||||
}
|
||||
|
||||
.hero-search .form-control::placeholder {
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
@media (min-width: 768px) {
|
||||
.hero {
|
||||
padding: 120px 0 80px;
|
||||
}
|
||||
|
||||
.hero-subtitle {
|
||||
font-size: var(--font-size-xl);
|
||||
}
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Search form (for non-hero contexts)
|
||||
========================================================================== */
|
||||
|
||||
.search-form .form-control {
|
||||
border-radius: var(--radius-lg);
|
||||
border: 1px solid var(--color-border);
|
||||
padding: 0.625rem 1rem;
|
||||
font-size: var(--font-size-base);
|
||||
transition: all var(--transition-fast);
|
||||
background-color: var(--color-background);
|
||||
}
|
||||
|
||||
.search-form .form-control:focus {
|
||||
border-color: var(--color-primary);
|
||||
box-shadow: 0 0 0 4px rgba(0, 113, 227, 0.15);
|
||||
}
|
||||
|
||||
.search-form .btn {
|
||||
border-radius: var(--radius-lg);
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Home - Articles List
|
||||
========================================================================== */
|
||||
|
||||
article.home-page {
|
||||
padding: var(--spacing-2xl) 0;
|
||||
border-bottom: 1px solid var(--color-border-light);
|
||||
position: relative;
|
||||
background: var(--color-background);
|
||||
}
|
||||
|
||||
article.home-page:nth-child(even) {
|
||||
background: var(--color-background);
|
||||
}
|
||||
|
||||
article.home-page:last-child {
|
||||
border-bottom: none;
|
||||
}
|
||||
|
||||
article.home-page header {
|
||||
margin-bottom: var(--spacing-sm);
|
||||
}
|
||||
|
||||
article.home-page h2.title {
|
||||
margin-bottom: var(--spacing-xs);
|
||||
}
|
||||
|
||||
/* Fix: Article footer should not be positioned absolutely */
|
||||
article.home-page footer.mt-3 {
|
||||
position: static;
|
||||
background: transparent !important;
|
||||
padding: 0;
|
||||
min-height: auto;
|
||||
width: auto;
|
||||
margin-top: var(--spacing-md) !important;
|
||||
}
|
||||
|
||||
article.home-page footer.mt-3 small {
|
||||
font-size: var(--font-size-sm);
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Page article styles
|
||||
========================================================================== */
|
||||
|
||||
article.page {
|
||||
padding: var(--spacing-2xl) 0;
|
||||
}
|
||||
|
||||
.page-header {
|
||||
margin-bottom: var(--spacing-xl);
|
||||
}
|
||||
|
||||
.page-meta {
|
||||
font-size: var(--font-size-base);
|
||||
color: var(--color-text-muted);
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: var(--spacing-md);
|
||||
}
|
||||
|
||||
.page-meta span {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.page-cover-image-wrapper {
|
||||
margin-bottom: var(--spacing-xl);
|
||||
}
|
||||
|
||||
.page-cover-image {
|
||||
border-radius: var(--radius-lg);
|
||||
box-shadow: var(--shadow-lg);
|
||||
}
|
||||
|
||||
.page-description {
|
||||
color: var(--color-text-muted);
|
||||
font-size: var(--font-size-lg);
|
||||
line-height: var(--line-height-loose);
|
||||
margin-bottom: var(--spacing-lg);
|
||||
}
|
||||
|
||||
.page-content {
|
||||
font-size: var(--font-size-base);
|
||||
line-height: var(--line-height-loose);
|
||||
}
|
||||
|
||||
.page-content img {
|
||||
border-radius: var(--radius-md);
|
||||
margin: var(--spacing-lg) 0;
|
||||
box-shadow: var(--shadow-sm);
|
||||
}
|
||||
|
||||
.page-content p {
|
||||
margin-bottom: var(--spacing-lg);
|
||||
}
|
||||
|
||||
.page-content h2,
|
||||
.page-content h3,
|
||||
.page-content h4 {
|
||||
margin-top: var(--spacing-2xl);
|
||||
margin-bottom: var(--spacing-md);
|
||||
}
|
||||
|
||||
.page-excerpt {
|
||||
color: var(--color-text);
|
||||
line-height: var(--line-height-base);
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
VIDEO EMBED RESPONSIVE
|
||||
========================================================================== */
|
||||
|
||||
.video-embed {
|
||||
overflow: hidden;
|
||||
padding-bottom: 56.25%;
|
||||
position: relative;
|
||||
height: 0;
|
||||
margin: var(--spacing-lg) 0;
|
||||
border-radius: var(--radius-md);
|
||||
box-shadow: var(--shadow-md);
|
||||
}
|
||||
|
||||
.video-embed iframe {
|
||||
left: 0;
|
||||
top: 0;
|
||||
height: 100%;
|
||||
width: 100%;
|
||||
position: absolute;
|
||||
border: none;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Screen reader only - for accessibility
|
||||
========================================================================== */
|
||||
|
||||
.sr-only {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
height: 1px;
|
||||
padding: 0;
|
||||
margin: -1px;
|
||||
overflow: hidden;
|
||||
clip: rect(0, 0, 0, 0);
|
||||
white-space: nowrap;
|
||||
border: 0;
|
||||
}
|
||||
|
||||
.sr-only-focusable:focus {
|
||||
position: static;
|
||||
width: auto;
|
||||
height: auto;
|
||||
padding: inherit;
|
||||
margin: inherit;
|
||||
overflow: visible;
|
||||
clip: auto;
|
||||
white-space: normal;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Print styles
|
||||
========================================================================== */
|
||||
|
||||
@media print {
|
||||
.navbar,
|
||||
footer.footer,
|
||||
.paginator,
|
||||
.btn,
|
||||
.search-form {
|
||||
display: none !important;
|
||||
}
|
||||
|
||||
body {
|
||||
padding-top: 0;
|
||||
margin-bottom: 0;
|
||||
color: #000;
|
||||
background: #fff;
|
||||
}
|
||||
|
||||
article.page,
|
||||
article.home-page {
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #000;
|
||||
text-decoration: underline;
|
||||
}
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Reduce motion for users who prefer it
|
||||
========================================================================== */
|
||||
|
||||
@media (prefers-reduced-motion: reduce) {
|
||||
html {
|
||||
scroll-behavior: auto;
|
||||
}
|
||||
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
animation-duration: 0.01ms !important;
|
||||
animation-iteration-count: 1 !important;
|
||||
transition-duration: 0.01ms !important;
|
||||
}
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Utility classes
|
||||
========================================================================== */
|
||||
|
||||
.text-muted {
|
||||
color: var(--color-text-muted) !important;
|
||||
}
|
||||
|
||||
.text-primary {
|
||||
color: var(--color-primary) !important;
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Breadcrumb Navigation (SEO)
|
||||
========================================================================== */
|
||||
|
||||
.breadcrumb-nav {
|
||||
padding: var(--spacing-md) 0;
|
||||
background-color: var(--color-background-secondary);
|
||||
border-bottom: 1px solid var(--color-border-light);
|
||||
}
|
||||
|
||||
.breadcrumb {
|
||||
font-size: var(--font-size-sm);
|
||||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.breadcrumb-item + .breadcrumb-item::before {
|
||||
content: "›";
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
.breadcrumb-item a {
|
||||
color: var(--color-primary);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.breadcrumb-item a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.breadcrumb-item.active {
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
/* ==========================================================================
|
||||
Article Footer Fix (not the main footer)
|
||||
========================================================================== */
|
||||
|
||||
.article-footer,
|
||||
article.home-page footer.article-footer {
|
||||
position: static !important;
|
||||
background: transparent !important;
|
||||
padding: 0 !important;
|
||||
min-height: auto !important;
|
||||
width: auto !important;
|
||||
font-size: inherit !important;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg aria-labelledby="simpleicons-bluesky-icon" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<title id="simpleicons-bluesky-icon">Bluesky icon</title>
|
||||
<path d="M12 10.8c-1.087-2.114-4.046-6.053-6.798-7.995C2.566.944 1.561 1.266.902 1.565C.139 1.908 0 3.08 0 3.768c0 .69.378 5.65.624 6.479c.815 2.736 3.713 3.66 6.383 3.364q.204-.03.415-.056q-.207.033-.415.056c-3.912.58-7.387 2.005-2.83 7.078c5.013 5.19 6.87-1.113 7.823-4.308c.953 3.195 2.05 9.271 7.733 4.308c4.267-4.308 1.172-6.498-2.74-7.078a9 9 0 0 1-.415-.056q.21.026.415.056c2.67.297 5.568-.628 6.383-3.364c.246-.828.624-5.79.624-6.478c0-.69-.139-1.861-.902-2.206c-.659-.298-1.664-.62-4.3 1.24C16.046 4.748 13.087 8.687 12 10.8" style="fill: rgba(255, 255, 255, 0.5)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 799 B |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg aria-labelledby="simpleicons-codepen-icon" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<title id="simpleicons-codepen-icon">CodePen icon</title>
|
||||
<path d="M24 8.182l-.018-.087-.017-.05c-.01-.024-.018-.05-.03-.075-.003-.018-.015-.034-.02-.05l-.035-.067-.03-.05-.044-.06-.046-.045-.06-.045-.046-.03-.06-.044-.044-.04-.015-.02L12.58.19c-.347-.232-.796-.232-1.142 0L.453 7.502l-.015.015-.044.035-.06.05-.038.04-.05.056-.037.045-.05.06c-.02.017-.03.03-.03.046l-.05.06-.02.06c-.02.01-.02.04-.03.07l-.01.05C0 8.12 0 8.15 0 8.18v7.497c0 .044.003.09.01.135l.01.046c.005.03.01.06.02.086l.015.05c.01.027.016.053.027.075l.022.05c0 .01.015.04.03.06l.03.04c.015.01.03.04.045.06l.03.04.04.04c.01.013.01.03.03.03l.06.042.04.03.01.014 10.97 7.33c.164.12.375.163.57.163s.39-.06.57-.18l10.99-7.28.014-.01.046-.037.06-.043.048-.036.052-.058.033-.045.04-.06.03-.05.03-.07.016-.052.03-.077.015-.045.03-.08v-7.5c0-.05 0-.095-.016-.14l-.014-.045.044.003zm-11.99 6.28l-3.65-2.44 3.65-2.442 3.65 2.44-3.65 2.44zm-1.034-6.674l-4.473 2.99L2.89 8.362l8.086-5.39V7.79zm-6.33 4.233l-2.582 1.73V10.3l2.582 1.726zm1.857 1.25l4.473 2.99v4.82L2.89 15.69l3.618-2.417v-.004zm6.537 2.99l4.474-2.98 3.613 2.42-8.087 5.39v-4.82zm6.33-4.23l2.583-1.72v3.456l-2.583-1.73zm-1.855-1.24L13.042 7.8V2.97l8.085 5.39-3.612 2.415v.003z" style="fill: rgba(255, 255, 255, 0.5);"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.4 KiB |
@@ -0,0 +1 @@
|
||||
<svg aria-labelledby="simpleicons-dribbble-icon" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title id="simpleicons-dribbble-icon">Dribbble icon</title><path d="M12 24C5.385 24 0 18.615 0 12S5.385 0 12 0s12 5.385 12 12-5.385 12-12 12zm10.12-10.358c-.35-.11-3.17-.953-6.384-.438 1.34 3.684 1.887 6.684 1.992 7.308 2.3-1.555 3.936-4.02 4.395-6.87zm-6.115 7.808c-.153-.9-.75-4.032-2.19-7.77l-.066.02c-5.79 2.015-7.86 6.017-8.04 6.4 1.73 1.358 3.92 2.166 6.29 2.166 1.42 0 2.77-.29 4-.816zm-11.62-2.58c.232-.4 3.045-5.055 8.332-6.765.135-.045.27-.084.405-.12-.26-.585-.54-1.167-.832-1.74C7.17 11.775 2.206 11.71 1.756 11.7l-.004.312c0 2.633.998 5.037 2.634 6.855zm-2.42-8.955c.46.008 4.683.026 9.477-1.248-1.698-3.018-3.53-5.558-3.8-5.928-2.868 1.35-5.01 3.99-5.676 7.176zM9.6 2.052c.282.38 2.145 2.914 3.822 6 3.645-1.365 5.19-3.44 5.373-3.702-1.81-1.61-4.19-2.586-6.795-2.586-.807 0-1.59.098-2.4.288zm10.335 3.483c-.218.29-1.935 2.493-5.724 4.04.24.49.47.985.68 1.486.08.18.15.36.22.53 3.41-.43 6.8.26 7.14.33-.02-2.42-.88-4.64-2.31-6.386z" style="fill: rgba(255, 255, 255, 0.5);"/></svg>
|
||||
|
After Width: | Height: | Size: 1.1 KiB |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg aria-labelledby="simpleicons-facebook-icon" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<title id="simpleicons-facebook-icon">Facebook icon</title>
|
||||
<path d="M22.676 0H1.324C.593 0 0 .593 0 1.324v21.352C0 23.408.593 24 1.324 24h11.494v-9.294H9.689v-3.621h3.129V8.41c0-3.099 1.894-4.785 4.659-4.785 1.325 0 2.464.097 2.796.141v3.24h-1.921c-1.5 0-1.792.721-1.792 1.771v2.311h3.584l-.465 3.63H16.56V24h6.115c.733 0 1.325-.592 1.325-1.324V1.324C24 .593 23.408 0 22.676 0" style="fill: rgba(255, 255, 255, 0.5);"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 586 B |
|
After Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg aria-labelledby="simpleicons-github-icon" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<title id="simpleicons-github-icon">GitHub icon</title>
|
||||
<path d="M12 .297c-6.63 0-12 5.373-12 12 0 5.303 3.438 9.8 8.205 11.385.6.113.82-.258.82-.577 0-.285-.01-1.04-.015-2.04-3.338.724-4.042-1.61-4.042-1.61C4.422 18.07 3.633 17.7 3.633 17.7c-1.087-.744.084-.729.084-.729 1.205.084 1.838 1.236 1.838 1.236 1.07 1.835 2.809 1.305 3.495.998.108-.776.417-1.305.76-1.605-2.665-.3-5.466-1.332-5.466-5.93 0-1.31.465-2.38 1.235-3.22-.135-.303-.54-1.523.105-3.176 0 0 1.005-.322 3.3 1.23.96-.267 1.98-.399 3-.405 1.02.006 2.04.138 3 .405 2.28-1.552 3.285-1.23 3.285-1.23.645 1.653.24 2.873.12 3.176.765.84 1.23 1.91 1.23 3.22 0 4.61-2.805 5.625-5.475 5.92.42.36.81 1.096.81 2.22 0 1.606-.015 2.896-.015 3.286 0 .315.21.69.825.57C20.565 22.092 24 17.592 24 12.297c0-6.627-5.373-12-12-12" style="fill: rgba(255, 255, 255, 0.5);"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 984 B |
@@ -0,0 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>GitLab icon</title><path d="M23.955 13.587l-1.342-4.135-2.664-8.189c-.135-.423-.73-.423-.867 0L16.418 9.45H7.582L4.919 1.263C4.783.84 4.185.84 4.05 1.26L1.386 9.449.044 13.587c-.121.375.014.789.331 1.023L12 23.054l11.625-8.443c.318-.235.453-.647.33-1.024" style="fill: rgba(255, 255, 255, 0.5);"/></svg>
|
||||
|
After Width: | Height: | Size: 381 B |
@@ -0,0 +1 @@
|
||||
<svg aria-labelledby="simpleicons-instagram-icon" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title id="simpleicons-instagram-icon">Instagram icon</title><path d="M12 0C8.74 0 8.333.015 7.053.072 5.775.132 4.905.333 4.14.63c-.789.306-1.459.717-2.126 1.384S.935 3.35.63 4.14C.333 4.905.131 5.775.072 7.053.012 8.333 0 8.74 0 12s.015 3.667.072 4.947c.06 1.277.261 2.148.558 2.913.306.788.717 1.459 1.384 2.126.667.666 1.336 1.079 2.126 1.384.766.296 1.636.499 2.913.558C8.333 23.988 8.74 24 12 24s3.667-.015 4.947-.072c1.277-.06 2.148-.262 2.913-.558.788-.306 1.459-.718 2.126-1.384.666-.667 1.079-1.335 1.384-2.126.296-.765.499-1.636.558-2.913.06-1.28.072-1.687.072-4.947s-.015-3.667-.072-4.947c-.06-1.277-.262-2.149-.558-2.913-.306-.789-.718-1.459-1.384-2.126C21.319 1.347 20.651.935 19.86.63c-.765-.297-1.636-.499-2.913-.558C15.667.012 15.26 0 12 0zm0 2.16c3.203 0 3.585.016 4.85.071 1.17.055 1.805.249 2.227.415.562.217.96.477 1.382.896.419.42.679.819.896 1.381.164.422.36 1.057.413 2.227.057 1.266.07 1.646.07 4.85s-.015 3.585-.074 4.85c-.061 1.17-.256 1.805-.421 2.227-.224.562-.479.96-.899 1.382-.419.419-.824.679-1.38.896-.42.164-1.065.36-2.235.413-1.274.057-1.649.07-4.859.07-3.211 0-3.586-.015-4.859-.074-1.171-.061-1.816-.256-2.236-.421-.569-.224-.96-.479-1.379-.899-.421-.419-.69-.824-.9-1.38-.165-.42-.359-1.065-.42-2.235-.045-1.26-.061-1.649-.061-4.844 0-3.196.016-3.586.061-4.861.061-1.17.255-1.814.42-2.234.21-.57.479-.96.9-1.381.419-.419.81-.689 1.379-.898.42-.166 1.051-.361 2.221-.421 1.275-.045 1.65-.06 4.859-.06l.045.03zm0 3.678c-3.405 0-6.162 2.76-6.162 6.162 0 3.405 2.76 6.162 6.162 6.162 3.405 0 6.162-2.76 6.162-6.162 0-3.405-2.76-6.162-6.162-6.162zM12 16c-2.21 0-4-1.79-4-4s1.79-4 4-4 4 1.79 4 4-1.79 4-4 4zm7.846-10.405c0 .795-.646 1.44-1.44 1.44-.795 0-1.44-.646-1.44-1.44 0-.794.646-1.439 1.44-1.439.793-.001 1.44.645 1.44 1.439z" style="fill: rgba(255, 255, 255, 0.5);"/></svg>
|
||||
|
After Width: | Height: | Size: 1.9 KiB |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg aria-labelledby="simpleicons-linkedin-icon" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<title id="simpleicons-linkedin-icon">LinkedIn icon</title>
|
||||
<path d="M20.447 20.452h-3.554v-5.569c0-1.328-.027-3.037-1.852-3.037-1.853 0-2.136 1.445-2.136 2.939v5.667H9.351V9h3.414v1.561h.046c.477-.9 1.637-1.85 3.37-1.85 3.601 0 4.267 2.37 4.267 5.455v6.286zM5.337 7.433c-1.144 0-2.063-.926-2.063-2.065 0-1.138.92-2.063 2.063-2.063 1.14 0 2.064.925 2.064 2.063 0 1.139-.925 2.065-2.064 2.065zm1.782 13.019H3.555V9h3.564v11.452zM22.225 0H1.771C.792 0 0 .774 0 1.729v20.542C0 23.227.792 24 1.771 24h20.451C23.2 24 24 23.227 24 22.271V1.729C24 .774 23.2 0 22.222 0h.003z" style="fill: rgb(154, 157, 160);"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 770 B |
@@ -0,0 +1 @@
|
||||
<svg role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24"><title>Mastodon icon</title><path d="M23.193 7.879c0-5.206-3.411-6.732-3.411-6.732C18.062.357 15.108.025 12.041 0h-.076c-3.068.025-6.02.357-7.74 1.147 0 0-3.411 1.526-3.411 6.732 0 1.192-.023 2.618.015 4.129.124 5.092.934 10.109 5.641 11.355 2.17.574 4.034.695 5.535.612 2.722-.15 4.25-.972 4.25-.972l-.09-1.975s-1.945.613-4.129.539c-2.165-.074-4.449-.233-4.799-2.891a5.499 5.499 0 0 1-.048-.745s2.125.52 4.817.643c1.646.075 3.19-.097 4.758-.283 3.007-.359 5.625-2.212 5.954-3.905.517-2.665.475-6.507.475-6.507zm-4.024 6.709h-2.497V8.469c0-1.29-.543-1.944-1.628-1.944-1.2 0-1.802.776-1.802 2.312v3.349h-2.483v-3.35c0-1.536-.602-2.312-1.802-2.312-1.085 0-1.628.655-1.628 1.944v6.119H4.832V8.284c0-1.289.328-2.313.987-3.07.68-.758 1.569-1.146 2.674-1.146 1.278 0 2.246.491 2.886 1.474L12 6.585l.622-1.043c.64-.983 1.608-1.474 2.886-1.474 1.104 0 1.994.388 2.674 1.146.658.757.986 1.781.986 3.07v6.304z" style="fill: rgba(255, 255, 255, 0.5);"/></svg>
|
||||
|
After Width: | Height: | Size: 1019 B |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg aria-labelledby="simpleicons-rss-icon" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<title id="simpleicons-rss-icon">RSS icon</title>
|
||||
<path d="M19.199 24C19.199 13.467 10.533 4.8 0 4.8V0c13.165 0 24 10.835 24 24h-4.801zM3.291 17.415c1.814 0 3.293 1.479 3.293 3.295 0 1.813-1.485 3.29-3.301 3.29C1.47 24 0 22.526 0 20.71s1.475-3.294 3.291-3.295zM15.909 24h-4.665c0-6.169-5.075-11.245-11.244-11.245V8.09c8.727 0 15.909 7.184 15.909 15.91z" style="fill: rgb(154, 157, 160);"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 550 B |
@@ -0,0 +1,32 @@
|
||||
|
||||
<svg height="800px" width="800px" version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
viewBox="0 0 512 512" xml:space="preserve">
|
||||
<path style="fill:#E1E1E3;" d="M483.643,42.893L18.751,222.234c-11.472,4.424-11.372,20.667,0.133,24.978l113.278,42.279
|
||||
l43.845,141.006c2.806,9.031,13.849,12.369,21.179,6.377l63.142-51.475c6.618-5.393,16.046-5.662,22.963-0.641l113.887,82.685
|
||||
c7.841,5.699,18.949,1.402,20.917-8.072l83.428-401.305C503.668,47.715,493.499,39.082,483.643,42.893z M395.044,136.412
|
||||
L221.27,297.943c-6.108,5.686-10.048,13.295-11.164,21.553l-5.92,43.868c-0.784,5.858-9.012,6.439-10.628,0.77l-22.766-79.994
|
||||
c-2.608-9.124,1.192-18.87,9.263-23.851l210.561-129.684C394.4,128.281,398.293,133.398,395.044,136.412z"/>
|
||||
<g>
|
||||
<path style="fill:#A0A0A1;" d="M405.003,480.205c-4.892,0-9.726-1.533-13.823-4.511l-113.882-82.681
|
||||
c-3.166-2.299-7.496-2.178-10.528,0.295l-63.14,51.473c-6.056,4.953-14.159,6.566-21.66,4.31
|
||||
c-7.506-2.258-13.377-8.077-15.703-15.566l-42.359-136.225L15.317,256.77C6.056,253.299,0.048,244.678,0,234.804
|
||||
c-0.047-9.865,5.873-18.534,15.08-22.085L479.972,33.377c8.041-3.106,17.12-1.571,23.698,4.005
|
||||
c6.587,5.584,9.589,14.303,7.838,22.755L428.08,461.446c-1.63,7.85-7.073,14.268-14.56,17.163
|
||||
C410.753,479.679,407.868,480.205,405.003,480.205z M272.231,370.973c5.976,0,11.962,1.835,17.052,5.531l113.887,82.685
|
||||
c1.212,0.881,2.397,0.624,2.997,0.393c0.596-0.23,1.64-0.833,1.942-2.284L491.536,55.99c0.33-1.592-0.519-2.593-1.054-3.047
|
||||
c-0.531-0.451-1.648-1.121-3.159-0.538c-0.003,0.001-0.006,0.002-0.008,0.003L22.423,231.751c-1.68,0.648-2.028,1.964-2.023,2.955
|
||||
c0.005,0.999,0.366,2.321,2.062,2.957l113.265,42.275c2.956,1.104,5.235,3.514,6.173,6.527l43.845,141.006
|
||||
c0.434,1.396,1.501,1.906,2.099,2.086c0.595,0.178,1.761,0.343,2.885-0.577l63.154-51.485
|
||||
C259.204,373.158,265.712,370.973,272.231,370.973z M198.75,378.286c-6.985,0-13.054-4.534-14.999-11.355l-22.768-80
|
||||
c-3.839-13.438,1.8-27.967,13.716-35.323l210.569-129.69c6.121-3.759,13.996-2.284,18.329,3.425
|
||||
c4.328,5.702,3.633,13.675-1.618,18.545L228.214,305.413c-4.359,4.058-7.204,9.548-8.001,15.45l-5.92,43.866
|
||||
c-0.992,7.412-6.901,12.974-14.367,13.515C199.532,378.272,199.139,378.286,198.75,378.286z M339.662,173.966l-154.258,95.007
|
||||
c-4.17,2.573-6.148,7.661-4.805,12.365l16.527,58.072l2.871-21.278c1.428-10.566,6.515-20.387,14.323-27.655L339.662,173.966z"/>
|
||||
<path style="fill:#A0A0A1;" d="M423.776,279.45c-0.717,0-1.444-0.075-2.174-0.234c-5.505-1.195-8.999-6.627-7.804-12.131l1.55-7.14
|
||||
c1.195-5.505,6.626-9,12.131-7.804c5.505,1.195,8.999,6.627,7.804,12.131l-1.55,7.14
|
||||
C432.697,276.188,428.471,279.45,423.776,279.45z"/>
|
||||
<path style="fill:#A0A0A1;" d="M391.668,427.341c-0.717,0-1.444-0.075-2.174-0.234c-5.504-1.195-8.998-6.627-7.803-12.131
|
||||
l23.459-108.051c1.194-5.505,6.62-8.999,12.132-7.804c5.504,1.195,8.998,6.627,7.803,12.131l-23.459,108.051
|
||||
C400.588,424.08,396.363,427.341,391.668,427.341z"/>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 2.9 KiB |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg aria-labelledby="simpleicons-twitter-icon" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<title id="simpleicons-twitter-icon">Twitter icon</title>
|
||||
<path d="M23.954 4.569c-.885.389-1.83.654-2.825.775 1.014-.611 1.794-1.574 2.163-2.723-.951.555-2.005.959-3.127 1.184-.896-.959-2.173-1.559-3.591-1.559-2.717 0-4.92 2.203-4.92 4.917 0 .39.045.765.127 1.124C7.691 8.094 4.066 6.13 1.64 3.161c-.427.722-.666 1.561-.666 2.475 0 1.71.87 3.213 2.188 4.096-.807-.026-1.566-.248-2.228-.616v.061c0 2.385 1.693 4.374 3.946 4.827-.413.111-.849.171-1.296.171-.314 0-.615-.03-.916-.086.631 1.953 2.445 3.377 4.604 3.417-1.68 1.319-3.809 2.105-6.102 2.105-.39 0-.779-.023-1.17-.067 2.189 1.394 4.768 2.209 7.557 2.209 9.054 0 13.999-7.496 13.999-13.986 0-.209 0-.42-.015-.63.961-.689 1.8-1.56 2.46-2.548l-.047-.02z" style="fill: rgba(255, 255, 255, 0.5);"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 916 B |
@@ -0,0 +1 @@
|
||||
<svg aria-labelledby="simpleicons-vk-icon" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title id="simpleicons-vk-icon">VK icon</title><path d="M15.684 0H8.316C1.592 0 0 1.592 0 8.316v7.368C0 22.408 1.592 24 8.316 24h7.368C22.408 24 24 22.408 24 15.684V8.316C24 1.592 22.408 0 15.684 0zm3.692 17.123h-1.744c-.66 0-.864-.525-2.05-1.727-1.033-1-1.49-1.135-1.744-1.135-.356 0-.458.102-.458.593v1.575c0 .424-.135.678-1.253.678-1.846 0-3.896-1.12-5.337-3.202C4.49 10.901 4 8.654 4 8.206c0-.254.102-.491.593-.491h1.744c.44 0 .61.203.78.677.864 2.49 2.303 4.675 2.896 4.675.22 0 .322-.102.322-.66V9.721c-.068-1.186-.695-1.287-.695-1.71 0-.204.17-.407.44-.407h2.744c.373 0 .508.203.508.643v3.473c0 .372.17.508.271.508.22 0 .407-.136.813-.542 1.253-1.406 2.15-3.574 2.15-3.574.119-.254.322-.491.762-.491h1.744c.525 0 .644.27.525.643-.22 1.017-2.354 4.031-2.354 4.031-.186.305-.254.44 0 .78.186.254.796.779 1.203 1.253.745.847 1.32 1.558 1.473 2.05.17.49-.085.745-.576.745z" style="fill: rgba(255, 255, 255, 0.5);"/></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1 @@
|
||||
<svg role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"><title>Xing icon</title><path d="M18.188 0c-.517 0-.741.325-.927.66 0 0-7.455 13.224-7.702 13.657.015.024 4.919 9.023 4.919 9.023.17.308.436.66.967.66h3.454c.211 0 .375-.078.463-.22.089-.151.089-.346-.009-.536l-4.879-8.916c-.004-.006-.004-.016 0-.022L22.139.756c.095-.191.097-.387.006-.535C22.056.078 21.894 0 21.686 0h-3.498zM3.648 4.74c-.211 0-.385.074-.473.216-.09.149-.078.339.02.531l2.34 4.05c.004.01.004.016 0 .021L1.86 16.051c-.099.188-.093.381 0 .529.085.142.239.234.45.234h3.461c.518 0 .766-.348.945-.667l3.734-6.609-2.378-4.155c-.172-.315-.434-.659-.962-.659H3.648v.016z" style="fill: rgba(255, 255, 255, 0.5);"/></svg>
|
||||
|
After Width: | Height: | Size: 701 B |
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<svg aria-labelledby="simpleicons-youtube-icon" role="img" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
|
||||
<title id="simpleicons-youtube-icon">Youtube icon</title>
|
||||
<path fill="currentColor" d="M23.498 6.186a3.02 3.02 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.02 3.02 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.02 3.02 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.02 3.02 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814M9.545 15.568V8.432L15.818 12z" style="fill: rgba(255, 255, 255, 0.5)"/>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 621 B |
@@ -0,0 +1,81 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="<?php echo Theme::lang() ?>">
|
||||
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
|
||||
<meta name="generator" content="Bludit">
|
||||
<meta name="theme-color" content="#1d1d1f">
|
||||
|
||||
<!-- Dynamic title tag -->
|
||||
<?php echo Theme::metaTagTitle(); ?>
|
||||
|
||||
<!-- Dynamic description tag -->
|
||||
<?php echo Theme::metaTagDescription(); ?>
|
||||
|
||||
<!-- Include Favicon -->
|
||||
<?php echo Theme::favicon('img/favicon.png'); ?>
|
||||
<link rel="apple-touch-icon" href="<?php echo DOMAIN_THEME_IMG . 'favicon.png'; ?>">
|
||||
|
||||
<!-- Include CSS Bootstrap file from Bludit Core -->
|
||||
<?php echo Theme::cssBootstrap(); ?>
|
||||
|
||||
<!-- Include CSS Bootstrap ICONS file from Bludit Core -->
|
||||
<?php echo Theme::cssBootstrapIcons(); ?>
|
||||
|
||||
<!-- Include CSS Styles from this theme -->
|
||||
<?php echo Theme::css('css/style.css'); ?>
|
||||
|
||||
<?php if ($themePlugin->googleFonts()) : ?>
|
||||
<link rel="stylesheet" href="https://fonts.googleapis.com/css?family=Open+Sans:sans,bold">
|
||||
<style>
|
||||
body {
|
||||
font-family: "Open Sans", sans-serif;
|
||||
}
|
||||
</style>
|
||||
<?php endif; ?>
|
||||
|
||||
<!-- Load Bludit Plugins: Site head -->
|
||||
<?php Theme::plugins('siteHead'); ?>
|
||||
</head>
|
||||
|
||||
<body>
|
||||
|
||||
<!-- Skip to main content link for accessibility -->
|
||||
<a class="skip-link sr-only sr-only-focusable" href="#main-content"><?php echo $L->get('Skip to main content'); ?></a>
|
||||
|
||||
<!-- Load Bludit Plugins: Site Body Begin -->
|
||||
<?php Theme::plugins('siteBodyBegin'); ?>
|
||||
|
||||
<!-- Navbar -->
|
||||
<?php include(THEME_DIR_PHP . 'navbar.php'); ?>
|
||||
|
||||
<!-- Content -->
|
||||
<div id="main-content">
|
||||
<?php
|
||||
// $WHERE_AM_I variable detect where the user is browsing
|
||||
// If the user is watching a particular page the variable takes the value "page"
|
||||
// If the user is watching the frontpage the variable takes the value "home"
|
||||
if ($WHERE_AM_I == 'page') {
|
||||
include(THEME_DIR_PHP . 'page.php');
|
||||
} else {
|
||||
include(THEME_DIR_PHP . 'home.php');
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
|
||||
<!-- Footer -->
|
||||
<?php include(THEME_DIR_PHP . 'footer.php'); ?>
|
||||
|
||||
<!-- Include Jquery file from Bludit Core -->
|
||||
<?php echo Theme::jquery(); ?>
|
||||
|
||||
<!-- Include javascript Bootstrap file from Bludit Core -->
|
||||
<?php echo Theme::jsBootstrap(); ?>
|
||||
|
||||
<!-- Load Bludit Plugins: Site Body End -->
|
||||
<?php Theme::plugins('siteBodyEnd'); ?>
|
||||
|
||||
</body>
|
||||
|
||||
</html>
|
||||
@@ -0,0 +1,15 @@
|
||||
<?php defined('BLUDIT') or die('Bludit CMS.');
|
||||
|
||||
// Check if the Alternative plugin is active
|
||||
if ($themePlugin === false || $themePlugin === null) {
|
||||
// Display a user-friendly error message
|
||||
$errorMessage = 'To ensure proper functionality, the theme requires the Alternative plugin. ';
|
||||
$errorMessage .= 'Please activate the plugin through the admin panel.';
|
||||
|
||||
// If in admin area, show link to plugins
|
||||
if (defined('ADMIN_CONTROLLER')) {
|
||||
$errorMessage .= ' <a href="' . DOMAIN_ADMIN . 'plugins">Go to Plugins</a>';
|
||||
}
|
||||
|
||||
exit('<div style="font-family: sans-serif; padding: 20px; background: #fff3cd; border: 1px solid #ffc107; border-radius: 4px; margin: 20px; color: #856404;">' . $errorMessage . '</div>');
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"theme-data":
|
||||
{
|
||||
"name": "Alternative",
|
||||
"description": "Einfaches und elegantes Theme für Websites und Blogs. Navigationsleiste mit statischen Seiten und Social Media Icons."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"theme-data":
|
||||
{
|
||||
"name": "Alternative",
|
||||
"description": "Einfaches und elegantes Theme für Websites und Blogs. Navigationsleiste mit statischen Seiten und Social Media Icons."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"theme-data":
|
||||
{
|
||||
"name": "Alternative",
|
||||
"description": "Simple and elegant theme for websites or blogs. Navbar with social media and static pages."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"theme-data":
|
||||
{
|
||||
"name": "Alternative",
|
||||
"description": "Tema sencillo y elegante para sitios webs o blogs. Barra de navegación con redes sociales y páginas estáticas."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"theme-data":
|
||||
{
|
||||
"name": "Alternative",
|
||||
"description": "قالبی ساده و ظریف برای ساخت وبسایت و یا وبلاگ. نوار ناوبری به همراه رسانه های اجتماعی و صفحات استاتیک."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"theme-data":
|
||||
{
|
||||
"name": "Alternative",
|
||||
"description": "Tema elegante e semplice per siti web e blog. Barra di navigazione con social media e pagine statiche."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"theme-data":
|
||||
{
|
||||
"name": "Alternative",
|
||||
"description": "ウェブサイトやブログ向けのシンプルでエレガントなテーマ。ソーシャルメディアと固定ページへリンクするNavbarを備えています。"
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"theme-data":
|
||||
{
|
||||
"name": "Alternative",
|
||||
"description": "Simpel en elegant thema voor websites of blogs. Navigatiebalk met social media en statische pagina's."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"theme-data":
|
||||
{
|
||||
"name": "Alternative",
|
||||
"description": "Простая и элегантная тема, отлично подходящая для веб-сайтов или блогов. Тема имеет боковую колонку с ссылками на социальные сети и списком статических страниц."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
{
|
||||
"theme-data":
|
||||
{
|
||||
"name": "Alternative",
|
||||
"description": "Web siteleri veya bloglar için basit ve zarif bir tema. Sosyal medya ve sabit sayfalarla kenar çubuğu."
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,11 @@
|
||||
{
|
||||
"author": "Bludit",
|
||||
"email": "",
|
||||
"website": "https://themes.bludit.com",
|
||||
"version": "3.22.0",
|
||||
"releaseDate": "2026-05-10",
|
||||
"license": "MIT",
|
||||
"compatible": "3.22",
|
||||
"notes": "Improved accessibility, SEO with Schema.org, responsive design, and performance",
|
||||
"plugin": "alternative"
|
||||
}
|
||||
@@ -0,0 +1,15 @@
|
||||
<footer class="footer bg-dark" role="contentinfo">
|
||||
<div class="container">
|
||||
<div class="d-flex flex-column flex-md-row justify-content-center align-items-center text-center text-white text-uppercase">
|
||||
<?php if (defined('BLUDIT_PRO')): ?>
|
||||
<span><?php echo $site->footer(); ?></span>
|
||||
<?php else: ?>
|
||||
<span class="mb-2 mb-md-0"><?php echo $site->footer(); ?></span>
|
||||
<span class="ml-md-4 text-warning">
|
||||
<img class="mini-logo" src="<?php echo DOMAIN_THEME_IMG.'favicon.png'; ?>" alt="Bludit logo" loading="lazy" />
|
||||
Powered by <a target="_blank" rel="noopener noreferrer" class="text-white" href="https://www.bludit.com">BLUDIT</a>
|
||||
</span>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</footer>
|
||||
@@ -0,0 +1,167 @@
|
||||
<!-- Hero Section -->
|
||||
<header class="hero" role="banner">
|
||||
<div class="container">
|
||||
<div class="hero-content">
|
||||
<!-- Site slogan as main headline (hidden during search) -->
|
||||
<?php if ($WHERE_AM_I !== 'search') : ?>
|
||||
<h1 class="hero-title"><?php echo $site->slogan(); ?></h1>
|
||||
|
||||
<!-- Site description -->
|
||||
<?php if ($site->description()) : ?>
|
||||
<p class="hero-subtitle"><?php echo $site->description(); ?></p>
|
||||
<?php endif ?>
|
||||
<?php endif ?>
|
||||
|
||||
<!-- Custom search form if the plugin "search" is enabled -->
|
||||
<?php
|
||||
if (pluginActivated('pluginSearch')) {
|
||||
$searchPlugin = getPlugin('pluginSearch');
|
||||
$showSearchBox = true;
|
||||
if ($WHERE_AM_I === 'search' && $searchPlugin->getResultCount() === 0) {
|
||||
$showSearchBox = false;
|
||||
}
|
||||
|
||||
if ($showSearchBox) : ?>
|
||||
<div class="hero-search">
|
||||
<form class="search-form" role="search" onsubmit="return searchNow();">
|
||||
<label for="search-input" class="sr-only"><?php $language->p('Search') ?></label>
|
||||
<div class="search-input-wrapper">
|
||||
<svg class="search-icon" width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true">
|
||||
<circle cx="11" cy="11" r="8"></circle>
|
||||
<path d="M21 21l-4.35-4.35"></path>
|
||||
</svg>
|
||||
<input id="search-input" class="form-control" type="search" placeholder="<?php $language->p('Search') ?>" aria-label="<?php $language->p('Search') ?>" value="<?php echo ($WHERE_AM_I==='search'?htmlspecialchars($searchPlugin->getSearchTerm(), ENT_QUOTES, 'UTF-8'):'') ?>">
|
||||
</div>
|
||||
</form>
|
||||
</div>
|
||||
<?php endif;
|
||||
}
|
||||
?>
|
||||
<?php if (pluginActivated('pluginSearch')) : ?>
|
||||
<script>
|
||||
function searchNow() {
|
||||
var searchValue = document.getElementById("search-input").value.trim();
|
||||
if (searchValue.length === 0) {
|
||||
return false;
|
||||
}
|
||||
var searchURL = "<?php echo Theme::siteUrl(); ?>search/";
|
||||
window.location.href = searchURL + encodeURIComponent(searchValue);
|
||||
return false;
|
||||
}
|
||||
</script>
|
||||
<?php endif ?>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
<!-- Main content area -->
|
||||
<main role="main">
|
||||
<?php if (empty($content)) : ?>
|
||||
<div class="text-center p-4">
|
||||
<p class="text-muted"><?php $language->p('No pages found') ?></p>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<!-- Print all the content -->
|
||||
<?php foreach ($content as $page) : ?>
|
||||
<article class="home-page" itemscope itemtype="https://schema.org/Article">
|
||||
<!-- Hidden SEO metadata for each article -->
|
||||
<div class="d-none" aria-hidden="true">
|
||||
<meta itemprop="mainEntityOfPage" content="<?php echo $page->permalink(); ?>" />
|
||||
<?php if ($page->coverImage()): ?>
|
||||
<meta itemprop="image" content="<?php echo $page->coverImage(); ?>" />
|
||||
<?php endif; ?>
|
||||
<span itemprop="author" itemscope itemtype="https://schema.org/Person">
|
||||
<meta itemprop="name" content="<?php echo $page->user('nickname'); ?>" />
|
||||
</span>
|
||||
<span itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
|
||||
<meta itemprop="name" content="<?php echo $site->title(); ?>" />
|
||||
<span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
|
||||
<meta itemprop="url" content="<?php echo DOMAIN_THEME_IMG . 'favicon.png'; ?>" />
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<!-- Load Bludit Plugins: Page Begin -->
|
||||
<?php Theme::plugins('pageBegin'); ?>
|
||||
|
||||
<!-- Page title -->
|
||||
<header>
|
||||
<h2 class="title" itemprop="headline">
|
||||
<a class="text-dark" href="<?php echo $page->permalink(); ?>" itemprop="url"><?php echo $page->title(); ?></a>
|
||||
</h2>
|
||||
</header>
|
||||
|
||||
<!-- Page description -->
|
||||
<?php if ($page->description()) : ?>
|
||||
<p class="page-description" itemprop="description"><?php echo $page->description(); ?></p>
|
||||
<?php endif ?>
|
||||
|
||||
<!-- Page content until the pagebreak -->
|
||||
<div class="page-excerpt" itemprop="articleBody">
|
||||
<?php echo $page->contentBreak(); ?>
|
||||
</div>
|
||||
|
||||
<!-- Shows "read more" button if necessary -->
|
||||
<?php if ($page->readMore()) : ?>
|
||||
<div class="text-right pt-3">
|
||||
<a class="btn btn-primary btn-sm" href="<?php echo $page->permalink(); ?>" role="button" aria-label="<?php echo $L->get('Read more'); ?> - <?php echo $page->title(); ?>"><?php echo $L->get('Read more'); ?></a>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<!-- Page date -->
|
||||
<footer class="mt-3 article-footer">
|
||||
<?php if ($themePlugin->dateFormat() == 'relative') : ?>
|
||||
<small class="text-muted"><time datetime="<?php echo $page->dateRaw('c'); ?>" itemprop="datePublished"><?php echo $page->relativeTime() ?></time></small>
|
||||
<?php elseif ($themePlugin->dateFormat() == 'absolute') : ?>
|
||||
<small class="text-muted"><time datetime="<?php echo $page->dateRaw('c'); ?>" itemprop="datePublished"><?php echo $page->date() ?></time></small>
|
||||
<?php endif ?>
|
||||
<?php if ($page->dateModified()): ?>
|
||||
<meta itemprop="dateModified" content="<?php echo $page->dateModified('c'); ?>" />
|
||||
<?php else: ?>
|
||||
<meta itemprop="dateModified" content="<?php echo $page->dateRaw('c'); ?>" />
|
||||
<?php endif; ?>
|
||||
</footer>
|
||||
|
||||
<!-- Load Bludit Plugins: Page End -->
|
||||
<?php Theme::plugins('pageEnd'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
<?php endforeach ?>
|
||||
</main>
|
||||
|
||||
<!-- Pagination -->
|
||||
<?php if (Paginator::numberOfPages() > 1) : ?>
|
||||
<nav class="paginator" aria-label="<?php echo $L->get('Page navigation'); ?>">
|
||||
<ul class="pagination flex-wrap justify-content-center">
|
||||
|
||||
<!-- Previous button -->
|
||||
<?php if (Paginator::showPrev()) : ?>
|
||||
<li class="page-item mr-2">
|
||||
<a class="page-link" href="<?php echo htmlspecialchars(Paginator::previousPageUrl(), ENT_QUOTES, 'UTF-8') ?>" rel="prev" aria-label="<?php echo $L->get('Previous'); ?>">
|
||||
<span aria-hidden="true">◀</span> <?php echo $L->get('Previous'); ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<!-- Home button -->
|
||||
<li class="page-item <?php if (Paginator::currentPage() == 1) echo 'disabled' ?>" aria-current="<?php echo (Paginator::currentPage() == 1) ? 'page' : 'false'; ?>">
|
||||
<a class="page-link" href="<?php echo Theme::siteUrl() ?>"><?php echo $L->get('Home'); ?></a>
|
||||
</li>
|
||||
|
||||
<!-- Next button -->
|
||||
<?php if (Paginator::showNext()) : ?>
|
||||
<li class="page-item ml-2">
|
||||
<a class="page-link" href="<?php echo htmlspecialchars(Paginator::nextPageUrl(), ENT_QUOTES, 'UTF-8') ?>" rel="next" aria-label="<?php echo $L->get('Next'); ?>">
|
||||
<?php echo $L->get('Next'); ?> <span aria-hidden="true">►</span>
|
||||
</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
</ul>
|
||||
</nav>
|
||||
<?php endif ?>
|
||||
@@ -0,0 +1,60 @@
|
||||
<nav class="navbar navbar-expand-md navbar-dark fixed-top bg-dark text-uppercase" role="navigation" aria-label="Main navigation">
|
||||
<div class="container">
|
||||
<a class="navbar-brand" href="<?php echo Theme::siteUrl(); ?>">
|
||||
<span class="text-white"><?php echo $site->title(); ?></span>
|
||||
</a>
|
||||
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="<?php echo $L->get('Toggle navigation'); ?>">
|
||||
<span class="navbar-toggler-icon"></span>
|
||||
</button>
|
||||
<div class="collapse navbar-collapse" id="navbarResponsive">
|
||||
|
||||
<ul class="navbar-nav ml-auto">
|
||||
|
||||
<!-- Blog link (when homepage is set to a static page) -->
|
||||
<?php if ($site->homepage()): ?>
|
||||
<li class="nav-item<?php echo ($WHERE_AM_I === 'blog') ? ' active' : ''; ?>">
|
||||
<a class="nav-link" href="<?php echo DOMAIN_BASE . ltrim($url->filters('blog'), '/') ?>">
|
||||
<?php echo $L->get('Blog') ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
<!-- Static pages -->
|
||||
<?php foreach ($staticContent as $staticPage): ?>
|
||||
<li class="nav-item<?php echo ($page && $page->key() === $staticPage->key()) ? ' active' : ''; ?>">
|
||||
<a class="nav-link" href="<?php echo $staticPage->permalink(); ?>">
|
||||
<?php echo $staticPage->title(); ?>
|
||||
<?php if ($page && $page->key() === $staticPage->key()): ?>
|
||||
<span class="sr-only">(<?php echo $L->get('current'); ?>)</span>
|
||||
<?php endif; ?>
|
||||
</a>
|
||||
</li>
|
||||
<?php endforeach ?>
|
||||
|
||||
<!-- Social Networks -->
|
||||
<?php foreach (Theme::socialNetworks() as $key=>$label): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo $site->{$key}(); ?>" target="_blank" rel="noopener noreferrer" title="<?php echo $label; ?>">
|
||||
<img class="d-none d-md-inline-block nav-svg-icon" src="<?php echo DOMAIN_THEME.'img/'.$key.'.svg' ?>" alt="" aria-hidden="true" />
|
||||
<span class="d-inline d-md-none"><?php echo $label; ?></span>
|
||||
<span class="sr-only d-none d-md-inline"><?php echo $label; ?></span>
|
||||
</a>
|
||||
</li>
|
||||
<?php endforeach; ?>
|
||||
|
||||
<!-- RSS -->
|
||||
<?php if (Theme::rssUrl()): ?>
|
||||
<li class="nav-item">
|
||||
<a class="nav-link" href="<?php echo Theme::rssUrl() ?>" target="_blank" rel="noopener noreferrer" title="RSS Feed">
|
||||
<img class="d-none d-md-inline-block nav-svg-icon" src="<?php echo DOMAIN_THEME.'img/rss.svg' ?>" alt="" aria-hidden="true" />
|
||||
<span class="d-inline d-md-none">RSS</span>
|
||||
<span class="sr-only d-none d-md-inline">RSS Feed</span>
|
||||
</a>
|
||||
</li>
|
||||
<?php endif; ?>
|
||||
|
||||
</ul>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</nav>
|
||||
@@ -0,0 +1,102 @@
|
||||
<!-- Breadcrumb Navigation for SEO -->
|
||||
<nav class="breadcrumb-nav" aria-label="<?php echo $L->get('Breadcrumb'); ?>">
|
||||
<div class="container">
|
||||
<ol class="breadcrumb bg-transparent p-0 mb-0" itemscope itemtype="https://schema.org/BreadcrumbList">
|
||||
<li class="breadcrumb-item" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
||||
<a href="<?php echo Theme::siteUrl(); ?>" itemprop="item">
|
||||
<span itemprop="name"><?php echo $L->get('Home'); ?></span>
|
||||
</a>
|
||||
<meta itemprop="position" content="1" />
|
||||
</li>
|
||||
<li class="breadcrumb-item active" itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem" aria-current="page">
|
||||
<span itemprop="name"><?php echo $page->title(); ?></span>
|
||||
<meta itemprop="item" content="<?php echo $page->permalink(); ?>" />
|
||||
<meta itemprop="position" content="2" />
|
||||
</li>
|
||||
</ol>
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<article class="page" itemscope itemtype="https://schema.org/Article">
|
||||
<!-- Hidden SEO metadata -->
|
||||
<div class="d-none" aria-hidden="true">
|
||||
<meta itemprop="mainEntityOfPage" content="<?php echo $page->permalink(); ?>" />
|
||||
<?php if ($page->dateModified()): ?>
|
||||
<meta itemprop="dateModified" content="<?php echo $page->dateModified('c'); ?>" />
|
||||
<?php endif; ?>
|
||||
<meta itemprop="wordCount" content="<?php echo str_word_count(strip_tags($page->content())); ?>" />
|
||||
<span itemprop="publisher" itemscope itemtype="https://schema.org/Organization">
|
||||
<meta itemprop="name" content="<?php echo $site->title(); ?>" />
|
||||
<span itemprop="logo" itemscope itemtype="https://schema.org/ImageObject">
|
||||
<meta itemprop="url" content="<?php echo DOMAIN_THEME_IMG . 'favicon.png'; ?>" />
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<div class="container">
|
||||
<div class="row">
|
||||
<div class="col-lg-8 mx-auto">
|
||||
<!-- Load Bludit Plugins: Page Begin -->
|
||||
<?php Theme::plugins('pageBegin'); ?>
|
||||
|
||||
<!-- Page header -->
|
||||
<header class="page-header mb-4">
|
||||
<!-- Page title -->
|
||||
<h1 class="title" itemprop="headline"><?php echo $page->title(); ?></h1>
|
||||
|
||||
<?php if (!$page->isStatic() && !$url->notFound() && $themePlugin->showPostInformation()) : ?>
|
||||
<div class="page-meta text-muted mb-3">
|
||||
<!-- Page creation time -->
|
||||
<span class="pr-3">
|
||||
<i class="bi bi-calendar" aria-hidden="true"></i>
|
||||
<time datetime="<?php echo $page->dateRaw('c'); ?>" itemprop="datePublished"><?php echo $page->date() ?></time>
|
||||
</span>
|
||||
|
||||
<?php if ($page->dateModified() && $page->dateModified() !== $page->date()): ?>
|
||||
<!-- Last modified -->
|
||||
<span class="pr-3">
|
||||
<i class="bi bi-pencil" aria-hidden="true"></i>
|
||||
<time datetime="<?php echo $page->dateModified('c'); ?>"><?php echo $L->get('Updated'); ?>: <?php echo $page->dateModified(); ?></time>
|
||||
</span>
|
||||
<?php endif; ?>
|
||||
|
||||
<!-- Page reading time -->
|
||||
<span class="pr-3">
|
||||
<i class="bi bi-clock" aria-hidden="true"></i>
|
||||
<span><?php echo $page->readingTime() . ' ' . $L->get('minutes') . ' ' . $L->g('read') ?></span>
|
||||
</span>
|
||||
|
||||
<!-- Page author -->
|
||||
<span itemprop="author" itemscope itemtype="https://schema.org/Person">
|
||||
<i class="bi bi-person" aria-hidden="true"></i>
|
||||
<a href="<?php echo Theme::siteUrl(); ?>" rel="author" itemprop="url">
|
||||
<span itemprop="name"><?php echo $page->user('nickname') ?></span>
|
||||
</a>
|
||||
</span>
|
||||
</div>
|
||||
<?php endif ?>
|
||||
|
||||
<!-- Page description -->
|
||||
<?php if ($page->description()) : ?>
|
||||
<p class="page-description lead" itemprop="description"><?php echo $page->description(); ?></p>
|
||||
<?php endif ?>
|
||||
</header>
|
||||
|
||||
<!-- Page cover image -->
|
||||
<?php if ($page->coverImage()) : ?>
|
||||
<figure class="page-cover-image-wrapper mb-4">
|
||||
<img class="page-cover-image img-fluid rounded" src="<?php echo $page->coverImage(); ?>" alt="<?php echo $page->title(); ?>" loading="lazy" itemprop="image" />
|
||||
</figure>
|
||||
<?php endif ?>
|
||||
|
||||
<!-- Page content -->
|
||||
<div class="page-content" itemprop="articleBody">
|
||||
<?php echo $page->content(); ?>
|
||||
</div>
|
||||
|
||||
<!-- Load Bludit Plugins: Page End -->
|
||||
<?php Theme::plugins('pageEnd'); ?>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||