fix(mobile): resolve navbar width and section layout overflow
This commit is contained in:
1 parent
f49ec4137c
commit
837e03b462
2 files changed
+305
-105
No files matched your search
@@ -1,19 +1,52 @@
|
||||
<header class="site-header">
|
||||
<header class="site-header" id="site-header">
|
||||
<div class="nav-inner">
|
||||
<a href="/" class="brand" aria-label="TIS RMS home">
|
||||
<img src="/tis_logo.png" alt="" width="36" height="36" />
|
||||
<span><strong>TIS RMS</strong><small>Talisay Integrated School</small></span>
|
||||
</a>
|
||||
<nav aria-label="Main navigation">
|
||||
|
||||
<nav class="desktop-nav" aria-label="Main navigation">
|
||||
<a href="https://demo.tis-rms.cc.cd" target="_blank" rel="noopener noreferrer">Live demo</a>
|
||||
<a href="https://docs.tis-rms.cc.cd" target="_blank" rel="noopener noreferrer">Documentation</a>
|
||||
<a href="#downloads">Downloads</a>
|
||||
</nav>
|
||||
<button class="theme-toggle" id="theme-toggle" type="button" aria-label="Switch to dark theme" aria-pressed="false">
|
||||
<svg class="theme-icon theme-icon-sun" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2m0 16v2M4.93 4.93l1.42 1.42m11.3 11.3 1.42 1.42M2 12h2m16 0h2M4.93 19.07l1.42-1.42m11.3-11.3 1.42-1.42"/></svg>
|
||||
<svg class="theme-icon theme-icon-moon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20.9 13A9 9 0 0 1 11 3.1 9 9 0 1 0 20.9 13Z"/></svg>
|
||||
<span class="theme-toggle-label">Dark</span>
|
||||
</button>
|
||||
|
||||
<div class="nav-actions">
|
||||
<button class="theme-toggle" id="theme-toggle" type="button" aria-label="Switch to dark theme" aria-pressed="false">
|
||||
<svg class="theme-icon theme-icon-sun" viewBox="0 0 24 24" aria-hidden="true"><circle cx="12" cy="12" r="4"/><path d="M12 2v2m0 16v2M4.93 4.93l1.42 1.42m11.3 11.3 1.42 1.42M2 12h2m16 0h2M4.93 19.07l1.42-1.42m11.3-11.3 1.42-1.42"/></svg>
|
||||
<svg class="theme-icon theme-icon-moon" viewBox="0 0 24 24" aria-hidden="true"><path d="M20.9 13A9 9 0 0 1 11 3.1 9 9 0 1 0 20.9 13Z"/></svg>
|
||||
<span class="theme-toggle-label">Dark</span>
|
||||
</button>
|
||||
|
||||
<button class="menu-toggle" id="menu-toggle" type="button" aria-label="Open menu" aria-expanded="false" aria-controls="mobile-nav">
|
||||
<svg class="menu-icon menu-icon-open" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
||||
<line x1="4" y1="7" x2="20" y2="7"/>
|
||||
<line x1="4" y1="12" x2="20" y2="12"/>
|
||||
<line x1="4" y1="17" x2="20" y2="17"/>
|
||||
</svg>
|
||||
<svg class="menu-icon menu-icon-close" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true">
|
||||
<line x1="18" y1="6" x2="6" y2="18"/>
|
||||
<line x1="6" y1="6" x2="18" y2="18"/>
|
||||
</svg>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mobile-nav" id="mobile-nav" aria-label="Mobile navigation" hidden>
|
||||
<div class="mobile-nav-content">
|
||||
<a href="https://demo.tis-rms.cc.cd" target="_blank" rel="noopener noreferrer" class="mobile-nav-link">
|
||||
<span>Live demo</span>
|
||||
<span class="mobile-nav-badge">Demo ↗</span>
|
||||
</a>
|
||||
<a href="https://docs.tis-rms.cc.cd" target="_blank" rel="noopener noreferrer" class="mobile-nav-link">
|
||||
<span>Documentation</span>
|
||||
<span class="mobile-nav-arrow" aria-hidden="true">↗</span>
|
||||
</a>
|
||||
<a href="#downloads" class="mobile-nav-link mobile-nav-highlight">
|
||||
<span>Downloads</span>
|
||||
<span class="mobile-nav-arrow" aria-hidden="true">↓</span>
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</header>
|
||||
|
||||
@@ -28,7 +61,7 @@
|
||||
toggle?.setAttribute("aria-label", `Switch to ${theme === "dark" ? "light" : "dark"} theme`);
|
||||
const label = toggle?.querySelector(".theme-toggle-label");
|
||||
if (label) label.textContent = theme === "dark" ? "Light" : "Dark";
|
||||
themeColor?.setAttribute("content", theme === "dark" ? "#0f172a" : "#f8fafc");
|
||||
themeColor?.setAttribute("content", theme === "dark" ? "#0b1120" : "#f8fafc");
|
||||
}
|
||||
|
||||
const savedTheme = localStorage.getItem("tis-rms-theme");
|
||||
@@ -39,4 +72,56 @@
|
||||
applyTheme(nextTheme);
|
||||
localStorage.setItem("tis-rms-theme", nextTheme);
|
||||
});
|
||||
|
||||
const menuToggle = document.getElementById("menu-toggle");
|
||||
const mobileNav = document.getElementById("mobile-nav");
|
||||
|
||||
function closeMobileNav() {
|
||||
if (!mobileNav || mobileNav.hidden) return;
|
||||
mobileNav.hidden = true;
|
||||
menuToggle?.setAttribute("aria-expanded", "false");
|
||||
menuToggle?.setAttribute("aria-label", "Open menu");
|
||||
}
|
||||
|
||||
function openMobileNav() {
|
||||
if (!mobileNav) return;
|
||||
mobileNav.hidden = false;
|
||||
menuToggle?.setAttribute("aria-expanded", "true");
|
||||
menuToggle?.setAttribute("aria-label", "Close menu");
|
||||
}
|
||||
|
||||
menuToggle?.addEventListener("click", (e) => {
|
||||
e.stopPropagation();
|
||||
const isExpanded = menuToggle.getAttribute("aria-expanded") === "true";
|
||||
if (isExpanded) {
|
||||
closeMobileNav();
|
||||
} else {
|
||||
openMobileNav();
|
||||
}
|
||||
});
|
||||
|
||||
mobileNav?.querySelectorAll("a").forEach((link) => {
|
||||
link.addEventListener("click", () => {
|
||||
closeMobileNav();
|
||||
});
|
||||
});
|
||||
|
||||
document.addEventListener("click", (e) => {
|
||||
const header = document.getElementById("site-header");
|
||||
if (header && !header.contains(e.target as Node)) {
|
||||
closeMobileNav();
|
||||
}
|
||||
});
|
||||
|
||||
document.addEventListener("keydown", (e) => {
|
||||
if (e.key === "Escape") {
|
||||
closeMobileNav();
|
||||
}
|
||||
});
|
||||
|
||||
window.addEventListener("resize", () => {
|
||||
if (window.innerWidth >= 768) {
|
||||
closeMobileNav();
|
||||
}
|
||||
});
|
||||
</script>
|
||||
+212
-97
@@ -40,121 +40,201 @@
|
||||
}
|
||||
|
||||
* { box-sizing: border-box; }
|
||||
html { scroll-behavior: smooth; background: var(--bg); color-scheme: light; overflow-x: clip; }
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
background: var(--bg);
|
||||
color-scheme: light;
|
||||
overflow-x: hidden;
|
||||
width: 100%;
|
||||
}
|
||||
html[data-theme="dark"] { color-scheme: dark; }
|
||||
body { min-width: 320px; margin: 0; color: var(--body); background: var(--bg); font-family: var(--font-sans); -webkit-font-smoothing: antialiased; transition: color .2s ease, background-color .2s ease; }
|
||||
body {
|
||||
min-width: 320px;
|
||||
width: 100%;
|
||||
margin: 0;
|
||||
color: var(--body);
|
||||
background: var(--bg);
|
||||
font-family: var(--font-sans);
|
||||
-webkit-font-smoothing: antialiased;
|
||||
transition: color .2s ease, background-color .2s ease;
|
||||
overflow-x: hidden;
|
||||
position: relative;
|
||||
}
|
||||
main {
|
||||
width: 100%;
|
||||
overflow-x: clip;
|
||||
}
|
||||
a { color: inherit; text-decoration: none; }
|
||||
button, a { -webkit-tap-highlight-color: transparent; }
|
||||
:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
|
||||
::selection { background: var(--green); color: white; }
|
||||
|
||||
.site-header { position: fixed; inset: 0 0 auto; z-index: 20; border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--bg) 92%, transparent); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
|
||||
.nav-inner { width: min(1120px, calc(100% - 48px)); height: 76px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
|
||||
.theme-toggle { min-height: 38px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 0 12px; border: 1px solid var(--border); border-radius: 999px; color: var(--text); background: var(--surface); font: 600 11px var(--font-sans); cursor: pointer; transition: border-color .18s ease, background-color .18s ease; }
|
||||
.site-header { position: fixed; inset: 0 0 auto; z-index: 50; width: 100%; border-bottom: 1px solid var(--border); background: color-mix(in srgb, var(--bg) 92%, transparent); backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
|
||||
.nav-inner { width: 100%; max-width: 1120px; height: 76px; margin: 0 auto; padding: 0 24px; box-sizing: border-box; display: flex; align-items: center; justify-content: space-between; gap: 20px; }
|
||||
.nav-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
|
||||
.theme-toggle { min-height: 38px; display: inline-flex; align-items: center; justify-content: center; gap: 8px; padding: 0 12px; border: 1px solid var(--border); border-radius: 999px; color: var(--text); background: var(--surface); font: 600 11px var(--font-sans); cursor: pointer; transition: border-color .18s ease, background-color .18s ease; flex-shrink: 0; }
|
||||
.theme-toggle:hover { border-color: var(--green); }
|
||||
.theme-icon { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
|
||||
.theme-icon { width: 15px; height: 15px; fill: none; stroke: currentColor; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; display: block; }
|
||||
.theme-icon-moon { display: none; }
|
||||
:root[data-theme="dark"] .theme-icon-sun { display: none; }
|
||||
:root[data-theme="dark"] .theme-icon-moon { display: block; }
|
||||
.brand { display: inline-flex; align-items: center; gap: 11px; color: var(--text); }
|
||||
.brand img { display: block; width: 36px; height: 36px; object-fit: contain; }
|
||||
.menu-toggle { display: none; width: 38px; height: 38px; align-items: center; justify-content: center; border: 1px solid var(--border); border-radius: 999px; background: var(--surface); color: var(--text); cursor: pointer; transition: border-color .18s ease, background-color .18s ease; padding: 0; flex-shrink: 0; }
|
||||
.menu-toggle:hover { border-color: var(--green); }
|
||||
.menu-icon { width: 18px; height: 18px; display: block; }
|
||||
.menu-icon-close { display: none; }
|
||||
.menu-toggle[aria-expanded="true"] .menu-icon-open { display: none; }
|
||||
.menu-toggle[aria-expanded="true"] .menu-icon-close { display: block; }
|
||||
.brand { display: inline-flex; align-items: center; gap: 11px; color: var(--text); flex-shrink: 0; }
|
||||
.brand img { display: block; width: 36px; height: 36px; object-fit: contain; flex-shrink: 0; }
|
||||
.brand span { display: grid; gap: 2px; }
|
||||
.brand strong { font: 700 14px/1.15 var(--font-display); letter-spacing: -.02em; }
|
||||
.brand small { color: var(--muted); font-size: 11px; line-height: 1.2; }
|
||||
.nav-inner nav { display: flex; align-items: center; gap: clamp(14px, 2.8vw, 32px); color: var(--body); font-size: 13px; font-weight: 500; }
|
||||
.nav-inner nav a, .text-link, .site-footer a { transition: color .18s ease; }
|
||||
.nav-inner nav a:hover, .text-link:hover, .site-footer a:hover { color: var(--green); }
|
||||
.brand strong { font: 700 14px/1.15 var(--font-display); letter-spacing: -.02em; white-space: nowrap; }
|
||||
.brand small { color: var(--muted); font-size: 11px; line-height: 1.2; white-space: nowrap; }
|
||||
.desktop-nav { display: flex; align-items: center; gap: clamp(14px, 2.8vw, 32px); color: var(--body); font-size: 13px; font-weight: 500; }
|
||||
.desktop-nav a, .text-link, .site-footer a { transition: color .18s ease; }
|
||||
.desktop-nav a:hover, .text-link:hover, .site-footer a:hover { color: var(--green); }
|
||||
.mobile-nav { display: none; border-top: 1px solid var(--border); background: color-mix(in srgb, var(--surface) 96%, transparent); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); }
|
||||
.mobile-nav:not([hidden]) { display: block; animation: mobileNavFade .18s ease-out; }
|
||||
@keyframes mobileNavFade { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: translateY(0); } }
|
||||
.mobile-nav-content { width: 100%; max-width: 1120px; margin: 0 auto; padding: 12px 16px 16px; display: flex; flex-direction: column; gap: 6px; box-sizing: border-box; }
|
||||
.mobile-nav-link { display: flex; align-items: center; justify-content: space-between; padding: 12px 14px; border-radius: 8px; color: var(--text); font-size: 14px; font-weight: 600; text-decoration: none; transition: background-color .15s ease, color .15s ease; }
|
||||
.mobile-nav-link:hover, .mobile-nav-link:active { background: color-mix(in srgb, var(--green-soft) 80%, transparent); color: var(--green); }
|
||||
.mobile-nav-badge { font-size: 11px; font-weight: 700; color: var(--green); background: var(--green-soft); padding: 3px 8px; border-radius: 999px; }
|
||||
.mobile-nav-arrow { font-size: 15px; color: var(--muted); }
|
||||
.mobile-nav-highlight { background: var(--green); color: #ffffff !important; margin-top: 4px; }
|
||||
.mobile-nav-highlight:hover, .mobile-nav-highlight:active { background: var(--green-dark) !important; color: #ffffff !important; }
|
||||
.mobile-nav-highlight .mobile-nav-arrow { color: #ffffff; }
|
||||
|
||||
.hero { position: relative; display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); align-items: center; gap: 52px; width: min(1120px, calc(100% - 48px)); min-height: 700px; margin: 0 auto; padding: 152px 0 76px; }
|
||||
.hero::before { content: ""; position: absolute; z-index: -1; width: min(550px, 80vw); aspect-ratio: 1; top: 90px; right: -140px; border-radius: 50%; background: radial-gradient(circle, var(--hero-glow), transparent 68%); pointer-events: none; }
|
||||
.hero-copy { max-width: 610px; }
|
||||
.eyebrow { margin: 0 0 20px; color: var(--green); font-size: 11px; line-height: 1.4; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
|
||||
h1, h2 { margin: 0; color: var(--text); font-family: var(--font-display); letter-spacing: -.06em; }
|
||||
h1 { font-size: clamp(42px, 6.2vw, 76px); font-weight: 700; line-height: 1.04; overflow-wrap: anywhere; }
|
||||
.hero {
|
||||
position: relative;
|
||||
display: grid;
|
||||
grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
|
||||
align-items: center;
|
||||
gap: 52px;
|
||||
width: 100%;
|
||||
max-width: 1120px;
|
||||
min-height: 680px;
|
||||
margin: 0 auto;
|
||||
padding: 140px 24px 76px;
|
||||
box-sizing: border-box;
|
||||
overflow: clip;
|
||||
}
|
||||
.hero::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
z-index: -1;
|
||||
width: min(500px, 80vw);
|
||||
aspect-ratio: 1;
|
||||
top: 90px;
|
||||
right: -40px;
|
||||
border-radius: 50%;
|
||||
background: radial-gradient(circle, var(--hero-glow), transparent 68%);
|
||||
pointer-events: none;
|
||||
}
|
||||
.hero-copy { max-width: 610px; width: 100%; }
|
||||
.eyebrow { margin: 0 0 18px; color: var(--green); font-size: 11px; line-height: 1.4; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
|
||||
h1, h2 { margin: 0; color: var(--text); font-family: var(--font-display); letter-spacing: -.05em; }
|
||||
h1 { font-size: clamp(34px, 5.8vw, 76px); font-weight: 700; line-height: 1.05; overflow-wrap: break-word; }
|
||||
h1 span { color: var(--green); }
|
||||
.hero-description { max-width: 470px; margin: 25px 0 0; color: var(--body); font-size: 16px; line-height: 1.8; }
|
||||
.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 24px; margin-top: 34px; }
|
||||
.button { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; padding: 0 21px; border-radius: 7px; font-size: 13px; font-weight: 700; transition: background .18s ease, transform .18s ease; }
|
||||
.hero-description { max-width: 470px; margin: 22px 0 0; color: var(--body); font-size: 16px; line-height: 1.75; }
|
||||
.hero-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 20px; margin-top: 32px; }
|
||||
.button { min-height: 48px; display: inline-flex; align-items: center; justify-content: center; padding: 0 22px; border-radius: 8px; font-size: 13px; font-weight: 700; transition: background .18s ease, transform .18s ease; text-decoration: none; }
|
||||
.button:hover { transform: translateY(-1px); }
|
||||
.button-primary { color: white; background: var(--green); }
|
||||
.button-primary:hover { background: var(--green-dark); }
|
||||
.text-link { color: var(--text); font-size: 13px; font-weight: 600; }
|
||||
.text-link { color: var(--text); font-size: 13px; font-weight: 600; text-decoration: none; }
|
||||
.text-link span { padding-left: 4px; color: var(--green); }
|
||||
.hero-notes { display: flex; flex-wrap: wrap; gap: 0; margin-top: 45px; color: var(--muted); font-size: 11px; }
|
||||
.hero-notes span { padding: 0 14px; border-left: 1px solid var(--border); }
|
||||
.hero-notes span:first-child { padding-left: 0; border-left: 0; }
|
||||
.hero-notes { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin-top: 38px; color: var(--muted); font-size: 11px; }
|
||||
.hero-notes span { display: inline-flex; align-items: center; }
|
||||
.hero-notes span:not(:last-child)::after { content: "·"; margin-left: 14px; color: var(--border); font-weight: 700; }
|
||||
|
||||
.hero-mark { position: relative; width: min(100%, 410px); aspect-ratio: 1; justify-self: end; display: grid; place-items: center; }
|
||||
.hero-mark { position: relative; width: min(100%, 390px); aspect-ratio: 1; justify-self: end; display: grid; place-items: center; }
|
||||
.mark-orbit { position: absolute; border: 1px solid var(--orbit-green); border-radius: 50%; }
|
||||
.mark-orbit-one { inset: 8%; }
|
||||
.mark-orbit-two { inset: 20%; border-color: var(--orbit-gold); }
|
||||
.mark-core { width: 43%; aspect-ratio: 1; display: grid; place-items: center; border: 1px solid var(--border); border-radius: 50%; background: var(--surface); box-shadow: 0 20px 70px var(--shadow); }
|
||||
.mark-core { width: 44%; aspect-ratio: 1; display: grid; place-items: center; border: 1px solid var(--border); border-radius: 50%; background: var(--surface); box-shadow: 0 20px 70px var(--shadow); }
|
||||
.mark-core img { width: 66%; height: 66%; object-fit: contain; }
|
||||
.mark-label { position: absolute; right: 1%; bottom: 17%; padding: 10px 14px; border: 1px solid var(--border); border-radius: 5px; background: var(--surface); color: var(--text); font: 600 11px var(--font-sans); letter-spacing: .01em; box-shadow: 0 8px 30px var(--shadow); }
|
||||
.mark-label { position: absolute; right: 2%; bottom: 16%; padding: 9px 14px; border: 1px solid var(--border); border-radius: 6px; background: var(--surface); color: var(--text); font: 600 11px var(--font-sans); letter-spacing: .01em; box-shadow: 0 8px 30px var(--shadow); white-space: nowrap; }
|
||||
|
||||
.downloads-section { border-top: 1px solid var(--border); background: var(--surface); padding: 92px max(24px, calc((100vw - 820px) / 2)) 0; }
|
||||
.section-heading { max-width: 530px; margin: 0 auto 36px; text-align: center; }
|
||||
.downloads-section {
|
||||
border-top: 1px solid var(--border);
|
||||
background: var(--surface);
|
||||
width: 100%;
|
||||
padding: 88px 24px 0;
|
||||
box-sizing: border-box;
|
||||
overflow: clip;
|
||||
}
|
||||
.section-heading,
|
||||
.release-error,
|
||||
.download-list,
|
||||
.download-footnote,
|
||||
.site-footer {
|
||||
width: 100%;
|
||||
max-width: 780px;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
box-sizing: border-box;
|
||||
}
|
||||
.section-heading { margin-bottom: 36px; text-align: center; }
|
||||
.section-heading .eyebrow { margin-bottom: 12px; }
|
||||
h2 { font-size: clamp(34px, 4vw, 44px); line-height: 1.15; }
|
||||
.section-heading > p:last-of-type { margin: 14px 0 0; color: var(--muted); font-size: 14px; line-height: 1.7; }
|
||||
h2 { font-size: clamp(28px, 4vw, 44px); line-height: 1.15; }
|
||||
.section-heading > p:last-of-type { margin: 12px 0 0; color: var(--muted); font-size: 14px; line-height: 1.7; }
|
||||
.release-meta { display: flex; justify-content: center; gap: 10px; margin: 12px 0 0; color: var(--muted); font-size: 11px; }
|
||||
.release-error { margin: 0 0 14px; color: #92400e; text-align: center; font-size: 12px; }
|
||||
.release-error { margin: 0 auto 14px; color: #92400e; text-align: center; font-size: 12px; }
|
||||
.release-error a { color: var(--green); font-weight: 700; text-decoration: underline; }
|
||||
.download-list { display: grid; gap: 12px; }
|
||||
.download-option { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 20px 22px; border: 1px solid var(--border); border-radius: 8px; background: var(--surface); transition: border-color .18s ease, transform .18s ease, box-shadow .18s ease; }
|
||||
.download-option { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 18px 20px; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); text-decoration: none; transition: border-color .18s ease, transform .18s ease, box-shadow .18s ease; box-sizing: border-box; min-width: 0; }
|
||||
.download-option:hover { transform: translateY(-2px); border-color: var(--green); box-shadow: 0 12px 32px var(--shadow); }
|
||||
.download-platform { display: flex; align-items: center; gap: 15px; }
|
||||
.platform-icon { width: 40px; height: 40px; flex: 0 0 40px; display: grid; place-items: center; border-radius: 7px; background: #eff6ff; color: #2563eb; }
|
||||
.download-platform { display: flex; align-items: center; gap: 14px; min-width: 0; flex: 1 1 auto; }
|
||||
.platform-icon { width: 40px; height: 40px; flex: 0 0 40px; display: grid; place-items: center; border-radius: 8px; background: #eff6ff; color: #2563eb; }
|
||||
.platform-icon svg { display: block; width: 22px; height: 22px; fill: currentColor; }
|
||||
.windows-icon { background: #eff6ff; color: #0078d4; }
|
||||
.android-icon { background: var(--green-soft); color: #3ddc84; }
|
||||
.download-platform strong, .download-platform small { display: block; }
|
||||
.download-platform strong { color: var(--text); font: 700 14px var(--font-display); }
|
||||
.download-platform small { margin-top: 4px; color: var(--muted); font-size: 11px; }
|
||||
.download-action { color: var(--green); font-size: 12px; font-weight: 700; white-space: nowrap; }
|
||||
.download-action span { padding-left: 5px; font-size: 15px; }
|
||||
.download-footnote { display: flex; justify-content: center; flex-wrap: wrap; gap: 6px; margin: 20px 0 72px; color: var(--muted); font-size: 11px; }
|
||||
.download-platform > span:last-child { min-width: 0; }
|
||||
.download-platform strong { color: var(--text); font: 700 14px var(--font-display); display: block; overflow-wrap: break-word; }
|
||||
.download-platform small { display: block; margin-top: 3px; color: var(--muted); font-size: 11px; line-height: 1.4; overflow-wrap: break-word; }
|
||||
.download-action { color: var(--green); font-size: 12px; font-weight: 700; white-space: nowrap; flex-shrink: 0; }
|
||||
.download-action span { padding-left: 5px; font-size: 14px; }
|
||||
.download-footnote { display: flex; justify-content: center; flex-wrap: wrap; gap: 6px; margin: 20px auto 68px; color: var(--muted); font-size: 11px; }
|
||||
.download-footnote a { color: var(--green); font-weight: 600; }
|
||||
.site-footer { display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 80px; border-top: 1px solid var(--border); color: var(--muted); font-size: 10px; }
|
||||
.site-footer .brand img { width: 30px; height: 30px; }
|
||||
.site-footer { display: flex; align-items: center; justify-content: space-between; gap: 20px; min-height: 76px; border-top: 1px solid var(--border); color: var(--muted); font-size: 11px; }
|
||||
.site-footer .brand img { width: 28px; height: 28px; }
|
||||
.site-footer .brand strong { font-size: 12px; }
|
||||
.site-footer .brand small { font-size: 10px; }
|
||||
.site-footer > a:last-child { color: var(--text); font-weight: 600; }
|
||||
|
||||
@media (min-width: 761px) and (orientation: landscape) {
|
||||
.nav-inner { height: 88px; }
|
||||
.nav-inner nav { gap: clamp(18px, 3vw, 38px); font-size: 14px; }
|
||||
.nav-inner { height: 84px; }
|
||||
.desktop-nav { gap: clamp(18px, 3vw, 36px); font-size: 14px; }
|
||||
.theme-toggle { min-height: 42px; padding: 0 15px; font-size: 12px; }
|
||||
.theme-icon { width: 17px; height: 17px; }
|
||||
.brand img { width: 40px; height: 40px; }
|
||||
.brand img { width: 38px; height: 38px; }
|
||||
.brand strong { font-size: 15px; }
|
||||
.brand small { font-size: 12px; }
|
||||
.hero { gap: 64px; min-height: calc(100svh - 2px); padding: 172px 0 96px; }
|
||||
h1 { font-size: clamp(58px, 7.4vw, 96px); }
|
||||
.hero { gap: 60px; min-height: calc(100svh - 2px); padding: 148px 24px 84px; }
|
||||
h1 { font-size: clamp(52px, 6.8vw, 90px); }
|
||||
.hero-description { max-width: 560px; font-size: 18px; }
|
||||
.hero-actions { margin-top: 40px; gap: 30px; }
|
||||
.button { min-height: 54px; padding: 0 26px; font-size: 14px; }
|
||||
.hero-actions { margin-top: 36px; gap: 24px; }
|
||||
.button { min-height: 52px; padding: 0 24px; font-size: 14px; }
|
||||
.text-link { font-size: 14px; }
|
||||
.hero-notes { margin-top: 54px; font-size: 12px; }
|
||||
.hero-notes span { padding: 0 18px; }
|
||||
.hero-mark { width: min(100%, 500px); }
|
||||
.mark-label { padding: 13px 17px; font-size: 12px; }
|
||||
.downloads-section { padding-top: 116px; }
|
||||
.hero-notes { margin-top: 48px; font-size: 12px; }
|
||||
.hero-mark { width: min(100%, 460px); }
|
||||
.mark-label { padding: 12px 16px; font-size: 12px; }
|
||||
.downloads-section { padding-top: 108px; }
|
||||
.section-heading { max-width: 640px; }
|
||||
h2 { font-size: clamp(42px, 4.8vw, 56px); }
|
||||
h2 { font-size: clamp(38px, 4.4vw, 52px); }
|
||||
.section-heading > p:last-of-type { font-size: 16px; }
|
||||
.release-meta { font-size: 12px; }
|
||||
.download-list { gap: 16px; }
|
||||
.download-option { padding: 26px 28px; }
|
||||
.platform-icon { width: 48px; height: 48px; flex-basis: 48px; }
|
||||
.platform-icon svg { width: 26px; height: 26px; }
|
||||
.download-platform { gap: 18px; }
|
||||
.download-platform strong { font-size: 16px; }
|
||||
.download-list { gap: 14px; }
|
||||
.download-option { padding: 22px 24px; }
|
||||
.platform-icon { width: 44px; height: 44px; flex-basis: 44px; }
|
||||
.platform-icon svg { width: 24px; height: 24px; }
|
||||
.download-platform { gap: 16px; }
|
||||
.download-platform strong { font-size: 15px; }
|
||||
.download-platform small { font-size: 12px; }
|
||||
.download-action { font-size: 13px; }
|
||||
.download-footnote { margin-bottom: 96px; font-size: 12px; }
|
||||
.site-footer { min-height: 96px; font-size: 11px; }
|
||||
.site-footer .brand img { width: 34px; height: 34px; }
|
||||
.download-footnote { margin-bottom: 84px; font-size: 12px; }
|
||||
.site-footer { min-height: 88px; font-size: 11px; }
|
||||
.site-footer .brand img { width: 32px; height: 32px; }
|
||||
.site-footer .brand strong { font-size: 13px; }
|
||||
.site-footer .brand small { font-size: 11px; }
|
||||
}
|
||||
@@ -163,38 +243,73 @@ h2 { font-size: clamp(34px, 4vw, 44px); line-height: 1.15; }
|
||||
*, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
|
||||
}
|
||||
|
||||
@media (max-width: 760px) {
|
||||
.nav-inner { width: calc(100% - 32px); height: 68px; gap: 12px; }
|
||||
.site-header + main { padding-top: 0; }
|
||||
.nav-inner nav { flex: 1; justify-content: flex-end; gap: clamp(10px, 3vw, 17px); font-size: 11px; }
|
||||
.nav-inner nav a:first-child { display: none; }
|
||||
.theme-toggle { min-height: 36px; padding: 0 10px; }
|
||||
@media (max-width: 768px) {
|
||||
.site-header + main, main { padding-top: 0; }
|
||||
.nav-inner { height: 64px; padding: 0 16px; gap: 12px; }
|
||||
.brand img { width: 30px; height: 30px; }
|
||||
.brand small { display: none; }
|
||||
.brand strong { font-size: 14px; }
|
||||
.desktop-nav { display: none; }
|
||||
.menu-toggle { display: inline-flex; }
|
||||
.theme-toggle { width: 36px; height: 36px; min-height: 36px; padding: 0; border-radius: 50%; }
|
||||
.theme-toggle-label { display: none; }
|
||||
.hero { grid-template-columns: 1fr; gap: 10px; width: calc(100% - 40px); min-height: 0; padding: 116px 0 60px; }
|
||||
.hero-mark { width: min(75vw, 340px); justify-self: center; margin-top: 8px; }
|
||||
.hero::before { top: 300px; right: -140px; }
|
||||
.hero-notes { margin-top: 34px; row-gap: 10px; }
|
||||
.hero-notes span { padding: 0 9px; }
|
||||
.hero-notes span:first-child { padding-left: 0; }
|
||||
.downloads-section { padding-top: 68px; }
|
||||
.site-footer { flex-wrap: wrap; justify-content: space-between; padding: 18px 0; }
|
||||
.site-footer > span { order: 1; width: 100%; }
|
||||
.hero {
|
||||
grid-template-columns: 1fr;
|
||||
gap: 28px;
|
||||
width: 100%;
|
||||
min-height: 0;
|
||||
padding: 88px 16px 48px;
|
||||
}
|
||||
.hero::before {
|
||||
top: 180px;
|
||||
right: 0;
|
||||
width: min(320px, 85vw);
|
||||
}
|
||||
.hero-copy { max-width: 100%; }
|
||||
h1 { font-size: clamp(30px, 7.8vw, 42px); line-height: 1.1; }
|
||||
.hero-description { font-size: 15px; line-height: 1.65; margin: 16px 0 0; }
|
||||
.hero-actions { gap: 14px; margin-top: 24px; }
|
||||
.hero-notes { margin-top: 24px; gap: 6px 10px; font-size: 11px; }
|
||||
.hero-notes span:not(:last-child)::after { margin-left: 10px; }
|
||||
.hero-mark {
|
||||
width: min(78vw, 290px);
|
||||
justify-self: center;
|
||||
margin: 8px auto 0;
|
||||
}
|
||||
.mark-label { right: 2%; bottom: 12%; padding: 8px 11px; font-size: 10px; }
|
||||
.downloads-section { padding: 56px 16px 0; }
|
||||
.section-heading { margin-bottom: 28px; }
|
||||
h2 { font-size: clamp(24px, 5.5vw, 32px); }
|
||||
.download-option { padding: 16px 16px; gap: 12px; }
|
||||
.download-platform { gap: 12px; }
|
||||
.platform-icon { width: 38px; height: 38px; flex-basis: 38px; }
|
||||
.download-footnote { margin-bottom: 48px; }
|
||||
.site-footer {
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
padding: 18px 0 24px;
|
||||
min-height: auto;
|
||||
gap: 12px;
|
||||
}
|
||||
.site-footer > span { order: 2; width: 100%; font-size: 10px; }
|
||||
.site-footer .footer-brand { order: 0; }
|
||||
.site-footer > a:last-child { order: 1; }
|
||||
}
|
||||
|
||||
@media (max-width: 420px) {
|
||||
.brand small { display: none; }
|
||||
.nav-inner { width: calc(100% - 28px); }
|
||||
.nav-inner nav { gap: 10px; font-size: 10px; }
|
||||
.nav-inner nav a:nth-child(2) { display: none; }
|
||||
.theme-toggle { flex: 0 0 36px; width: 36px; padding: 0; }
|
||||
.hero-actions { gap: 17px; }
|
||||
.hero-notes { font-size: 10px; }
|
||||
.hero-notes span { padding-right: 7px; padding-left: 7px; }
|
||||
.download-option { min-width: 0; padding: 14px 12px; gap: 10px; }
|
||||
.download-platform { min-width: 0; gap: 9px; }
|
||||
.download-platform > span:last-child { min-width: 0; }
|
||||
.download-platform small { max-width: 175px; line-height: 1.5; overflow-wrap: anywhere; }
|
||||
.download-action { font-size: 10px; }
|
||||
.downloads-section { padding-right: 16px; padding-left: 16px; }
|
||||
.site-footer { column-gap: 10px; }
|
||||
.nav-inner { height: 60px; padding: 0 14px; gap: 8px; }
|
||||
.hero { padding: 80px 14px 40px; gap: 22px; }
|
||||
h1 { font-size: clamp(28px, 7.5vw, 34px); }
|
||||
.hero-actions { gap: 12px; }
|
||||
.hero-actions .button { width: 100%; }
|
||||
.hero-actions .text-link { width: 100%; text-align: center; padding: 4px 0; }
|
||||
.hero-mark { width: min(80vw, 250px); }
|
||||
.download-option { padding: 13px 12px; gap: 8px; }
|
||||
.platform-icon { width: 34px; height: 34px; flex-basis: 34px; }
|
||||
.platform-icon svg { width: 18px; height: 18px; }
|
||||
.download-platform { gap: 10px; }
|
||||
.download-platform strong { font-size: 13px; }
|
||||
.download-platform small { font-size: 10px; line-height: 1.35; }
|
||||
.download-action { font-size: 11px; }
|
||||
.downloads-section { padding-right: 14px; padding-left: 14px; }
|
||||
}
|
||||
Reference in new issue
Block a user