Initial site release
Deploy GitHub Pages / deploy (push) Canceled after 0s

This commit is contained in:
2026-10-02 12:46:11 +03:00
commit 8fe818e647
23 changed files with 2854 additions and 0 deletions
+194
View File
@@ -0,0 +1,194 @@
/* ============================================================
AnwarPi — shared motion & brand layer
Loaded after each page's inline styles; tokens stay in-page.
============================================================ */
/* ---- Shared palette: cool light on deep blue-black ---- */
:root {
--bg: oklch(16% 0.03 225);
--surface: oklch(22% 0.04 220);
--fg: oklch(96% 0.015 210);
--muted: oklch(74% 0.03 215);
--border: oklch(36% 0.05 215);
--accent: oklch(78% 0.17 190);
}
/* ---- Shared responsive safeguards ---- */
html, body { max-width: 100%; overflow-x: clip; }
img, svg, video { height: auto; }
main, section, .container, .grid, [class*="grid"], [class*="layout"] { min-width: 0; }
code, pre, bdi { overflow-wrap: anywhere; }
pre, table { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
:focus-visible { outline-color: var(--accent); }
@media (pointer: coarse) {
a, button, input, select, textarea, summary, .btn, .icon-btn { min-height: 44px; }
}
@media (max-width: 920px) {
:root { --gutter: 22px; }
.container { width: 100%; }
/* Keep primary navigation visible on phones and tablets. */
.topnav .nav-inner,
.topnav .topnav-inner {
flex-wrap: wrap;
gap: 0 16px;
padding-top: 10px;
}
.topnav .logo,
.topnav .nav-tools { margin-bottom: 10px; }
.topnav .logo { min-height: 50px; }
input, select, textarea { min-height: 48px; font-size: 16px; }
.footer-col a { min-height: 44px; display: flex; align-items: center; }
.section-head { gap: 20px; }
.demo-strip { padding-inline: var(--gutter); }
.table-wrap, .billing-table { max-width: 100%; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.topnav .nav-links,
.topnav .topnav-inner > nav {
display: flex;
order: 3;
flex: 0 0 calc(100% + (var(--gutter) * 2));
gap: 8px;
margin-inline: calc(var(--gutter) * -1);
padding-inline: var(--gutter);
overflow-x: auto;
overscroll-behavior-inline: contain;
scrollbar-width: none;
border-top: 1px solid var(--border);
}
.topnav .nav-links::-webkit-scrollbar,
.topnav .topnav-inner > nav::-webkit-scrollbar { display: none; }
.topnav .nav-links a,
.topnav .topnav-inner > nav a {
flex: none;
min-height: 52px;
padding-inline: 12px;
white-space: nowrap;
position: relative;
}
.topnav a[aria-current="page"] {
position: relative;
color: var(--fg);
font-weight: 700;
}
.topnav a[aria-current="page"]::after {
content: "";
position: absolute;
inset-inline: 12px;
bottom: 5px;
height: 3px;
border-radius: 999px;
background: var(--accent);
}
.topnav .nav-links + .nav-tools .menu-trigger,
.topnav .topnav-inner > nav + .nav-tools .menu-trigger { display: none; }
.menu-drawer { width: min(520px, 92vw); }
.dialog-card, .modal-card { max-width: calc(100vw - 36px); max-height: calc(100dvh - 36px); overflow-y: auto; }
}
@media (max-width: 620px) {
:root { --gutter: 18px; }
body { line-height: 1.7; }
h1 { font-size: clamp(38px, 11vw, 50px) !important; overflow-wrap: normal; word-break: normal; }
h2 { overflow-wrap: normal; word-break: normal; }
.topnav .logo { font-size: 20px; }
.topnav .nav-return { display: inline-flex !important; min-height: 44px; align-items: center; font-size: 13px; padding-inline: 4px; }
.topnav .nav-inner,
.topnav .topnav-inner { gap: 0 10px; }
.topnav .nav-links,
.topnav .topnav-inner > nav { gap: 4px; }
.topnav .nav-links a,
.topnav .topnav-inner > nav a { padding-inline: 10px; }
.hero-cta, .dialog-actions, .form-actions { align-items: stretch; gap: 12px; }
.hero-cta .btn, .dialog-actions .btn, .form-actions .btn { width: 100%; }
.pagefoot { padding-block: 40px; }
.footer-bottom { gap: 12px; }
.card, .membership-card, .paywall, .plan, .team-contact { padding-inline: 20px; }
.dialog-card, .modal-card, .dialog-panel, .modal-panel { max-width: calc(100vw - 28px); }
}
/* ---- Brand mark: real logo image replaces the geometric span ---- */
img.logo-mark {
width: 30px;
height: 34px;
object-fit: contain;
transform: none;
background: none;
border-radius: 4px;
flex: none;
}
/* ---- Text selection on dark canvas ---- */
::selection { background: color-mix(in oklch, var(--accent) 28%, transparent); }
/* ---- Button hover: light-sweep + lift (AnwarPi "light" motif) ---- */
@media (prefers-reduced-motion: no-preference) {
.btn, .btn-primary, .btn-secondary, .btn-ghost, .icon-btn {
position: relative;
overflow: hidden;
transition: transform .18s ease, box-shadow .18s ease, background-color .18s ease, border-color .18s ease, color .18s ease;
}
.btn::after, .btn-primary::after, .btn-secondary::after, .btn-ghost::after, .icon-btn::after {
content: "";
position: absolute;
inset-block: 0;
inset-inline-start: -45%;
width: 34%;
background: linear-gradient(100deg, transparent 0%, rgba(255, 255, 255, 0.45) 50%, transparent 100%);
transform: skewX(-18deg);
opacity: 0;
pointer-events: none;
}
.btn:hover::after, .btn-primary:hover::after, .btn-secondary:hover::after,
.btn-ghost:hover::after, .icon-btn:hover::after {
animation: anw-sweep 0.85s cubic-bezier(0.4, 0, 0.2, 1);
}
.btn:hover, .btn-primary:hover, .btn-secondary:hover, .btn-ghost:hover, .icon-btn:hover {
transform: translateY(-1px);
}
.btn-primary:hover, .btn:hover {
box-shadow: 0 8px 28px color-mix(in oklch, var(--accent) 30%, transparent);
}
.btn:active, .btn-primary:active, .btn-secondary:active, .btn-ghost:active, .icon-btn:active {
transform: translateY(0);
}
}
@keyframes anw-sweep {
0% { opacity: 1; inset-inline-start: -45%; }
100% { opacity: 1; inset-inline-start: 118%; }
}
/* ---- Scroll reveal (driven by anwarpi.js) ---- */
[data-anw] {
transition: opacity 0.7s ease, transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
}
.anw-anim [data-anw]:not(.anw-in) {
opacity: 0;
transform: translateY(18px);
}
/* ---- WebGL canvas sits behind everything, above the root background ---- */
#anwarpi-bg {
position: fixed;
inset: 0;
width: 100%;
height: 100%;
z-index: -1;
pointer-events: none;
transition: opacity 0.9s ease;
}
/* ---- Hero brand mark: the beam logo, black field dissolved into the canvas ---- */
.hero-logo {
display: block;
width: 68px;
height: auto;
border-radius: 6px;
mix-blend-mode: screen; /* drops the jpg's black field — only the beams glow */
margin-block-end: 26px;
}
/* ---- Dark-theme correction: scrims must dim with black, not --fg (now white) ---- */
.dialog-scrim, .menu-scrim, .modal { background: rgba(5, 5, 5, 0.68); }