271 lines
6.0 KiB
CSS
271 lines
6.0 KiB
CSS
@import url('https://fonts.googleapis.com/css2?family=Pacifico&display=swap');
|
|
@import './tokens.css';
|
|
|
|
@font-face {
|
|
font-family: 'IRANYekanXVF';
|
|
src: url('/fonts/IRANYekanXVF.ttf') format('truetype-variations');
|
|
font-style: normal;
|
|
font-weight: 100 1000;
|
|
font-display: swap;
|
|
}
|
|
|
|
*, *::before, *::after {
|
|
box-sizing: border-box;
|
|
margin: 0;
|
|
padding: 0;
|
|
}
|
|
|
|
html {
|
|
font-size: 100%;
|
|
scroll-behavior: smooth;
|
|
color-scheme: light;
|
|
}
|
|
|
|
html[data-theme="dark"] {
|
|
color-scheme: dark;
|
|
}
|
|
|
|
html[data-site-loading='true'] {
|
|
overflow: hidden;
|
|
}
|
|
|
|
body {
|
|
width: 100%;
|
|
min-width: 320px;
|
|
background-color: var(--bg-page);
|
|
color: var(--text-primary);
|
|
font-family: 'IRANYekanXVF', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
|
|
font-synthesis: none;
|
|
-webkit-font-smoothing: antialiased;
|
|
-moz-osx-font-smoothing: grayscale;
|
|
overflow-x: hidden;
|
|
transition: background-color 0.25s ease, color 0.25s ease;
|
|
}
|
|
|
|
/* Master 1440px Fixed Canvas */
|
|
.desktop-canvas {
|
|
width: 100%;
|
|
max-width: var(--layout-frame);
|
|
min-width: 0;
|
|
margin: 0 auto;
|
|
position: relative;
|
|
background-color: var(--bg-page);
|
|
overflow: hidden;
|
|
}
|
|
|
|
/* On ultra-wide viewports let decorative bleed elements escape the
|
|
canvas. body { overflow-x: hidden } prevents horizontal scrollbars. */
|
|
@media (min-width: 1441px) {
|
|
.desktop-canvas {
|
|
overflow: visible;
|
|
}
|
|
}
|
|
|
|
/* 1320px Inner Content Container with Page Gutters */
|
|
.content-container {
|
|
width: calc(100% - (2 * var(--layout-page-gutter)));
|
|
max-width: var(--layout-container);
|
|
margin: 0 auto;
|
|
position: relative;
|
|
}
|
|
|
|
@media (max-width: 650px) {
|
|
.section-header {
|
|
margin-bottom: var(--space-6);
|
|
}
|
|
|
|
.section-title {
|
|
font-size: 1.75rem;
|
|
line-height: 2.375rem;
|
|
}
|
|
|
|
.section-underline {
|
|
width: 5.5rem;
|
|
}
|
|
}
|
|
|
|
/* Common Section Header Component Styles */
|
|
.section-header {
|
|
display: flex;
|
|
flex-direction: column;
|
|
align-items: flex-start;
|
|
margin-bottom: 2.5rem;
|
|
}
|
|
|
|
.section-eyebrow {
|
|
font-size: var(--font-size-label-small);
|
|
line-height: var(--line-height-label-small);
|
|
letter-spacing: var(--letter-spacing-eyebrow);
|
|
text-transform: uppercase;
|
|
font-weight: 700;
|
|
color: var(--text-secondary);
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.section-title-wrap {
|
|
position: relative;
|
|
display: inline-flex;
|
|
flex-direction: column;
|
|
}
|
|
|
|
.section-title {
|
|
max-width: 24ch;
|
|
font-size: clamp(1.875rem, 3vw, 2.5rem);
|
|
line-height: 1.15;
|
|
font-weight: 760;
|
|
letter-spacing: -0.035em;
|
|
color: var(--text-primary);
|
|
margin-bottom: 0.75rem;
|
|
}
|
|
|
|
.section-underline {
|
|
width: 7.5rem;
|
|
height: 3px;
|
|
background-color: var(--accent-default);
|
|
border-radius: var(--radius-pill);
|
|
transform-origin: left center;
|
|
}
|
|
|
|
/* One-time viewport reveals. Content remains visible when JavaScript is unavailable. */
|
|
html[data-motion-ready='true'] [data-reveal] {
|
|
opacity: 0;
|
|
transform: translateY(1rem);
|
|
transition:
|
|
opacity var(--motion-duration-reveal) var(--motion-ease-out),
|
|
transform var(--motion-duration-reveal) var(--motion-ease-out);
|
|
transition-delay: var(--reveal-delay, 0ms);
|
|
will-change: opacity, transform;
|
|
}
|
|
|
|
html[data-motion-ready='true'] [data-reveal='soft'] {
|
|
transform: translateY(0.625rem);
|
|
}
|
|
|
|
html[data-motion-ready='true'] [data-reveal='scale'] {
|
|
transform: translateY(0.5rem) scale(0.97);
|
|
}
|
|
|
|
html[data-motion-ready='true'] [data-reveal='image'] {
|
|
transform: translateY(0.5rem) scale(0.985);
|
|
}
|
|
|
|
html[data-motion-ready='true'] [data-reveal][data-visible='true'] {
|
|
opacity: 1;
|
|
transform: translateY(0) scale(1);
|
|
will-change: auto;
|
|
}
|
|
|
|
html[data-motion-ready='true'] [data-visible='true'] .section-underline {
|
|
animation: motionUnderline 500ms var(--motion-ease-out) 120ms both;
|
|
}
|
|
|
|
@keyframes motionUnderline {
|
|
from {
|
|
opacity: 0;
|
|
transform: scaleX(0.25);
|
|
}
|
|
to {
|
|
opacity: 1;
|
|
transform: scaleX(1);
|
|
}
|
|
}
|
|
|
|
/* Pacifico Display Font Class */
|
|
.font-display {
|
|
font-family: 'Pacifico', cursive;
|
|
font-weight: 400;
|
|
}
|
|
|
|
/* Pill Button */
|
|
.pill-btn {
|
|
display: inline-flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
gap: 0.5rem;
|
|
height: var(--size-button-height);
|
|
padding: 0 1.5rem;
|
|
border-radius: var(--radius-pill);
|
|
font-size: var(--font-size-button);
|
|
line-height: var(--line-height-button);
|
|
font-weight: 600;
|
|
cursor: pointer;
|
|
text-decoration: none;
|
|
transition:
|
|
color var(--motion-duration-fast) ease,
|
|
background-color var(--motion-duration-fast) ease,
|
|
border-color var(--motion-duration-fast) ease,
|
|
box-shadow var(--motion-duration-default) ease,
|
|
transform var(--motion-duration-fast) var(--motion-ease-out);
|
|
border: 1px solid transparent;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.pill-btn:focus-visible,
|
|
a:focus-visible,
|
|
button:focus-visible,
|
|
input:focus-visible {
|
|
outline: 3px solid var(--focus-ring);
|
|
outline-offset: 3px;
|
|
}
|
|
|
|
.pill-btn:active,
|
|
button:active:not(:disabled) {
|
|
transform: translateY(1px) scale(0.99);
|
|
}
|
|
|
|
.pill-btn-outline {
|
|
background: rgba(255, 255, 255, 0.4);
|
|
backdrop-filter: blur(10px);
|
|
border-color: var(--border-default);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
[data-theme="dark"] .pill-btn-outline {
|
|
background: rgba(9, 28, 63, 0.6);
|
|
border-color: var(--border-default);
|
|
color: var(--text-primary);
|
|
}
|
|
|
|
.pill-btn-primary {
|
|
background-color: var(--action-primary-bg);
|
|
color: var(--action-primary-fg);
|
|
border-color: transparent;
|
|
}
|
|
|
|
@media (prefers-reduced-motion: reduce) {
|
|
html {
|
|
scroll-behavior: auto;
|
|
}
|
|
|
|
*, *::before, *::after {
|
|
scroll-behavior: auto !important;
|
|
transition-duration: 0.01ms !important;
|
|
animation-duration: 0.01ms !important;
|
|
animation-iteration-count: 1 !important;
|
|
}
|
|
}
|
|
|
|
a {
|
|
color: inherit;
|
|
text-decoration: none;
|
|
}
|
|
|
|
@media (hover: hover) and (pointer: fine) {
|
|
.pill-btn-outline:hover {
|
|
border-color: var(--accent-default);
|
|
background: rgba(255, 255, 255, 0.7);
|
|
transform: translateY(-1px);
|
|
}
|
|
|
|
[data-theme="dark"] .pill-btn-outline:hover {
|
|
border-color: var(--accent-default);
|
|
background: rgba(16, 63, 127, 0.8);
|
|
}
|
|
|
|
.pill-btn-primary:hover {
|
|
background-color: var(--action-primary-hover);
|
|
box-shadow: 0 4px 12px var(--shadow-color);
|
|
transform: translateY(-1px);
|
|
}
|
|
}
|