- Changed API and Keycloak URLs in `.env` and `.env.development`. - Updated `vite.config.js` to reflect new allowed hosts. - Refactored components to use `useContent` context instead of individual contexts for blogs, companies, and projects. - Improved error handling in `App` component with `AppError`. - Added FPS monitoring to `ParticlesBackground` component for developer mode. - Removed unused contexts and adjusted related imports. - Enhanced styling for various components and added new styles for FPS monitor. - Cleaned up SVG files by removing unnecessary attributes.
3303 lines
65 KiB
CSS
3303 lines
65 KiB
CSS
/* Component styles - Reusable UI components */
|
|
|
|
/* Loading Modal */
|
|
.tb-loading-modal {
|
|
position: fixed;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100vw;
|
|
height: var(--unit-100vh);
|
|
background-color: var(--tb-loading-backgroundColor);
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
transition: opacity 0.5s ease, visibility 0.5s ease;
|
|
z-index: 9999;
|
|
}
|
|
|
|
.tb-loading-modal > svg {
|
|
width: 60px;
|
|
height: 60px;
|
|
fill: var(--tb-loading-textColor);
|
|
}
|
|
|
|
.tb-loading-modal-visible {
|
|
opacity: 1;
|
|
visibility: visible;
|
|
}
|
|
|
|
.tb-loading-modal-hidden {
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
}
|
|
|
|
.tb-loading-logo {
|
|
width: 200px;
|
|
display: block;
|
|
margin: 0 auto;
|
|
animation: scale-pulse 2s infinite ease-in-out;
|
|
transform-origin: center center;
|
|
}
|
|
|
|
/* Particles */
|
|
.tb-particles {
|
|
transition: opacity 1s ease-in-out;
|
|
}
|
|
|
|
.tb-particles-fps-monitor {
|
|
position: fixed;
|
|
top: 90px;
|
|
right: var(--tb-page-mobile-padding);
|
|
padding: 10px 16px;
|
|
border-radius: 18px;
|
|
border: 1px solid color-mix(in srgb, var(--tb-textColor) 25%, transparent);
|
|
background: color-mix(in srgb, var(--tb-backgroundColor) 18%, transparent);
|
|
color: var(--tb-textColor);
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
letter-spacing: 0.08em;
|
|
text-transform: uppercase;
|
|
display: inline-flex;
|
|
flex-direction: column;
|
|
align-items: flex-end;
|
|
gap: 8px;
|
|
pointer-events: none;
|
|
z-index: 5;
|
|
backdrop-filter: blur(18px);
|
|
-webkit-backdrop-filter: blur(18px);
|
|
box-shadow: 0 16px 36px
|
|
color-mix(in srgb, var(--tb-backgroundColor) 25%, transparent);
|
|
transition: opacity 0.35s ease, transform 0.35s ease;
|
|
}
|
|
|
|
.tb-particles-fps-monitor-row {
|
|
display: flex;
|
|
align-items: baseline;
|
|
gap: 8px;
|
|
}
|
|
|
|
.tb-particles-fps-monitor-divider {
|
|
align-self: stretch;
|
|
height: 1px;
|
|
background: color-mix(in srgb, var(--tb-textColor) 18%, transparent);
|
|
}
|
|
|
|
.tb-particles-fps-monitor-label {
|
|
opacity: 0.7;
|
|
font-size: 0.68rem;
|
|
letter-spacing: 0.14em;
|
|
}
|
|
|
|
.tb-particles-fps-monitor-value {
|
|
font-size: 0.95rem;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.tb-particles-fps-monitor-visible {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
|
|
.tb-particles-fps-monitor-hidden {
|
|
opacity: 0;
|
|
transform: translateY(-8px);
|
|
}
|
|
|
|
.tb-particles-visible {
|
|
opacity: 1;
|
|
}
|
|
|
|
.tb-particles-hidden {
|
|
opacity: 0;
|
|
}
|
|
|
|
.tb-particles-background {
|
|
backdrop-filter: blur(45px);
|
|
-webkit-backdrop-filter: blur(45px);
|
|
position: absolute;
|
|
z-index: 1;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
}
|
|
|
|
/* Buttons */
|
|
|
|
.tb-button {
|
|
padding: 8px 14px;
|
|
background-color: transparent;
|
|
color: var(--tb-textColor);
|
|
border: 2px solid color-mix(in srgb, var(--tb-textColor) 15%, transparent);
|
|
border-radius: 18px;
|
|
transition: background-color 0.3s ease, color 0.3s ease, fill 0.3s ease,
|
|
transform 0.5s ease;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
margin: 0.74em 2.5px;
|
|
line-height: 1;
|
|
min-height: 30px;
|
|
font-weight: 500;
|
|
position: relative;
|
|
transform-origin: center center;
|
|
transform: scale(1);
|
|
width: max-content;
|
|
}
|
|
|
|
.tb-menu-popup-button,
|
|
.tb-account-menu-button {
|
|
padding: 9px 10px;
|
|
border: none;
|
|
font-weight: 600;
|
|
transition: color 0.3s ease, transform 0.3s ease, background-color 0.3s ease,
|
|
padding 0.3s ease;
|
|
}
|
|
|
|
.tb-menu-popup-button:hover,
|
|
.tb-menu-popup-button-active,
|
|
.tb-account-menu-button:hover,
|
|
.tb-account-menu-button-active {
|
|
transform: scale(1.05);
|
|
padding: 9px 14px;
|
|
}
|
|
|
|
.tb-menu-popup-button-active,
|
|
.tb-account-menu-button-active {
|
|
background-color: var(--tb-textColor);
|
|
color: var(--tb-backgroundColor);
|
|
}
|
|
|
|
.tb-button:disabled {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.tb-button img {
|
|
width: 24px;
|
|
margin-right: 24px;
|
|
}
|
|
|
|
.tb-button > .tb-icon,
|
|
.tb-button > svg {
|
|
fill: var(--tb-textColor);
|
|
stroke: var(--tb-textColor);
|
|
height: 16px;
|
|
width: auto;
|
|
margin-right: 8px;
|
|
transition: fill 0.3s ease, stroke 0.3s ease;
|
|
}
|
|
|
|
.tb-menu-popup-button > svg,
|
|
.tb-account-menu-button > svg {
|
|
margin-left: 6px;
|
|
margin-right: 0;
|
|
}
|
|
|
|
.tb-menu-popup-button-active > svg,
|
|
.tb-menu-popup-button-active > .tb-icon-button > svg {
|
|
fill: var(--tb-backgroundColor);
|
|
stroke: var(--tb-backgroundColor);
|
|
}
|
|
|
|
.tb-button:not(:disabled):hover > .tb-icon,
|
|
.tb-button:not(:disabled):hover > svg {
|
|
fill: var(--tb-backgroundColor);
|
|
stroke: var(--tb-backgroundColor);
|
|
}
|
|
|
|
.tb-button:not(:disabled):hover {
|
|
background-color: var(--tb-textColor);
|
|
color: var(--tb-backgroundColor);
|
|
transform: scale(1.025);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-button:not(:disabled):active {
|
|
background-color: var(--tb-textColor);
|
|
color: var(--tb-backgroundColor);
|
|
transform: scale(0.975);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-icon-button > svg {
|
|
width: 16px;
|
|
height: 16px;
|
|
fill: var(--tb-textColor);
|
|
stroke: var(--tb-textColor);
|
|
}
|
|
|
|
.tb-button:hover > .tb-icon-button > svg {
|
|
fill: var(--tb-backgroundColor);
|
|
stroke: var(--tb-backgroundColor);
|
|
}
|
|
|
|
.tb-icon-button {
|
|
position: static;
|
|
top: 9px;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
transform: scale(1);
|
|
min-width: 16px;
|
|
min-height: 16px;
|
|
transform-origin: center center;
|
|
transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out,
|
|
position 0.3s ease-in-out;
|
|
height: 16px;
|
|
}
|
|
|
|
.tb-icon-button.tb-hidden {
|
|
position: absolute;
|
|
transform: scale(0.5);
|
|
}
|
|
|
|
.tb-error-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 50px;
|
|
}
|
|
|
|
.tb-error-message {
|
|
padding: 20px 30px;
|
|
background-color: #b00000;
|
|
border: 1px solid #ff0000;
|
|
text-align: center;
|
|
color: #ffffff;
|
|
border-radius: 25px;
|
|
box-shadow: 0px 8.5px 20px 0px #000000;
|
|
margin-bottom: 30px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.tb-error-message h1 {
|
|
font-size: 26px;
|
|
font-weight: 600;
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-error-message-divider {
|
|
width: 50%;
|
|
height: 1px;
|
|
background-color: #ff0000;
|
|
margin: 17px 0;
|
|
border: none;
|
|
}
|
|
|
|
.tb-error-message p {
|
|
font-size: 16px;
|
|
font-weight: 400;
|
|
margin: 0;
|
|
max-width: 500px;
|
|
}
|
|
|
|
.tb-error-button {
|
|
color: #ffffff;
|
|
background-color: #b00000;
|
|
border: 1px solid #ff0000;
|
|
box-shadow: 0px 8.5px 20px 0px #000000;
|
|
}
|
|
|
|
.tb-error-button:not(:disabled):hover {
|
|
background-color: #b00000;
|
|
color: #ffffff;
|
|
}
|
|
|
|
.tb-error-secondary-button {
|
|
color: #ffffff;
|
|
background-color: #b000004e;
|
|
border: 1px solid #ff000072;
|
|
box-shadow: 0px 8.5px 20px 0px #000000;
|
|
}
|
|
|
|
.tb-error-secondary-button:not(:disabled):hover {
|
|
color: #ffffff;
|
|
background-color: #b000004e;
|
|
border: 1px solid #ff000052;
|
|
}
|
|
|
|
.tb-error-actions {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 12px;
|
|
justify-content: center;
|
|
}
|
|
|
|
.tb-error-details {
|
|
width: 100%;
|
|
max-width: 640px;
|
|
max-height: 320px;
|
|
margin: 12px auto 0;
|
|
padding: 20px;
|
|
background-color: rgba(0, 0, 0, 0.85);
|
|
border: 1px solid rgba(255, 0, 0, 0.45);
|
|
border-radius: 16px;
|
|
box-shadow: 0px 8.5px 24px 0px rgba(0, 0, 0, 0.45);
|
|
color: #ffffff;
|
|
font-family: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;
|
|
font-size: 14px;
|
|
line-height: 1.5;
|
|
text-align: left;
|
|
overflow: auto;
|
|
white-space: pre-wrap;
|
|
word-break: break-word;
|
|
margin-bottom: 30px;
|
|
}
|
|
|
|
.tb-error-icon {
|
|
fill: #b00000;
|
|
width: 150px;
|
|
stroke: #ff0000;
|
|
}
|
|
|
|
/* Menu Components */
|
|
.tb-menu-popup {
|
|
position: absolute;
|
|
background-color: color-mix(
|
|
in srgb,
|
|
var(--tb-backgroundColor) 50%,
|
|
transparent
|
|
);
|
|
backdrop-filter: blur(8px);
|
|
box-shadow: -1px 3px 50px 4px var(--tb-backgroundColor);
|
|
-webkit-backdrop-filter: blur(8px);
|
|
top: calc(var(--tb-header-footer-vertical-padding) + 50px);
|
|
right: var(--tb-header-footer-horizontal-padding);
|
|
width: auto;
|
|
height: auto;
|
|
z-index: 9;
|
|
border-radius: 25px;
|
|
transition: background-color 0.3s ease;
|
|
}
|
|
|
|
.tb-ios-webclip .tb-menu-popup {
|
|
top: calc(var(--tb-header-footer-vertical-padding) + 80px);
|
|
}
|
|
|
|
.tb-menu-popup::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
padding: 1px; /* border thickness */
|
|
border-radius: inherit;
|
|
background: linear-gradient(
|
|
to bottom right,
|
|
/* 👈 diagonal gradient */
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 10%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent)
|
|
);
|
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
mask-composite: xor;
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
z-index: 1;
|
|
transition: background 0.3s ease;
|
|
}
|
|
|
|
.tb-mobile-menu-popup {
|
|
top: calc(var(--tb-page-mobile-padding) + 50px);
|
|
right: var(--tb-page-mobile-padding);
|
|
}
|
|
|
|
.tb-menu-popup-container {
|
|
padding: 0 13px 2px 13px;
|
|
}
|
|
|
|
.tb-mobile-menu-popup-container {
|
|
padding: 0 13px 2px 13px;
|
|
}
|
|
|
|
.tb-menu-popup-divider {
|
|
width: 1px;
|
|
background-color: color-mix(in srgb, var(--tb-textColor) 20%, transparent);
|
|
margin: 10px 13px;
|
|
}
|
|
|
|
.tb-menu-nav {
|
|
list-style: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
text-align: end;
|
|
padding: 15px 22px 3px 22px;
|
|
}
|
|
|
|
.tb-menu-nav > li {
|
|
display: flex;
|
|
justify-content: end;
|
|
}
|
|
|
|
.tb-menu-nav-item {
|
|
border: none;
|
|
padding: 0.5em 0;
|
|
font-size: 1.3em;
|
|
background: none;
|
|
font-weight: 400;
|
|
color: var(--tb-textColor);
|
|
position: relative; /* Needed for pseudo-element positioning */
|
|
cursor: pointer;
|
|
transition: font-weight 0.3s ease, font-size 0.3s ease;
|
|
display: flex;
|
|
gap: 15px;
|
|
align-items: center;
|
|
}
|
|
|
|
.tb-menu-nav-item-active {
|
|
font-weight: 600;
|
|
}
|
|
|
|
.tb-menu-nav-item > svg {
|
|
width: 1.3em;
|
|
fill: var(--tb-textColor);
|
|
}
|
|
|
|
.tb-menu-nav-item:hover {
|
|
font-weight: 600;
|
|
font-size: 1.4em;
|
|
}
|
|
|
|
.tb-menu-nav-item:hover::after {
|
|
width: 100%;
|
|
}
|
|
|
|
.tb-menu-nav-item-active::after {
|
|
width: 100%;
|
|
}
|
|
|
|
.tb-menu-popup-footer {
|
|
margin: 10px 2px 0 2px;
|
|
border-top: 1px solid color-mix(in srgb, var(--tb-textColor) 20%, transparent);
|
|
display: flex;
|
|
justify-content: end;
|
|
}
|
|
|
|
/* Developer Popup */
|
|
.tb-developer-popup {
|
|
position: fixed;
|
|
bottom: calc(var(--tb-header-footer-vertical-padding) + 24px);
|
|
left: 50%;
|
|
transform: translateX(-50%);
|
|
background-color: color-mix(
|
|
in srgb,
|
|
var(--tb-backgroundColor) 55%,
|
|
transparent
|
|
);
|
|
backdrop-filter: blur(10px);
|
|
-webkit-backdrop-filter: blur(10px);
|
|
box-shadow: -1px 3px 50px 4px var(--tb-backgroundColor);
|
|
border-radius: 30px;
|
|
z-index: 15;
|
|
padding: 0;
|
|
transition: background-color 0.3s ease, box-shadow 0.3s ease;
|
|
width: max-content;
|
|
}
|
|
|
|
.tb-developer-popup::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
padding: 1px;
|
|
border-radius: inherit;
|
|
background: linear-gradient(
|
|
to bottom right,
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 10%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent)
|
|
);
|
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
mask-composite: xor;
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
z-index: 1;
|
|
}
|
|
|
|
.tb-developer-popup-container {
|
|
position: relative;
|
|
z-index: 2;
|
|
padding: 0 13px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12px;
|
|
align-items: center;
|
|
}
|
|
|
|
.tb-developer-popup-actions {
|
|
display: flex;
|
|
gap: 10px;
|
|
justify-content: center;
|
|
align-items: center;
|
|
}
|
|
|
|
.tb-developer-popup-actions .tb-button {
|
|
justify-content: center;
|
|
}
|
|
|
|
.tb-developer-popup-actions-divider {
|
|
width: 1px;
|
|
height: 18px;
|
|
background-color: color-mix(in srgb, var(--tb-textColor) 20%, transparent);
|
|
}
|
|
|
|
.tb-developer-popup-status {
|
|
font-size: 0.85rem;
|
|
text-align: center;
|
|
color: color-mix(in srgb, var(--tb-textColor) 70%, transparent);
|
|
min-height: 1.2em;
|
|
}
|
|
|
|
.tb-developer-popup-status-success {
|
|
color: color-mix(in srgb, var(--tb-textColor) 85%, transparent);
|
|
}
|
|
|
|
.tb-developer-popup-status-error {
|
|
color: #ff6b6b;
|
|
}
|
|
|
|
.tb-developer-popup-status-pending {
|
|
color: color-mix(in srgb, var(--tb-textColor) 75%, transparent);
|
|
}
|
|
|
|
.tb-developer-exit-button {
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* Message Popup */
|
|
.tb-message-popup {
|
|
position: fixed;
|
|
top: calc(var(--tb-header-footer-vertical-padding) + 24px);
|
|
left: 50%;
|
|
transform: translate(-50%, -12px) scale(0.98);
|
|
opacity: 0;
|
|
pointer-events: none;
|
|
background-color: color-mix(
|
|
in srgb,
|
|
var(--tb-backgroundColor) 55%,
|
|
transparent
|
|
);
|
|
backdrop-filter: blur(10px);
|
|
-webkit-backdrop-filter: blur(10px);
|
|
box-shadow: 0px 16px 40px -12px color-mix(in srgb, var(--tb-backgroundColor)
|
|
80%, transparent);
|
|
border-radius: 28px;
|
|
z-index: 20;
|
|
transition: opacity 0.35s ease, transform 0.35s ease;
|
|
padding: 0;
|
|
}
|
|
|
|
.tb-message-popup::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
padding: 1px;
|
|
border-radius: inherit;
|
|
background: linear-gradient(
|
|
130deg,
|
|
color-mix(in srgb, var(--tb-textColor) 14%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 8%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 12%, transparent)
|
|
);
|
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
mask-composite: xor;
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
z-index: 1;
|
|
}
|
|
|
|
.tb-message-popup-content {
|
|
position: relative;
|
|
z-index: 2;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 8px;
|
|
padding: 10px 18px 10px 18px;
|
|
width: max-content;
|
|
}
|
|
|
|
.tb-message-popup-icon {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 22px;
|
|
color: color-mix(in srgb, var(--tb-textColor) 80%, transparent);
|
|
}
|
|
|
|
.tb-message-popup-text {
|
|
font-size: 16px;
|
|
line-height: 1;
|
|
color: var(--tb-textColor);
|
|
max-width: min(460px, 75vw);
|
|
}
|
|
|
|
.tb-message-popup-dismiss {
|
|
appearance: none;
|
|
border: none;
|
|
background: none;
|
|
color: var(--tb-textColor);
|
|
font-size: 22px;
|
|
line-height: 1;
|
|
padding: 0;
|
|
margin-left: 4px;
|
|
margin-bottom: 2px;
|
|
cursor: pointer;
|
|
transition: color 0.2s ease, transform 0.2s ease;
|
|
}
|
|
|
|
.tb-message-popup-dismiss:hover,
|
|
.tb-message-popup-dismiss:focus-visible {
|
|
color: color-mix(in srgb, var(--tb-textColor) 90%, transparent);
|
|
transform: scale(1.05);
|
|
}
|
|
|
|
.tb-message-popup-visible {
|
|
opacity: 1;
|
|
transform: translate(-50%, 0) scale(1);
|
|
pointer-events: auto;
|
|
}
|
|
|
|
.tb-message-popup-hidden {
|
|
opacity: 0;
|
|
transform: translate(-50%, -12px) scale(0.98);
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* Account Menu Popup */
|
|
.tb-account-menu-popup {
|
|
position: fixed;
|
|
background-color: color-mix(
|
|
in srgb,
|
|
var(--tb-backgroundColor) 50%,
|
|
transparent
|
|
);
|
|
backdrop-filter: blur(8px);
|
|
box-shadow: -1px 3px 50px 4px var(--tb-backgroundColor);
|
|
-webkit-backdrop-filter: blur(8px);
|
|
bottom: calc(var(--tb-header-footer-vertical-padding) + 50px);
|
|
left: var(--tb-header-footer-horizontal-padding);
|
|
width: auto;
|
|
min-width: 280px;
|
|
max-width: 400px;
|
|
height: auto;
|
|
z-index: 9;
|
|
border-radius: 25px;
|
|
transition: background-color 0.3s ease, opacity 0.8s ease, transform 0.8s ease;
|
|
opacity: 0;
|
|
transform: translateY(-10px) scale(0.95);
|
|
}
|
|
|
|
.tb-ios-webclip .tb-account-menu-popup {
|
|
bottom: calc(var(--tb-header-footer-vertical-padding) + 80px);
|
|
}
|
|
|
|
.tb-account-menu-popup::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
padding: 1px; /* border thickness */
|
|
border-radius: inherit;
|
|
background: linear-gradient(
|
|
to bottom right,
|
|
/* 👈 diagonal gradient */
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 10%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent)
|
|
);
|
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
mask-composite: xor;
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
z-index: 1;
|
|
transition: background 0.3s ease;
|
|
}
|
|
|
|
.tb-mobile-account-menu-popup {
|
|
bottom: calc(var(--tb-page-mobile-padding) + 50px);
|
|
left: var(--tb-page-mobile-padding);
|
|
}
|
|
|
|
.tb-account-menu-popup-container {
|
|
padding: 0 13px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.tb-mobile-account-menu-popup-container {
|
|
padding: 0 13px;
|
|
}
|
|
|
|
.tb-account-menu-header {
|
|
display: flex;
|
|
flex-direction: row;
|
|
gap: 12px;
|
|
align-items: center;
|
|
padding: 13px 3px;
|
|
}
|
|
|
|
.tb-account-menu-icon {
|
|
width: 48px;
|
|
height: 48px;
|
|
}
|
|
|
|
.tb-account-menu-icon > svg {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
object-position: center center;
|
|
fill: var(--tb-textColor);
|
|
}
|
|
|
|
.tb-account-menu-user-info {
|
|
padding-bottom: 1px;
|
|
}
|
|
|
|
.tb-account-menu-user-name {
|
|
font-size: 20px;
|
|
font-weight: 600;
|
|
color: var(--tb-textColor);
|
|
margin: 0;
|
|
line-height: 1;
|
|
display: flex;
|
|
gap: 10px;
|
|
align-items: center;
|
|
margin-bottom: 5px;
|
|
}
|
|
|
|
.tb-account-menu-user-email {
|
|
margin: 0;
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
color: color-mix(in srgb, var(--tb-textColor) 50%, transparent);
|
|
margin-bottom: 0px;
|
|
}
|
|
|
|
.tb-account-menu-user-username {
|
|
font-size: 13px;
|
|
font-weight: 500;
|
|
margin: 0;
|
|
line-height: 1;
|
|
border: 1px solid color-mix(in srgb, var(--tb-textColor) 20%, transparent);
|
|
border-radius: 12px;
|
|
padding: 2px 5px;
|
|
padding-left: 3px;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 3px;
|
|
margin-top: 2px;
|
|
}
|
|
|
|
.tb-account-menu-user-username-at {
|
|
color: color-mix(in srgb, var(--tb-textColor) 50%, transparent);
|
|
width: 12px;
|
|
height: 12px;
|
|
margin-bottom: 1px;
|
|
}
|
|
|
|
.tb-account-menu-user-username-at > svg {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
object-position: center center;
|
|
fill: color-mix(in srgb, var(--tb-textColor) 75%, transparent);
|
|
}
|
|
|
|
.tb-account-menu-user-username-content {
|
|
font-size: 12px;
|
|
font-weight: 500;
|
|
color: color-mix(in srgb, var(--tb-textColor) 100%, transparent);
|
|
padding-top: 1px;
|
|
line-height: 1;
|
|
}
|
|
|
|
.tb-account-menu-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.tb-account-menu-roles {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 8px;
|
|
}
|
|
|
|
.tb-account-menu-roles-label {
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
color: color-mix(in srgb, var(--tb-textColor) 50%, transparent);
|
|
text-transform: uppercase;
|
|
letter-spacing: 0.5px;
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-account-menu-roles-list {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 6px;
|
|
}
|
|
|
|
.tb-account-menu-role {
|
|
display: inline-block;
|
|
padding: 4px 10px;
|
|
border: 2px solid color-mix(in srgb, var(--tb-textColor) 50%, transparent);
|
|
border-radius: 12px;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
color: var(--tb-textColor);
|
|
background-color: transparent;
|
|
transition: background-color 0.3s ease, border-color 0.3s ease;
|
|
}
|
|
|
|
.tb-account-menu-footer {
|
|
border-top: 1px solid color-mix(in srgb, var(--tb-textColor) 20%, transparent);
|
|
display: flex;
|
|
justify-content: flex-end;
|
|
}
|
|
|
|
.tb-account-menu-divider {
|
|
width: 1px;
|
|
background-color: color-mix(in srgb, var(--tb-textColor) 20%, transparent);
|
|
margin: 10px 13px;
|
|
}
|
|
|
|
.tb-account-menu-logout-button > svg {
|
|
margin-left: 4px;
|
|
}
|
|
|
|
.tb-account-menu-login-button {
|
|
margin: 0 5px;
|
|
}
|
|
|
|
.tb-account-menu-loading {
|
|
height: 48px;
|
|
width: 100%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.tb-account-menu-loading > svg {
|
|
width: 18px;
|
|
height: 18px;
|
|
object-fit: cover;
|
|
object-position: center center;
|
|
stroke: var(--tb-textColor);
|
|
}
|
|
|
|
/* CV Download Popup Menu */
|
|
.tb-cv-popup {
|
|
position: fixed;
|
|
background-color: color-mix(
|
|
in srgb,
|
|
var(--tb-backgroundColor) 50%,
|
|
transparent
|
|
);
|
|
backdrop-filter: blur(8px);
|
|
box-shadow: -1px 3px 50px 4px var(--tb-backgroundColor);
|
|
-webkit-backdrop-filter: blur(8px);
|
|
width: auto;
|
|
height: auto;
|
|
z-index: 10;
|
|
border-radius: 25px;
|
|
transition: background-color 0.3s ease;
|
|
color: var(--tb-textColor);
|
|
margin-left: 42px;
|
|
}
|
|
|
|
.tb-cv-popup::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
padding: 1px; /* border thickness */
|
|
border-radius: inherit;
|
|
background: linear-gradient(
|
|
to bottom right,
|
|
/* 👈 diagonal gradient */
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 5%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent)
|
|
);
|
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
mask-composite: xor;
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
z-index: 1;
|
|
transition: background 0.3s ease;
|
|
}
|
|
|
|
.tb-mobile-cv-popup {
|
|
/* Mobile-specific styles if needed */
|
|
}
|
|
|
|
.tb-cv-popup-container {
|
|
padding: 13px;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.tb-mobile-cv-popup-container {
|
|
padding: 13px;
|
|
}
|
|
|
|
.tb-cv-main-divider {
|
|
height: 1px;
|
|
width: 100%;
|
|
background-color: color-mix(in srgb, var(--tb-textColor) 20%, transparent);
|
|
border-radius: 2px;
|
|
}
|
|
|
|
.tb-cv-buttons-divider {
|
|
width: 1px;
|
|
background-color: color-mix(in srgb, var(--tb-textColor) 20%, transparent);
|
|
margin: 10px 13px;
|
|
}
|
|
|
|
.tb-cv-print,
|
|
.tb-cv-digital {
|
|
display: flex;
|
|
flex-direction: row;
|
|
gap: 12px;
|
|
align-items: center;
|
|
}
|
|
|
|
.tb-cv-print-icon,
|
|
.tb-cv-digital-icon {
|
|
min-width: 40px;
|
|
width: 40px;
|
|
height: 40px;
|
|
fill: var(--tb-textColor);
|
|
margin-left: 4px;
|
|
}
|
|
|
|
.tb-cv-description {
|
|
flex-grow: 1;
|
|
}
|
|
|
|
.tb-cv-title {
|
|
font-size: 20px;
|
|
font-weight: 600;
|
|
color: var(--tb-textColor);
|
|
margin-bottom: 5px;
|
|
display: inline-flex;
|
|
align-items: center;
|
|
gap: 1px;
|
|
}
|
|
|
|
.tb-cv-subtitle {
|
|
font-size: 14px;
|
|
font-weight: 500;
|
|
color: color-mix(in srgb, var(--tb-textColor) 50%, transparent);
|
|
margin-bottom: 4px;
|
|
}
|
|
|
|
.tb-cv-digital-buttons {
|
|
display: flex;
|
|
flex-direction: row;
|
|
gap: 3px;
|
|
}
|
|
|
|
.tb-cv-download-button {
|
|
margin: 0;
|
|
justify-content: center;
|
|
}
|
|
|
|
.tb-cv-versions-button {
|
|
margin: 0;
|
|
margin-left: 3px;
|
|
min-height: 20px;
|
|
padding: 4px 4.5px 3px 3px;
|
|
justify-content: center;
|
|
}
|
|
|
|
.tb-cv-versions-button:hover {
|
|
padding: 4px 4.5px 3px 3px;
|
|
}
|
|
|
|
.tb-cv-versions-button > svg {
|
|
margin-left: 0;
|
|
}
|
|
|
|
/* Website Selector Popup */
|
|
.tb-website-selector-popup {
|
|
position: fixed;
|
|
width: 200px;
|
|
height: auto;
|
|
z-index: 10;
|
|
border-radius: 25px;
|
|
box-shadow: -1px 3px 50px 4px var(--tb-backgroundColor);
|
|
overflow: visible;
|
|
}
|
|
|
|
.tb-mobile-website-selector-popup {
|
|
/* Mobile-specific styles if needed */
|
|
}
|
|
|
|
.tb-website-selector-popup-container {
|
|
}
|
|
|
|
.tb-mobile-website-selector-popup-container {
|
|
padding: 0;
|
|
}
|
|
|
|
.tb-website-selector-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-end;
|
|
}
|
|
|
|
.tb-website-selector-item {
|
|
border: none;
|
|
padding: 0;
|
|
font-size: 1.3em;
|
|
background: none;
|
|
font-weight: 400;
|
|
height: 60px;
|
|
width: 200px;
|
|
color: var(--tb-textColor);
|
|
position: relative;
|
|
cursor: pointer;
|
|
transition: width 0.3s ease, height 0.3s ease, border-radius 0.3s ease,
|
|
box-shadow 0.3s ease;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.tb-website-selector-item::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
padding: 1px; /* border thickness */
|
|
border-radius: inherit;
|
|
background: linear-gradient(
|
|
to bottom right,
|
|
/* 👈 diagonal gradient */
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 10%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent)
|
|
);
|
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
mask-composite: xor;
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
z-index: 1;
|
|
transition: background 0.3s ease;
|
|
}
|
|
|
|
.tb-website-selector-item:first-child {
|
|
border-top-left-radius: 25px;
|
|
border-top-right-radius: 25px;
|
|
}
|
|
|
|
.tb-website-selector-item:last-child {
|
|
border-bottom-left-radius: 25px;
|
|
border-bottom-right-radius: 25px;
|
|
}
|
|
|
|
.tb-website-selector-item > svg {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover; /* fill width and clip vertically */
|
|
object-position: center center; /* keep it centered */
|
|
flex-shrink: 0;
|
|
}
|
|
|
|
.tb-website-selector-item:hover {
|
|
height: 68px;
|
|
width: 226.66px;
|
|
border-top-left-radius: 25px;
|
|
border-bottom-left-radius: 25px;
|
|
box-shadow: -1px 3px 25px 4px
|
|
color-mix(in srgb, var(--tb-backgroundColor) 50%, transparent);
|
|
z-index: 11;
|
|
}
|
|
|
|
@media (max-width: 450px) {
|
|
.tb-website-selector-list {
|
|
align-items: flex-start;
|
|
}
|
|
.tb-website-selector-item:hover {
|
|
border-top-left-radius: 0;
|
|
border-bottom-left-radius: 0;
|
|
border-top-right-radius: 25px;
|
|
border-bottom-right-radius: 25px;
|
|
}
|
|
.tb-website-selector-item:first-child:hover {
|
|
border-top-left-radius: 25px;
|
|
}
|
|
.tb-website-selector-item:last-child:hover {
|
|
border-bottom-left-radius: 25px;
|
|
}
|
|
.tb-website-selector-popup {
|
|
transform-origin: top left !important;
|
|
}
|
|
}
|
|
|
|
/* Share Popup Menu */
|
|
.tb-share-popup {
|
|
position: fixed;
|
|
background-color: color-mix(
|
|
in srgb,
|
|
var(--tb-backgroundColor) 50%,
|
|
transparent
|
|
);
|
|
backdrop-filter: blur(8px);
|
|
box-shadow: -1px 3px 50px 4px var(--tb-backgroundColor);
|
|
-webkit-backdrop-filter: blur(8px);
|
|
width: auto;
|
|
height: auto;
|
|
z-index: 10;
|
|
border-radius: 25px;
|
|
transition: background-color 0.3s ease;
|
|
color: var(--tb-textColor);
|
|
margin-left: var(--tb-page-mobile-padding);
|
|
}
|
|
|
|
.tb-share-popup::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
padding: 1px; /* border thickness */
|
|
border-radius: inherit;
|
|
background: linear-gradient(
|
|
to bottom right,
|
|
/* 👈 diagonal gradient */
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 10%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent)
|
|
);
|
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
mask-composite: xor;
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
z-index: 1;
|
|
transition: background 0.3s ease;
|
|
}
|
|
|
|
.tb-mobile-share-popup {
|
|
/* Mobile-specific styles if needed */
|
|
}
|
|
|
|
.tb-share-popup-container {
|
|
padding: 13px;
|
|
}
|
|
|
|
.tb-mobile-share-popup-container {
|
|
padding: 13px;
|
|
}
|
|
|
|
.tb-share-list {
|
|
display: grid;
|
|
grid-template-columns: repeat(3, minmax(0, 1fr));
|
|
align-items: stretch;
|
|
justify-items: center;
|
|
gap: 0px;
|
|
}
|
|
|
|
.tb-share-item {
|
|
border: none;
|
|
padding: 13px 13px;
|
|
font-size: 16px;
|
|
background: none;
|
|
font-weight: 400;
|
|
color: var(--tb-textColor);
|
|
position: relative;
|
|
transition: background-color 0.3s ease, transform 0.3s ease;
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
gap: 4px;
|
|
min-width: 105px;
|
|
min-height: 110px;
|
|
width: 100%;
|
|
justify-content: center;
|
|
text-align: right;
|
|
border-radius: 17px;
|
|
transform: scale(1);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-share-item:hover {
|
|
background-color: var(--tb-textColor);
|
|
color: var(--tb-backgroundColor);
|
|
transform: scale(1.025);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-share-icon {
|
|
transition: font-size 0.3s ease;
|
|
font-size: 48px;
|
|
min-width: 24px;
|
|
text-align: center;
|
|
}
|
|
|
|
.tb-share-item:hover .tb-share-icon {
|
|
font-size: 52px;
|
|
}
|
|
|
|
.tb-share-item .tb-share-label {
|
|
transition: font-weight 0.3s ease;
|
|
font-weight: 600;
|
|
font-size: 16px;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.tb-share-item:hover .tb-share-label {
|
|
font-weight: 700;
|
|
}
|
|
|
|
.tb-share-divider {
|
|
height: 1px;
|
|
width: 100%;
|
|
background-color: color-mix(in srgb, var(--tb-textColor) 20%, transparent);
|
|
margin: 8px 0;
|
|
border-radius: 2px;
|
|
}
|
|
|
|
/* Menu Icon */
|
|
.menu-icon {
|
|
cursor: pointer;
|
|
width: 64px;
|
|
height: 64px;
|
|
}
|
|
|
|
.tb-line {
|
|
transition: transform 0.4s ease, opacity 0.4s ease;
|
|
transform-origin: 32px 32px; /* Center of SVG */
|
|
}
|
|
|
|
.tb-menu-header {
|
|
align-items: center;
|
|
justify-content: end;
|
|
height: 30px;
|
|
}
|
|
|
|
/* Header Logo */
|
|
.tb-header-logo {
|
|
position: relative;
|
|
display: inline-block;
|
|
}
|
|
|
|
.tb-logo-image {
|
|
opacity: 1;
|
|
transition: opacity 0.3s ease-in-out, width 0.3s ease-in-out,
|
|
transform 0.3s ease-in-out;
|
|
width: 30px;
|
|
height: 30px;
|
|
overflow: hidden;
|
|
position: relative;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-logo-image:hover {
|
|
transform: scale(1.025);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-logo-image:active {
|
|
transform: scale(0.975);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-logo-image-large {
|
|
width: 237px;
|
|
}
|
|
|
|
.tb-logo-image svg {
|
|
fill: var(--tb-textColor);
|
|
height: 30px;
|
|
display: block;
|
|
width: auto;
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
transition: fill 0.3s ease-in-out, right 0.3s ease-in-out;
|
|
}
|
|
|
|
.tb-logo-image-large svg {
|
|
right: auto;
|
|
left: 0;
|
|
}
|
|
|
|
.tb-logo-image-large-mobile svg {
|
|
height: 30px;
|
|
}
|
|
|
|
.tb-logo-image-hidden {
|
|
opacity: 0;
|
|
}
|
|
|
|
/* Header Button */
|
|
.tb-header-button,
|
|
.tb-footer-button {
|
|
background: none;
|
|
border: none;
|
|
width: 30px;
|
|
height: 30px;
|
|
padding: 0;
|
|
z-index: 99;
|
|
cursor: pointer;
|
|
transform-origin: center center;
|
|
transform: scale(1);
|
|
transition: transform 0.3s ease;
|
|
}
|
|
.tb-header-button:active,
|
|
.tb-footer-button:active {
|
|
transform: scale(0.95);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-header-button:hover,
|
|
.tb-footer-button:hover {
|
|
transform: scale(1.05);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-header-button-menu > .hamburger-react {
|
|
position: relative;
|
|
left: -9px;
|
|
top: -10px;
|
|
}
|
|
|
|
.tb-header-button-menu > .hamburger-react > div {
|
|
height: 4px !important;
|
|
}
|
|
|
|
.tb-header-button > svg {
|
|
width: 16px;
|
|
stroke: var(--tb-textColor);
|
|
transition: width 0.3s ease;
|
|
}
|
|
|
|
.tb-header-button:hover > svg {
|
|
width: 18px;
|
|
}
|
|
|
|
/* Footer Icon */
|
|
.tb-footer-icon {
|
|
width: 30px;
|
|
height: 30px;
|
|
cursor: pointer;
|
|
transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out;
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
.tb-footer-icon.tb-hidden {
|
|
transform: scale(0.5);
|
|
}
|
|
|
|
.tb-footer-icon > svg {
|
|
transition: fill 0.3s ease-in-out;
|
|
fill: var(--tb-textColor);
|
|
}
|
|
|
|
.tb-footer-icon-close {
|
|
width: 30px;
|
|
height: 30px;
|
|
cursor: pointer;
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
transition: opacity 0.3s ease-in-out;
|
|
opacity: 1;
|
|
}
|
|
|
|
.tb-footer-icon-close > svg {
|
|
transition: fill 0.3s ease-in-out;
|
|
fill: var(--tb-textColor);
|
|
}
|
|
|
|
/* Scroll Icon */
|
|
.tb-scroll-icon-wrapper {
|
|
display: flex;
|
|
align-items: center;
|
|
flex-direction: row;
|
|
column-gap: 15px;
|
|
padding-top: 0;
|
|
transition: opacity 0.3s ease-in-out;
|
|
}
|
|
|
|
.tb-scroll-icon-wrapper > svg {
|
|
fill: var(--tb-textColor);
|
|
height: 38px;
|
|
width: auto;
|
|
}
|
|
|
|
.tb-scroll-icon-text {
|
|
margin: 0;
|
|
font-weight: 600;
|
|
font-size: 1.1em;
|
|
color: var(--tb-textColor);
|
|
}
|
|
|
|
/* Image Components */
|
|
.tb-images-container {
|
|
display: flex;
|
|
flex-direction: column;
|
|
height: var(--unit-100vh);
|
|
transition: opacity 0.5s ease-in-out;
|
|
opacity: 1;
|
|
position: relative;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
}
|
|
|
|
.tb-images-container-hidden {
|
|
opacity: 0;
|
|
position: absolute;
|
|
}
|
|
|
|
/* Grid layouts for different numbers of images */
|
|
.tb-single-image-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
grid-template-rows: 1fr;
|
|
height: var(--unit-100vh);
|
|
}
|
|
|
|
.tb-two-images-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
grid-template-rows: 1fr 1fr;
|
|
height: var(--unit-100vh);
|
|
}
|
|
|
|
.tb-three-images-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr;
|
|
grid-template-rows: 1fr 1fr 1fr;
|
|
height: var(--unit-100vh);
|
|
}
|
|
|
|
.tb-four-images-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
grid-template-rows: 1fr 1fr;
|
|
height: var(--unit-100vh);
|
|
}
|
|
|
|
.tb-multiple-images-grid {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
grid-template-rows: repeat(auto-fit, minmax(20vh, 1fr));
|
|
height: var(--unit-100vh);
|
|
gap: 2px;
|
|
}
|
|
|
|
.tb-image-wrapper {
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
position: relative;
|
|
}
|
|
|
|
.tb-image-carousel {
|
|
position: relative;
|
|
width: 100%;
|
|
height: 100%;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.tb-carousel-image-wrapper {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
opacity: 0;
|
|
transition: opacity 1s ease-in-out;
|
|
}
|
|
|
|
.tb-carousel-image-wrapper.tb-active {
|
|
opacity: 1;
|
|
z-index: 1;
|
|
}
|
|
|
|
.tb-carousel-image-wrapper.tb-hidden {
|
|
opacity: 0;
|
|
z-index: 0;
|
|
}
|
|
|
|
.tb-carousel-image {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.tb-single-image-wrapper {
|
|
width: 100%;
|
|
height: var(--unit-100vh);
|
|
overflow: hidden;
|
|
}
|
|
|
|
.tb-sidebar-image {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
}
|
|
|
|
.tb-no-images {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
height: 100%;
|
|
color: #666;
|
|
font-style: italic;
|
|
text-align: center;
|
|
padding: 20px;
|
|
grid-column: 1 / -1;
|
|
grid-row: 1 / -1;
|
|
}
|
|
|
|
/* Image component styles */
|
|
.tb-image-container {
|
|
position: relative;
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: 0;
|
|
}
|
|
|
|
.tb-image-container-loading {
|
|
min-height: 200px;
|
|
}
|
|
|
|
.tb-image-error {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 200px;
|
|
height: 100%;
|
|
border-radius: 5px;
|
|
font-style: italic;
|
|
text-align: center;
|
|
padding: 20px;
|
|
position: relative;
|
|
z-index: 1;
|
|
background-color: color-mix(
|
|
in srgb,
|
|
var(--tb-backgroundColor) 50%,
|
|
transparent
|
|
);
|
|
transition: opacity 0.3s ease-in-out;
|
|
}
|
|
|
|
.tb-image-error.tb-hidden {
|
|
pointer-events: none;
|
|
}
|
|
|
|
.tb-image-error-content {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 15px;
|
|
}
|
|
|
|
.tb-image-error-title {
|
|
font-size: 18px;
|
|
font-weight: 600;
|
|
margin: 0;
|
|
font-style: normal;
|
|
}
|
|
|
|
.tb-image-error-button {
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-image-error-button:hover {
|
|
text-shadow: none;
|
|
}
|
|
|
|
.tb-image-blurhash {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
bottom: 0;
|
|
z-index: 0;
|
|
object-fit: cover;
|
|
filter: blur(0px); /* Blurhash is already blurred */
|
|
}
|
|
|
|
.tb-image-content {
|
|
position: relative;
|
|
object-fit: cover;
|
|
width: 100%;
|
|
height: 100%;
|
|
z-index: 1;
|
|
transition: opacity 0.3s ease-in-out, height 0.5s, width 0.5s;
|
|
opacity: 1;
|
|
}
|
|
|
|
.tb-image-loading-container {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
z-index: 1;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.tb-image-loading {
|
|
position: relative;
|
|
z-index: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12px;
|
|
align-items: flex-start;
|
|
justify-content: center;
|
|
text-align: left;
|
|
font-style: normal;
|
|
padding: 8px;
|
|
color: var(--tb-textColor);
|
|
stroke: var(--tb-textColor);
|
|
background-color: color-mix(
|
|
in srgb,
|
|
var(--tb-backgroundColor) 55%,
|
|
transparent
|
|
);
|
|
border-radius: 22px;
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
box-shadow: -1px 12px 45px 0
|
|
color-mix(in srgb, var(--tb-backgroundColor) 65%, transparent);
|
|
}
|
|
|
|
.tb-image-loading::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
z-index: -1;
|
|
padding: 1px;
|
|
border-radius: inherit;
|
|
background: linear-gradient(
|
|
to bottom right,
|
|
color-mix(in srgb, var(--tb-textColor) 12%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 6%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 12%, transparent)
|
|
);
|
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
mask-composite: xor;
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.tb-image-loading > svg {
|
|
width: 18px;
|
|
height: 18px;
|
|
}
|
|
|
|
/* Project Cards */
|
|
.tb-project-cards-container {
|
|
position: relative;
|
|
flex-grow: 1;
|
|
max-height: 400px;
|
|
height: min(400px, 50vh);
|
|
min-height: 0;
|
|
transition: padding-bottom 0.3s ease;
|
|
padding-bottom: 0;
|
|
}
|
|
|
|
.simplebar-scrolling .tb-project-cards-container {
|
|
padding-bottom: 40px;
|
|
}
|
|
|
|
.tb-project-card {
|
|
flex: 0 0 auto; /* prevent shrinking */
|
|
height: 100%;
|
|
scroll-snap-align: start; /* align each card when scrolling */
|
|
background-color: var(--tb-backgroundColor);
|
|
display: flex;
|
|
gap: 15px;
|
|
flex-direction: column;
|
|
cursor: pointer;
|
|
transition: transform 0.25s ease, box-shadow 0.25s ease;
|
|
}
|
|
|
|
.tb-project-card-wrapper {
|
|
padding: 7px;
|
|
}
|
|
|
|
.tb-project-card:hover {
|
|
transform: scale(1.015);
|
|
}
|
|
|
|
.tb-project-card-content {
|
|
padding-left: 20px;
|
|
display: flex;
|
|
flex-direction: row;
|
|
gap: 15px;
|
|
position: relative;
|
|
justify-content: space-between;
|
|
}
|
|
|
|
.tb-project-type-badge {
|
|
margin: 0;
|
|
border: 2px solid color-mix(in srgb, var(--tb-textColor) 50%, transparent);
|
|
padding: 2px 6px 2px 6px;
|
|
color: var(--tb-textColor);
|
|
border-radius: 12px;
|
|
font-size: 12px;
|
|
width: fit-content;
|
|
}
|
|
|
|
.tb-project-type-badge-wrapper {
|
|
height: 0;
|
|
overflow: hidden;
|
|
transition: opacity 0.3s ease;
|
|
opacity: 0;
|
|
display: flex;
|
|
flex-direction: row;
|
|
gap: 10px;
|
|
}
|
|
|
|
.tb-scroll-top .tb-project-type-badge-wrapper {
|
|
height: 20px;
|
|
opacity: 1;
|
|
}
|
|
|
|
.tb-project-info-wrapper {
|
|
max-height: 0;
|
|
overflow: hidden;
|
|
transition: max-height 0.3s ease, opacity 0.3s ease;
|
|
opacity: 0;
|
|
display: flex;
|
|
flex-direction: row;
|
|
column-gap: 10px;
|
|
row-gap: 10px;
|
|
align-items: center;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.tb-project-tools-list {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
column-gap: 10px;
|
|
row-gap: 5px;
|
|
font-size: 14px;
|
|
max-width: 600px;
|
|
align-items: center;
|
|
}
|
|
|
|
.tb-scroll-top .tb-project-info-wrapper {
|
|
max-height: 100px;
|
|
opacity: 1;
|
|
}
|
|
|
|
.tb-project-client {
|
|
margin: 0;
|
|
font-size: 14px;
|
|
}
|
|
|
|
.tb-project-client-label {
|
|
font-size: 14px;
|
|
opacity: 0.5;
|
|
margin-right: 5px;
|
|
}
|
|
|
|
.tb-project-tool-badge {
|
|
margin: 0;
|
|
border: 2px solid color-mix(in srgb, var(--tb-textColor) 50%, transparent);
|
|
padding: 2px 6px 2px 6px;
|
|
color: var(--tb-textColor);
|
|
border-radius: 12px;
|
|
font-size: 12px;
|
|
width: fit-content;
|
|
}
|
|
|
|
.tb-project-status-badge {
|
|
margin: 0;
|
|
border: 2px solid #ffffff7d;
|
|
padding: 2px 6px 2px 6px;
|
|
color: #ffffff;
|
|
border-radius: 12px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
.tb-project-status-badge-planned {
|
|
border: 2px solid #00a8ff7d;
|
|
color: #00a8ff;
|
|
}
|
|
|
|
.tb-project-status-badge-inProgress {
|
|
border: 2px solid #fbc5317d;
|
|
color: #fbc531;
|
|
}
|
|
|
|
.tb-project-status-badge-complete {
|
|
border: 2px solid #4cd1377d;
|
|
color: #4cd137;
|
|
}
|
|
|
|
.tb-project-card-image-wrapper {
|
|
max-width: 600px;
|
|
width: calc(100vw - var(--tb-page-mobile-padding) * 2);
|
|
max-height: 400px;
|
|
min-height: 0;
|
|
height: min(400px, 50vh);
|
|
overflow: hidden;
|
|
border-radius: 5px;
|
|
}
|
|
|
|
.tb-project-card-image {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
display: block;
|
|
border-top-left-radius: 10px;
|
|
border-top-right-radius: 10px;
|
|
border-bottom: 1px solid var(--tb-textColor);
|
|
}
|
|
|
|
.tb-project-card-placeholder-image {
|
|
width: 100%;
|
|
height: 200px;
|
|
background-color: #eee;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
border-radius: 10px;
|
|
color: #666;
|
|
}
|
|
|
|
.tb-project-card-title {
|
|
font-weight: 600;
|
|
font-size: 18px;
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-project-card-title:before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
bottom: 0;
|
|
width: 4px;
|
|
border-radius: 2px;
|
|
background-color: var(--tb-textColor);
|
|
}
|
|
|
|
.tb-project-cards {
|
|
display: flex;
|
|
flex-wrap: nowrap;
|
|
gap: 5px;
|
|
position: relative;
|
|
height: 100%;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.tb-scroll-btn {
|
|
font-family: "Libre Baskerville", serif;
|
|
font-weight: 400;
|
|
position: absolute;
|
|
top: calc(50% - 17.5px);
|
|
transform: translateY(-50%);
|
|
backdrop-filter: blur(8px);
|
|
-webkit-backdrop-filter: blur(8px);
|
|
box-shadow: -1px 3px 35px 4px var(--tb-backgroundColor);
|
|
background-color: color-mix(
|
|
in srgb,
|
|
var(--tb-backgroundColor) 50%,
|
|
transparent
|
|
);
|
|
cursor: pointer;
|
|
z-index: 10;
|
|
padding: 0;
|
|
width: 40px;
|
|
height: 40px;
|
|
line-height: 0.1px;
|
|
border-radius: 50%;
|
|
transition: background-color 0.3s ease, transform 0.2s ease, opacity 0.3s ease,
|
|
visibility 0.3s ease;
|
|
border: none;
|
|
opacity: 1;
|
|
visibility: visible;
|
|
padding: 10px;
|
|
}
|
|
|
|
.tb-scroll-btn::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
padding: 1px; /* border thickness */
|
|
border-radius: inherit;
|
|
background: linear-gradient(
|
|
to bottom right,
|
|
/* 👈 diagonal gradient */
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 10%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 15%, transparent)
|
|
);
|
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
mask-composite: xor;
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
z-index: 1;
|
|
transition: background 0.3s ease;
|
|
}
|
|
|
|
.tb-scroll-btn > svg {
|
|
transition: fill 0.3s ease;
|
|
fill: var(--tb-textColor);
|
|
margin-bottom: 2px;
|
|
}
|
|
|
|
.tb-scroll-btn:hover {
|
|
background-color: var(--tb-textColor);
|
|
transform: translateY(-50%) scale(1.075);
|
|
}
|
|
|
|
.tb-scroll-btn:active {
|
|
transform: translateY(-50%) scale(0.975);
|
|
}
|
|
|
|
.tb-scroll-btn:hover > svg {
|
|
fill: var(--tb-backgroundColor);
|
|
}
|
|
|
|
.tb-scroll-btn.tb-left {
|
|
left: var(--tb-header-footer-horizontal-padding, 25px);
|
|
}
|
|
|
|
.tb-scroll-btn.tb-right {
|
|
right: var(--tb-header-footer-horizontal-padding, 25px);
|
|
}
|
|
|
|
.tb-page-content-mobile .tb-scroll-btn.tb-left {
|
|
left: var(--tb-page-mobile-padding, 25px);
|
|
}
|
|
|
|
.tb-page-content-mobile .tb-scroll-btn.tb-right {
|
|
right: var(--tb-page-mobile-padding, 25px);
|
|
}
|
|
|
|
.tb-scroll-btn.tb-hidden {
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
pointer-events: none;
|
|
}
|
|
|
|
/* Blog List */
|
|
.tb-blog-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 15px;
|
|
width: 100%;
|
|
}
|
|
|
|
.tb-blog-list-container {
|
|
height: 100%;
|
|
position: relative;
|
|
min-height: 0;
|
|
}
|
|
|
|
.tb-blog-list-scroll {
|
|
height: calc(
|
|
100% + calc(var(--tb-header-footer-vertical-padding) * 2) + 30px
|
|
);
|
|
width: 100%;
|
|
padding-bottom: calc(
|
|
calc(var(--tb-header-footer-vertical-padding) * 2) + 30px
|
|
);
|
|
}
|
|
|
|
.tb-blog-list-scroll .simplebar-content-wrapper {
|
|
scroll-snap-type: y mandatory;
|
|
}
|
|
|
|
/* Content scroll SimpleBar styling */
|
|
.tb-page-vscroll.tb-page-scroll-snap .simplebar-content-wrapper {
|
|
scroll-snap-type: y proximity;
|
|
}
|
|
|
|
.tb-page-hscroll.tb-page-scroll-snap .simplebar-content-wrapper {
|
|
scroll-snap-type: x proximity;
|
|
}
|
|
|
|
.tb-page-vscroll .simplebar-vertical {
|
|
margin-left: var(--tb-page-mobile-padding, 0);
|
|
width: 4px;
|
|
border-radius: 3px;
|
|
overflow: hidden;
|
|
opacity: 0;
|
|
transition: opacity 0.3s ease;
|
|
margin-top: var(--simplebar-track-margin-top, 0);
|
|
margin-bottom: var(--tb-page-margin, 0);
|
|
}
|
|
|
|
.tb-page-vscroll:before {
|
|
content: "";
|
|
position: absolute;
|
|
right: 0;
|
|
top: 0;
|
|
bottom: 0;
|
|
z-index: 1;
|
|
opacity: 0;
|
|
transition: opacity 0.3s ease;
|
|
width: 4px;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.tb-page-vscroll.simplebar-scrolling:before {
|
|
opacity: 1;
|
|
}
|
|
|
|
.tb-page-hscroll .simplebar-horizontal {
|
|
margin-top: 4px;
|
|
height: 4px;
|
|
border-radius: 3px;
|
|
opacity: 0;
|
|
overflow: hidden;
|
|
transition: opacity 0.3s ease;
|
|
background-color: var(--tb-backgroundColor);
|
|
margin-left: var(--tb-page-padding, 0);
|
|
margin-right: var(--tb-page-padding, 0);
|
|
box-shadow: var(--tb-backgroundColor) 0px 0px 20px 20px;
|
|
}
|
|
|
|
.tb-page-content-mobile .tb-page-hscroll .simplebar-horizontal {
|
|
margin-left: var(--tb-page-mobile-padding, 0);
|
|
margin-right: var(--tb-page-mobile-padding, 0);
|
|
}
|
|
|
|
.tb-page-vscroll.simplebar-scrolling .simplebar-vertical {
|
|
opacity: 1;
|
|
}
|
|
|
|
.tb-page-hscroll.simplebar-scrolling .simplebar-horizontal {
|
|
opacity: 1;
|
|
}
|
|
.tb-blog-list-scroll .simplebar-vertical {
|
|
margin-bottom: calc(
|
|
calc(var(--tb-header-footer-vertical-padding) * 2) + 30px
|
|
);
|
|
width: 4px;
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.simplebar-scrollbar:before {
|
|
top: 0px;
|
|
bottom: 0px;
|
|
left: 0px;
|
|
right: 0px;
|
|
background: var(--tb-textColor);
|
|
border-radius: 3px;
|
|
}
|
|
|
|
.simplebar-scrollbar.simplebar-visible,
|
|
.simplebar-scrollbar.simplebar-visible:before {
|
|
opacity: 1;
|
|
}
|
|
|
|
.tb-blog-list-item-wrapper {
|
|
scroll-snap-align: start;
|
|
scroll-snap-stop: normal;
|
|
}
|
|
|
|
.tb-blog-list-item {
|
|
width: 100%;
|
|
}
|
|
|
|
.tb-blog-list-item h3 {
|
|
font-size: 18px;
|
|
padding-bottom: 5px;
|
|
margin-bottom: 0;
|
|
font-weight: 600;
|
|
transition: font-size 0.3s ease;
|
|
}
|
|
|
|
.tb-blog-list-item p {
|
|
font-size: 14px;
|
|
transition: font-size 0.3s ease;
|
|
padding-bottom: 7px;
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
.tb-blog-list-item:hover h3 {
|
|
font-size: 22px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-blog-list-item:hover p {
|
|
font-size: 17px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-blog-list-item-date {
|
|
opacity: 0.75;
|
|
}
|
|
|
|
.tb-blog-list-item-content {
|
|
position: relative;
|
|
padding-left: 20px;
|
|
}
|
|
|
|
.tb-blog-list-item-content:before {
|
|
content: "";
|
|
position: absolute;
|
|
left: 0;
|
|
top: 0;
|
|
bottom: 0;
|
|
width: 4px;
|
|
border-radius: 2px;
|
|
background-color: var(--tb-textColor);
|
|
}
|
|
|
|
.tb-blog-content h1.tb-title {
|
|
font-size: 38px;
|
|
font-weight: 600;
|
|
margin: 10px 0 0 0;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.tb-blog-content-mobile h1.tb-title {
|
|
font-size: 28px;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.tb-blog-content h2.tb-title {
|
|
font-size: 32px;
|
|
font-weight: 600;
|
|
margin: 10px 0 0 0;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.tb-blog-content-mobile h2.tb-title {
|
|
font-size: 26px;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.tb-blog-content p.tb-paragraph {
|
|
font-weight: 500;
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-blog-header {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
transition: gap 0.3s ease;
|
|
width: 100%;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.tb-scroll-top .tb-blog-header {
|
|
gap: 20px;
|
|
}
|
|
|
|
.tb-blog-title {
|
|
font-size: 30px;
|
|
font-weight: 700;
|
|
margin: 0;
|
|
transition: font-size 0.3s ease;
|
|
}
|
|
|
|
.tb-scroll-top .tb-blog-title {
|
|
font-size: 46px;
|
|
}
|
|
|
|
.tb-scroll-top .tb-blog-title-mobile {
|
|
font-size: 36px;
|
|
}
|
|
|
|
.tb-blog-subtitle {
|
|
font-size: 14px;
|
|
transition: font-size 0.3s ease;
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-scroll-top .tb-blog-subtitle {
|
|
font-size: 18px;
|
|
}
|
|
|
|
.tb-blog-date {
|
|
font-size: 12px;
|
|
text-align: end;
|
|
transition: font-size 0.3s ease;
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-scroll-top .tb-blog-date {
|
|
font-size: 16px;
|
|
}
|
|
|
|
.tb-blog-header-meta,
|
|
.tb-blog-header-title {
|
|
display: flex;
|
|
flex-direction: row;
|
|
width: 100%;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
|
|
.tb-project-header-buttons,
|
|
.tb-experience-header-buttons {
|
|
display: flex;
|
|
flex-direction: row;
|
|
gap: 15px;
|
|
align-items: center;
|
|
}
|
|
|
|
.tb-share-button {
|
|
border: none;
|
|
background: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
min-width: 32px;
|
|
height: 32px;
|
|
transition: transform 0.3s ease;
|
|
position: relative;
|
|
}
|
|
|
|
.tb-share-button:hover {
|
|
cursor: pointer;
|
|
transform: scale(1.025);
|
|
}
|
|
|
|
.tb-share-button:active {
|
|
transform: scale(0.975);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-share-button-icon {
|
|
transition: opacity 0.3s ease;
|
|
opacity: 1;
|
|
}
|
|
|
|
.tb-share-button-icon > svg {
|
|
width: auto;
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
transition: opacity 0.3s ease, transform 0.3s ease;
|
|
fill: var(--tb-textColor);
|
|
}
|
|
.tb-share-button-icon.tb-hidden > svg {
|
|
transform: scale(0.5);
|
|
}
|
|
|
|
.tb-share-button-close {
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
left: 0;
|
|
bottom: 0;
|
|
width: auto;
|
|
opacity: 1;
|
|
transition: opacity 0.3s ease;
|
|
}
|
|
|
|
.tb-visit-button {
|
|
border: none;
|
|
background: none;
|
|
padding: 0;
|
|
margin: 3px 0 0 0;
|
|
|
|
border-radius: 22px;
|
|
padding: 8px 14px;
|
|
color: var(--tb-textColor);
|
|
font-weight: 500;
|
|
transition: background-color 0.3s ease, color 0.3s ease, transform 0.3s ease;
|
|
border: 2px solid color-mix(in srgb, var(--tb-textColor) 15%, transparent);
|
|
align-items: center;
|
|
display: inline-flex;
|
|
gap: 6px;
|
|
padding-top: 9px;
|
|
}
|
|
|
|
.tb-visit-button:hover {
|
|
cursor: pointer;
|
|
transform: scale(1.025);
|
|
background-color: var(--tb-textColor);
|
|
color: var(--tb-backgroundColor);
|
|
}
|
|
|
|
.tb-visit-button:active {
|
|
transform: scale(0.975);
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-visit-button > svg {
|
|
width: 12px;
|
|
fill: var(--tb-textColor);
|
|
}
|
|
|
|
.tb-visit-button:hover > svg {
|
|
fill: var(--tb-backgroundColor);
|
|
}
|
|
/* Companies List */
|
|
.tb-companies-list {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 15px;
|
|
width: 100%;
|
|
}
|
|
|
|
.tb-companies-list-container {
|
|
height: 100%;
|
|
max-width: 100%;
|
|
width: fit-content;
|
|
position: relative;
|
|
min-height: 0;
|
|
}
|
|
|
|
.tb-companies-list-item-wrapper {
|
|
scroll-snap-align: start;
|
|
scroll-snap-stop: normal;
|
|
}
|
|
|
|
.tb-companies-list-item {
|
|
width: 100%;
|
|
}
|
|
|
|
.tb-companies-list-item-content {
|
|
position: relative;
|
|
text-align: left;
|
|
display: flex;
|
|
gap: 15px;
|
|
}
|
|
|
|
.tb-companies-list-item-logo {
|
|
max-height: 75px;
|
|
width: 350px;
|
|
max-width: 100%;
|
|
transition: max-height 0.3s ease, width 0.3s ease;
|
|
align-items: flex-start;
|
|
justify-content: flex-start;
|
|
}
|
|
|
|
.tb-h-divider {
|
|
min-width: 4px;
|
|
width: 4px;
|
|
background-color: var(--tb-textColor);
|
|
border-radius: 2px;
|
|
}
|
|
|
|
.tb-v-divider {
|
|
height: 4px;
|
|
width: 100%;
|
|
background-color: var(--tb-textColor);
|
|
border-radius: 2px;
|
|
}
|
|
|
|
.tb-companies-list-item-logo svg {
|
|
fill: var(--tb-textColor);
|
|
height: 100%;
|
|
width: auto;
|
|
max-width: 100%;
|
|
padding: 10px 5px;
|
|
}
|
|
|
|
.tb-companies-list-item-wrapper:hover {
|
|
cursor: pointer;
|
|
}
|
|
|
|
.tb-companies-list-item-wrapper:hover .tb-companies-list-item-logo {
|
|
max-height: 85px;
|
|
width: 400px;
|
|
}
|
|
|
|
.tb-companies-list-item-year {
|
|
font-size: 16px;
|
|
font-weight: 600;
|
|
margin: 0;
|
|
color: var(--tb-textColor);
|
|
max-width: 40px;
|
|
text-align: end;
|
|
}
|
|
|
|
/* Project Page Styles - Matching Blog Page */
|
|
.tb-project-content h1.tb-title {
|
|
font-size: 38px;
|
|
font-weight: 600;
|
|
margin: 10px 0 0 0;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.tb-project-content h1.tb-title:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.tb-project-content-mobile h1.tb-title {
|
|
font-size: 28px;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.tb-project-content-mobile h1.tb-title:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.tb-project-content h2.tb-title {
|
|
font-size: 32px;
|
|
font-weight: 600;
|
|
margin: 10px 0 0 0;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.tb-project-content h2.tb-title:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.tb-project-content-mobile h2.tb-title {
|
|
font-size: 26px;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.tb-project-content-mobile h2.tb-title:first-child {
|
|
margin-top: 0;
|
|
}
|
|
|
|
.tb-project-content p.tb-paragraph {
|
|
font-weight: 500;
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-project-content .tb-image-container {
|
|
width: 100%;
|
|
overflow: hidden;
|
|
border-radius: 5px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.tb-project-header {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
transition: gap 0.3s ease;
|
|
width: 100%;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.tb-scroll-top .tb-project-header {
|
|
gap: 20px;
|
|
}
|
|
|
|
.tb-project-title {
|
|
font-size: 30px;
|
|
font-weight: 700;
|
|
margin: 0;
|
|
transition: font-size 0.3s ease;
|
|
}
|
|
|
|
.tb-scroll-top .tb-project-title {
|
|
font-size: 46px;
|
|
}
|
|
|
|
.tb-scroll-top .tb-project-title-mobile {
|
|
font-size: 36px;
|
|
}
|
|
|
|
.tb-project-subtitle {
|
|
font-size: 14px;
|
|
transition: font-size 0.3s ease;
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-scroll-top .tb-project-subtitle {
|
|
font-size: 18px;
|
|
}
|
|
|
|
.tb-project-date {
|
|
font-size: 12px;
|
|
text-align: end;
|
|
transition: font-size 0.3s ease;
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-scroll-top .tb-project-date {
|
|
font-size: 16px;
|
|
}
|
|
|
|
.tb-project-header-meta,
|
|
.tb-project-header-title {
|
|
display: flex;
|
|
flex-direction: row;
|
|
width: 100%;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
|
|
.tb-experience-logo {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: flex-start;
|
|
width: 300px;
|
|
max-width: 100%;
|
|
transition: width 0.3s ease;
|
|
}
|
|
|
|
.tb-scroll-top .tb-experience-logo {
|
|
width: 350px;
|
|
}
|
|
|
|
.tb-experience-logo > svg {
|
|
fill: var(--tb-textColor);
|
|
height: 45px;
|
|
width: auto;
|
|
max-width: 100%;
|
|
transition: height 0.3s ease;
|
|
}
|
|
|
|
.tb-scroll-top .tb-experience-logo > svg {
|
|
height: 65px;
|
|
}
|
|
|
|
.tb-project-header-meta-items {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
}
|
|
|
|
.tb-project-header-meta-items-left {
|
|
align-items: flex-start;
|
|
}
|
|
|
|
.tb-project-header-meta-items-right {
|
|
align-items: flex-end;
|
|
}
|
|
|
|
/* Experience Page Styles - Matching Project Page */
|
|
.tb-experience-content h1.tb-title {
|
|
font-size: 38px;
|
|
font-weight: 600;
|
|
margin: 10px 0 0 0;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.tb-experience-content-mobile h1.tb-title {
|
|
font-size: 28px;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.tb-experience-content h2.tb-title {
|
|
font-size: 32px;
|
|
font-weight: 600;
|
|
margin: 10px 0 0 0;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.tb-experience-content-mobile h2.tb-title {
|
|
font-size: 26px;
|
|
line-height: 1.2;
|
|
}
|
|
|
|
.tb-experience-content p.tb-paragraph {
|
|
font-weight: 500;
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-experience-content .tb-image-container {
|
|
width: 100%;
|
|
overflow: hidden;
|
|
border-radius: 5px;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.tb-experience-header {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 10px;
|
|
transition: gap 0.3s ease;
|
|
width: 100%;
|
|
margin-bottom: 20px;
|
|
}
|
|
|
|
.tb-scroll-top .tb-experience-header {
|
|
gap: 20px;
|
|
}
|
|
|
|
.tb-experience-title {
|
|
font-size: 30px;
|
|
font-weight: 700;
|
|
margin: 0;
|
|
transition: font-size 0.3s ease;
|
|
}
|
|
|
|
.tb-scroll-top .tb-experience-title {
|
|
font-size: 46px;
|
|
}
|
|
|
|
.tb-scroll-top .tb-experience-title-mobile {
|
|
font-size: 36px;
|
|
}
|
|
|
|
.tb-experience-subtitle {
|
|
font-size: 14px;
|
|
transition: font-size 0.3s ease;
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-scroll-top .tb-experience-subtitle {
|
|
font-size: 18px;
|
|
}
|
|
|
|
.tb-experience-date,
|
|
.tb-experience-months-years {
|
|
font-size: 12px;
|
|
text-align: end;
|
|
transition: font-size 0.3s ease;
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-scroll-top .tb-experience-date,
|
|
.tb-scroll-top .tb-experience-months-years {
|
|
font-size: 16px;
|
|
}
|
|
|
|
.tb-experience-header-meta,
|
|
.tb-experience-header-title {
|
|
display: flex;
|
|
flex-direction: row;
|
|
width: 100%;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
}
|
|
|
|
.tb-experience-header-title {
|
|
gap: 30px;
|
|
}
|
|
|
|
/* Features List */
|
|
.tb-features-list {
|
|
display: flex;
|
|
flex-wrap: wrap;
|
|
gap: 6px;
|
|
font-size: 14px;
|
|
margin: 0.75em 0;
|
|
margin-top: 0.25em;
|
|
max-width: 600px;
|
|
/* Force 2 rows with horizontal scroll if needed */
|
|
overflow: hidden;
|
|
position: relative;
|
|
align-items: center;
|
|
}
|
|
|
|
.tb-features-listItem {
|
|
background-color: var(--tb-textColor);
|
|
color: var(--tb-backgroundColor);
|
|
padding: 4px 8px;
|
|
border-radius: 15px;
|
|
font-size: 0.75rem;
|
|
font-weight: 600;
|
|
text-transform: lowercase;
|
|
}
|
|
|
|
.tb-features-overflow-counter {
|
|
background-color: transparent;
|
|
color: var(--tb-textColor);
|
|
font-weight: 700;
|
|
position: relative;
|
|
display: flex;
|
|
align-items: center;
|
|
opacity: 0.8;
|
|
padding: 0;
|
|
padding-left: 1px;
|
|
}
|
|
|
|
.tb-project-card .tb-features-list {
|
|
margin: 0;
|
|
margin-top: 5px;
|
|
}
|
|
|
|
/* Contact Form */
|
|
.tb-contact-form-wrapper {
|
|
width: 100%;
|
|
}
|
|
|
|
.tb-form {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 15px;
|
|
margin: 0.75em 0;
|
|
width: 100%;
|
|
}
|
|
|
|
.tb-form-input:focus {
|
|
outline: none; /* Removes the default outline */
|
|
box-shadow: none; /* Removes Chrome's blue glow */
|
|
}
|
|
|
|
.tb-form-input {
|
|
border: none;
|
|
border-radius: 18px;
|
|
padding: 6.5px 14px;
|
|
max-width: 400px;
|
|
min-width: 0;
|
|
font-weight: 500;
|
|
background-color: var(--tb-backgroundColor);
|
|
width: 100%;
|
|
}
|
|
|
|
.tb-form-input::placeholder {
|
|
color: color-mix(in srgb, var(--tb-textColor) 50%, transparent);
|
|
}
|
|
|
|
textarea.tb-form-input {
|
|
padding: 12px 14px;
|
|
line-height: 1.5;
|
|
vertical-align: top;
|
|
resize: vertical;
|
|
}
|
|
|
|
.tb-form-input-wrapper {
|
|
position: relative;
|
|
max-width: 400px;
|
|
border-radius: 19px;
|
|
border: 2px solid color-mix(in srgb, var(--tb-textColor) 15%, transparent);
|
|
padding: 0;
|
|
transition: border 0.3s ease;
|
|
}
|
|
|
|
.tb-form-input-wrapper:hover,
|
|
.tb-form-input-wrapper:focus-within {
|
|
border: 2px solid var(--tb-textColor);
|
|
}
|
|
|
|
.tb-form-input-wrapper .tb-form-input {
|
|
background-color: var(--tb-backgroundColor);
|
|
position: relative;
|
|
z-index: 1;
|
|
}
|
|
|
|
.tb-form-input:disabled {
|
|
opacity: 0.5;
|
|
}
|
|
|
|
.tb-form-actions {
|
|
display: flex;
|
|
gap: 15px;
|
|
align-items: center;
|
|
}
|
|
|
|
.tb-form-actions > .tb-button {
|
|
margin: 0;
|
|
}
|
|
|
|
.tb-form-actions > .tb-form-error {
|
|
margin: 0;
|
|
border: 1px solid #ff42457d;
|
|
padding: 3px 6px;
|
|
color: #ff4245;
|
|
border-radius: 12px;
|
|
font-size: 12px;
|
|
}
|
|
|
|
/* CacheReloadView */
|
|
.tbview {
|
|
height: 100%;
|
|
display: flex;
|
|
justify-content: center;
|
|
align-items: center;
|
|
padding: 5px 25px;
|
|
padding-bottom: 10px;
|
|
}
|
|
|
|
.tbcard-mobile {
|
|
width: 100% !important;
|
|
height: 100% !important;
|
|
display: flex !important;
|
|
flex-direction: column !important;
|
|
}
|
|
|
|
.tbcard-desktop {
|
|
width: 70% !important;
|
|
height: 70% !important;
|
|
display: flex !important;
|
|
flex-direction: column !important;
|
|
}
|
|
|
|
.tb-loading-container {
|
|
padding: 20px;
|
|
}
|
|
|
|
.tb-loading-icon {
|
|
font-size: 48px;
|
|
color: white;
|
|
}
|
|
|
|
/* Column Flex Layout */
|
|
.tb-column-flex {
|
|
display: flex;
|
|
flex-direction: row;
|
|
width: 100%;
|
|
align-items: center;
|
|
margin-bottom: 10px;
|
|
}
|
|
|
|
.tb-column-flex-item {
|
|
flex-shrink: 0;
|
|
display: flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.tb-column-flex-item .tb-image-container {
|
|
margin-bottom: 0;
|
|
}
|
|
|
|
/* Responsive behavior for column flex */
|
|
@media (max-width: 768px) {
|
|
.tb-column-flex {
|
|
flex-direction: column;
|
|
gap: 15px;
|
|
}
|
|
|
|
.tb-column-flex-item {
|
|
width: 100% !important;
|
|
}
|
|
}
|
|
|
|
.tb-positions-timeline {
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 15px;
|
|
}
|
|
|
|
.tb-position-timeline-item {
|
|
display: flex;
|
|
flex-direction: row;
|
|
width: 100%;
|
|
gap: 15px;
|
|
}
|
|
|
|
.tb-position-timeline-item-content {
|
|
flex: 1;
|
|
}
|
|
|
|
.tb-position-timeline-item-year {
|
|
max-width: 40px;
|
|
text-align: end;
|
|
font-size: 16px;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.tb-position-timeline-item-name {
|
|
font-weight: 600;
|
|
}
|
|
|
|
/* Video component styles (based on Image component styles) */
|
|
.tb-video-container {
|
|
position: relative;
|
|
width: 100%;
|
|
height: 100%;
|
|
min-height: 0;
|
|
display: flex;
|
|
align-items: center;
|
|
}
|
|
|
|
.tb-video-container-inner {
|
|
border-radius: 5px;
|
|
overflow: hidden;
|
|
width: 100%;
|
|
}
|
|
|
|
.tb-video-container-inner-fullscreen {
|
|
border-radius: 0;
|
|
}
|
|
|
|
.tb-video-container-loading {
|
|
min-height: 200px;
|
|
}
|
|
|
|
.tb-video-error {
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
min-height: 200px;
|
|
height: 100%;
|
|
width: 100%;
|
|
border-radius: 5px;
|
|
font-style: italic;
|
|
text-align: center;
|
|
padding: 20px;
|
|
position: relative;
|
|
z-index: 1;
|
|
background-color: color-mix(
|
|
in srgb,
|
|
var(--tb-backgroundColor) 50%,
|
|
transparent
|
|
);
|
|
border-radius: 5px;
|
|
transition: opacity 0.3s ease-in-out;
|
|
}
|
|
|
|
.tb-video-error.tb-hidden {
|
|
pointer-events: none;
|
|
}
|
|
|
|
.tb-video-placeholder {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
bottom: 0;
|
|
z-index: 0;
|
|
object-fit: cover;
|
|
background-color: var(--tb-textColor);
|
|
opacity: 0.5;
|
|
transition: opacity 0.2s ease-in-out;
|
|
pointer-events: none;
|
|
border-radius: 5px;
|
|
}
|
|
|
|
.tb-video-content {
|
|
position: relative;
|
|
object-fit: cover;
|
|
width: 100%;
|
|
height: 100%;
|
|
z-index: 1;
|
|
transition: opacity 0.3s ease-in-out, height 0.5s, width 0.5s;
|
|
opacity: 1;
|
|
display: block;
|
|
border-radius: 0;
|
|
}
|
|
|
|
.tb-video-loading-container {
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
width: 100%;
|
|
height: 100%;
|
|
z-index: 1;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
}
|
|
|
|
.tb-video-loading {
|
|
position: relative;
|
|
z-index: 1;
|
|
display: flex;
|
|
flex-direction: column;
|
|
gap: 12px;
|
|
align-items: center;
|
|
justify-content: center;
|
|
text-align: left;
|
|
font-style: normal;
|
|
padding: 8px;
|
|
color: var(--tb-textColor);
|
|
stroke: var(--tb-textColor);
|
|
background-color: color-mix(
|
|
in srgb,
|
|
var(--tb-backgroundColor) 55%,
|
|
transparent
|
|
);
|
|
border-radius: 22px;
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
box-shadow: -1px 12px 45px 0
|
|
color-mix(in srgb, var(--tb-backgroundColor) 65%, transparent);
|
|
}
|
|
|
|
.tb-video-loading::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
z-index: -1;
|
|
padding: 1px;
|
|
border-radius: inherit;
|
|
background: linear-gradient(
|
|
to bottom right,
|
|
color-mix(in srgb, var(--tb-textColor) 12%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 6%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 12%, transparent)
|
|
);
|
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
mask-composite: xor;
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.tb-video-loading > svg {
|
|
width: 18px;
|
|
height: 18px;
|
|
}
|
|
|
|
.tb-video-loading-progress {
|
|
max-width: 200px;
|
|
width: 200px;
|
|
height: 6px;
|
|
background-color: color-mix(in srgb, var(--tb-textColor) 25%, transparent);
|
|
border-radius: 3px;
|
|
overflow: hidden;
|
|
margin: 5px;
|
|
}
|
|
|
|
.tb-video-loading-progress-bar {
|
|
height: 100%;
|
|
width: 0;
|
|
background-image: linear-gradient(
|
|
90deg,
|
|
color-mix(in srgb, var(--tb-textColor) 100%, transparent) 0%,
|
|
color-mix(in srgb, var(--tb-textColor) 75%, transparent) 16.16%,
|
|
color-mix(in srgb, var(--tb-textColor) 50%, transparent) 33.33%,
|
|
color-mix(in srgb, var(--tb-textColor) 50%, transparent) 66.67%,
|
|
color-mix(in srgb, var(--tb-textColor) 75%, transparent) 83.33%,
|
|
color-mix(in srgb, var(--tb-textColor) 100%, transparent) 100%
|
|
);
|
|
background-size: 200% 100%;
|
|
background-position: 0 0;
|
|
transition: width 0.3s ease-in-out;
|
|
border-radius: 3px;
|
|
animation: tb-video-loading-progress-shift 1.4s linear infinite;
|
|
will-change: background-position;
|
|
}
|
|
|
|
@keyframes tb-video-loading-progress-shift {
|
|
0% {
|
|
background-position: 0 0;
|
|
}
|
|
100% {
|
|
background-position: 200% 0;
|
|
}
|
|
}
|
|
|
|
.tb-video-controls {
|
|
position: absolute;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
display: flex;
|
|
gap: 8px;
|
|
align-items: center;
|
|
margin: 15px;
|
|
padding: 0 12px;
|
|
background-color: color-mix(
|
|
in srgb,
|
|
var(--tb-backgroundColor) 55%,
|
|
transparent
|
|
);
|
|
border-radius: 30px;
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
box-shadow: -1px 12px 45px 0
|
|
color-mix(in srgb, var(--tb-backgroundColor) 65%, transparent);
|
|
z-index: 2;
|
|
transition: opacity 0.3s ease-in-out, visibility 0.3s ease-in-out,
|
|
margin 0.3s ease-in-out;
|
|
opacity: 1;
|
|
}
|
|
|
|
.tb-video-controls-fullscreen {
|
|
margin: 40px;
|
|
}
|
|
|
|
.tb-video-controls::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
z-index: -1;
|
|
padding: 1px;
|
|
border-radius: inherit;
|
|
background: linear-gradient(
|
|
to bottom right,
|
|
color-mix(in srgb, var(--tb-textColor) 12%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 6%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 12%, transparent)
|
|
);
|
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
mask-composite: xor;
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.tb-video-controls-separator {
|
|
width: 1px;
|
|
height: 18px;
|
|
background-color: color-mix(in srgb, var(--tb-textColor) 25%, transparent);
|
|
}
|
|
|
|
.tb-video-seek.rc-slider {
|
|
height: 4px;
|
|
transition: height 0.3s ease-in-out;
|
|
padding: 0;
|
|
}
|
|
|
|
.tb-video-seek .rc-slider-rail {
|
|
background: color-mix(in srgb, var(--tb-textColor) 25%, transparent);
|
|
transition: height 0.3s ease-in-out;
|
|
}
|
|
|
|
.tb-video-seek .rc-slider-track {
|
|
background: var(--tb-textColor);
|
|
transition: height 0.3s ease-in-out;
|
|
}
|
|
|
|
.tb-video-seek .rc-slider-handle {
|
|
opacity: 0;
|
|
background: var(--tb-textColor);
|
|
border: none;
|
|
transform: scale(0.5);
|
|
transform-origin: center center;
|
|
transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out,
|
|
margin-top 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
|
|
box-shadow: none;
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
|
|
.tb-video-seek.rc-slider:active .rc-slider-handle,
|
|
.tb-video-seek.rc-slider:hover .rc-slider-handle {
|
|
margin-top: -5px;
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
|
|
.tb-video-seek.rc-slider .rc-slider-handle-dragging {
|
|
border: none !important;
|
|
box-shadow: 0px 0px 25px 0
|
|
color-mix(in srgb, var(--tb-textColor) 75%, transparent);
|
|
}
|
|
|
|
.tb-video-seek.rc-slider:active,
|
|
.tb-video-seek.rc-slider:hover,
|
|
.tb-video-seek.rc-slider:active .rc-slider-track,
|
|
.tb-video-seek.rc-slider:active .rc-slider-rail,
|
|
.tb-video-seek.rc-slider:hover .rc-slider-track,
|
|
.tb-video-seek.rc-slider:hover .rc-slider-rail {
|
|
height: 6px;
|
|
}
|
|
|
|
.tb-video-volume {
|
|
width: 96px;
|
|
}
|
|
|
|
.tb-video-controls.tb-hidden {
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.tb-video-volume-popup {
|
|
position: absolute;
|
|
padding: 15px;
|
|
width: auto;
|
|
z-index: 1000;
|
|
|
|
transform-origin: bottom center !important;
|
|
background-color: color-mix(
|
|
in srgb,
|
|
var(--tb-backgroundColor) 55%,
|
|
transparent
|
|
);
|
|
border-radius: 30px;
|
|
backdrop-filter: blur(12px);
|
|
-webkit-backdrop-filter: blur(12px);
|
|
box-shadow: -1px 12px 45px 0
|
|
color-mix(in srgb, var(--tb-backgroundColor) 65%, transparent);
|
|
}
|
|
|
|
.tb-video-volume-popup:before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 0;
|
|
z-index: -1;
|
|
padding: 1px;
|
|
border-radius: inherit;
|
|
background: linear-gradient(
|
|
to bottom right,
|
|
color-mix(in srgb, var(--tb-textColor) 12%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 6%, transparent),
|
|
color-mix(in srgb, var(--tb-textColor) 12%, transparent)
|
|
);
|
|
mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
-webkit-mask: linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);
|
|
mask-composite: xor;
|
|
-webkit-mask-composite: xor;
|
|
mask-composite: exclude;
|
|
pointer-events: none;
|
|
}
|
|
|
|
.tb-video-volume-popup-container {
|
|
margin: 4px 0;
|
|
}
|
|
|
|
.tb-video-volume.rc-slider {
|
|
width: 4px;
|
|
height: 120px;
|
|
padding: 0;
|
|
transition: width 0.3s ease-in-out;
|
|
}
|
|
|
|
.tb-video-volume.rc-slider .rc-slider-rail {
|
|
background: color-mix(in srgb, var(--tb-textColor) 25%, transparent);
|
|
transition: width 0.3s ease-in-out;
|
|
width: 4px;
|
|
}
|
|
|
|
.tb-video-volume.rc-slider .rc-slider-track {
|
|
background: var(--tb-textColor);
|
|
transition: width 0.3s ease-in-out;
|
|
width: 4px;
|
|
margin-left: 0;
|
|
left: 0;
|
|
}
|
|
|
|
.tb-video-volume.rc-slider:active,
|
|
.tb-video-volume.rc-slider:hover,
|
|
.tb-video-volume.rc-slider:active .rc-slider-track,
|
|
.tb-video-volume.rc-slider:active .rc-slider-rail,
|
|
.tb-video-volume.rc-slider:hover .rc-slider-track,
|
|
.tb-video-volume.rc-slider:hover .rc-slider-rail {
|
|
width: 6px;
|
|
}
|
|
|
|
.tb-video-volume.rc-slider .rc-slider-handle {
|
|
margin-left: -6px;
|
|
opacity: 0;
|
|
background: var(--tb-textColor);
|
|
border: none;
|
|
transform: scale(0.5);
|
|
transform-origin: center center;
|
|
transition: opacity 0.3s ease-in-out, transform 0.3s ease-in-out,
|
|
margin-left 0.3s ease-in-out, box-shadow 0.3s ease-in-out;
|
|
box-shadow: none;
|
|
width: 16px;
|
|
height: 16px;
|
|
}
|
|
|
|
.tb-video-volume.rc-slider:active .rc-slider-handle,
|
|
.tb-video-volume.rc-slider:hover .rc-slider-handle {
|
|
margin-left: -5px;
|
|
opacity: 1;
|
|
transform: scale(1);
|
|
}
|
|
|
|
.tb-video-volume.rc-slider .rc-slider-handle-dragging {
|
|
border: none !important;
|
|
box-shadow: 0px 0px 25px 0
|
|
color-mix(in srgb, var(--tb-textColor) 75%, transparent);
|
|
}
|
|
|
|
.tb-video-volume-button > .tb-icon-button > svg {
|
|
width: auto;
|
|
}
|