fix(mobile): resolve navbar width and section layout overflow

This commit is contained in:
ssbg04 committed 2026-10-03 00:00:39 +08:00
1 parent f49ec4137c
commit 837e03b462
2 files changed
+305 -105

No files matched your search

+93 -8
View File
@@ -1,19 +1,52 @@
<header class="site-header"> <header class="site-header" id="site-header">
<div class="nav-inner"> <div class="nav-inner">
<a href="/" class="brand" aria-label="TIS RMS home"> <a href="/" class="brand" aria-label="TIS RMS home">
<img src="/tis_logo.png" alt="" width="36" height="36" /> <img src="/tis_logo.png" alt="" width="36" height="36" />
<span><strong>TIS RMS</strong><small>Talisay Integrated School</small></span> <span><strong>TIS RMS</strong><small>Talisay Integrated School</small></span>
</a> </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://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="https://docs.tis-rms.cc.cd" target="_blank" rel="noopener noreferrer">Documentation</a>
<a href="#downloads">Downloads</a> <a href="#downloads">Downloads</a>
</nav> </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> <div class="nav-actions">
<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> <button class="theme-toggle" id="theme-toggle" type="button" aria-label="Switch to dark theme" aria-pressed="false">
<span class="theme-toggle-label">Dark</span> <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>
</button> <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> </div>
</header> </header>
@@ -28,7 +61,7 @@
toggle?.setAttribute("aria-label", `Switch to ${theme === "dark" ? "light" : "dark"} theme`); toggle?.setAttribute("aria-label", `Switch to ${theme === "dark" ? "light" : "dark"} theme`);
const label = toggle?.querySelector(".theme-toggle-label"); const label = toggle?.querySelector(".theme-toggle-label");
if (label) label.textContent = theme === "dark" ? "Light" : "Dark"; 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"); const savedTheme = localStorage.getItem("tis-rms-theme");
@@ -39,4 +72,56 @@
applyTheme(nextTheme); applyTheme(nextTheme);
localStorage.setItem("tis-rms-theme", 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> </script>
+212 -97
View File
@@ -40,121 +40,201 @@
} }
* { box-sizing: border-box; } * { 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; } 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; } a { color: inherit; text-decoration: none; }
button, a { -webkit-tap-highlight-color: transparent; } button, a { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; } :focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }
::selection { background: var(--green); color: white; } ::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); } .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: min(1120px, calc(100% - 48px)); height: 76px; margin: 0 auto; display: flex; align-items: center; justify-content: space-between; gap: 20px; } .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; }
.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; } .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-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; } .theme-icon-moon { display: none; }
:root[data-theme="dark"] .theme-icon-sun { display: none; } :root[data-theme="dark"] .theme-icon-sun { display: none; }
:root[data-theme="dark"] .theme-icon-moon { display: block; } :root[data-theme="dark"] .theme-icon-moon { display: block; }
.brand { display: inline-flex; align-items: center; gap: 11px; color: var(--text); } .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; }
.brand img { display: block; width: 36px; height: 36px; object-fit: contain; } .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 span { display: grid; gap: 2px; }
.brand strong { font: 700 14px/1.15 var(--font-display); letter-spacing: -.02em; } .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; } .brand small { color: var(--muted); font-size: 11px; line-height: 1.2; white-space: nowrap; }
.nav-inner nav { display: flex; align-items: center; gap: clamp(14px, 2.8vw, 32px); color: var(--body); font-size: 13px; font-weight: 500; } .desktop-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; } .desktop-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); } .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 {
.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; } position: relative;
.hero-copy { max-width: 610px; } display: grid;
.eyebrow { margin: 0 0 20px; color: var(--green); font-size: 11px; line-height: 1.4; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; } grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
h1, h2 { margin: 0; color: var(--text); font-family: var(--font-display); letter-spacing: -.06em; } align-items: center;
h1 { font-size: clamp(42px, 6.2vw, 76px); font-weight: 700; line-height: 1.04; overflow-wrap: anywhere; } 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); } 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-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: 24px; margin-top: 34px; } .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 21px; border-radius: 7px; font-size: 13px; font-weight: 700; transition: background .18s ease, transform .18s ease; } .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:hover { transform: translateY(-1px); }
.button-primary { color: white; background: var(--green); } .button-primary { color: white; background: var(--green); }
.button-primary:hover { background: var(--green-dark); } .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); } .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 { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 14px; margin-top: 38px; color: var(--muted); font-size: 11px; }
.hero-notes span { padding: 0 14px; border-left: 1px solid var(--border); } .hero-notes span { display: inline-flex; align-items: center; }
.hero-notes span:first-child { padding-left: 0; border-left: 0; } .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 { position: absolute; border: 1px solid var(--orbit-green); border-radius: 50%; }
.mark-orbit-one { inset: 8%; } .mark-orbit-one { inset: 8%; }
.mark-orbit-two { inset: 20%; border-color: var(--orbit-gold); } .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-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; } .downloads-section {
.section-heading { max-width: 530px; margin: 0 auto 36px; text-align: center; } 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; } .section-heading .eyebrow { margin-bottom: 12px; }
h2 { font-size: clamp(34px, 4vw, 44px); line-height: 1.15; } h2 { font-size: clamp(28px, 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; } .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-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; } .release-error a { color: var(--green); font-weight: 700; text-decoration: underline; }
.download-list { display: grid; gap: 12px; } .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-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; } .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: 7px; background: #eff6ff; color: #2563eb; } .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; } .platform-icon svg { display: block; width: 22px; height: 22px; fill: currentColor; }
.windows-icon { background: #eff6ff; color: #0078d4; } .windows-icon { background: #eff6ff; color: #0078d4; }
.android-icon { background: var(--green-soft); color: #3ddc84; } .android-icon { background: var(--green-soft); color: #3ddc84; }
.download-platform strong, .download-platform small { display: block; } .download-platform > span:last-child { min-width: 0; }
.download-platform strong { color: var(--text); font: 700 14px var(--font-display); } .download-platform strong { color: var(--text); font: 700 14px var(--font-display); display: block; overflow-wrap: break-word; }
.download-platform small { margin-top: 4px; color: var(--muted); font-size: 11px; } .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; } .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: 15px; } .download-action span { padding-left: 5px; font-size: 14px; }
.download-footnote { display: flex; justify-content: center; flex-wrap: wrap; gap: 6px; margin: 20px 0 72px; color: var(--muted); font-size: 11px; } .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; } .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 { 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: 30px; height: 30px; } .site-footer .brand img { width: 28px; height: 28px; }
.site-footer .brand strong { font-size: 12px; } .site-footer .brand strong { font-size: 12px; }
.site-footer .brand small { font-size: 10px; } .site-footer .brand small { font-size: 10px; }
.site-footer > a:last-child { color: var(--text); font-weight: 600; } .site-footer > a:last-child { color: var(--text); font-weight: 600; }
@media (min-width: 761px) and (orientation: landscape) { @media (min-width: 761px) and (orientation: landscape) {
.nav-inner { height: 88px; } .nav-inner { height: 84px; }
.nav-inner nav { gap: clamp(18px, 3vw, 38px); font-size: 14px; } .desktop-nav { gap: clamp(18px, 3vw, 36px); font-size: 14px; }
.theme-toggle { min-height: 42px; padding: 0 15px; font-size: 12px; } .theme-toggle { min-height: 42px; padding: 0 15px; font-size: 12px; }
.theme-icon { width: 17px; height: 17px; } .theme-icon { width: 17px; height: 17px; }
.brand img { width: 40px; height: 40px; } .brand img { width: 38px; height: 38px; }
.brand strong { font-size: 15px; } .brand strong { font-size: 15px; }
.brand small { font-size: 12px; } .brand small { font-size: 12px; }
.hero { gap: 64px; min-height: calc(100svh - 2px); padding: 172px 0 96px; } .hero { gap: 60px; min-height: calc(100svh - 2px); padding: 148px 24px 84px; }
h1 { font-size: clamp(58px, 7.4vw, 96px); } h1 { font-size: clamp(52px, 6.8vw, 90px); }
.hero-description { max-width: 560px; font-size: 18px; } .hero-description { max-width: 560px; font-size: 18px; }
.hero-actions { margin-top: 40px; gap: 30px; } .hero-actions { margin-top: 36px; gap: 24px; }
.button { min-height: 54px; padding: 0 26px; font-size: 14px; } .button { min-height: 52px; padding: 0 24px; font-size: 14px; }
.text-link { font-size: 14px; } .text-link { font-size: 14px; }
.hero-notes { margin-top: 54px; font-size: 12px; } .hero-notes { margin-top: 48px; font-size: 12px; }
.hero-notes span { padding: 0 18px; } .hero-mark { width: min(100%, 460px); }
.hero-mark { width: min(100%, 500px); } .mark-label { padding: 12px 16px; font-size: 12px; }
.mark-label { padding: 13px 17px; font-size: 12px; } .downloads-section { padding-top: 108px; }
.downloads-section { padding-top: 116px; }
.section-heading { max-width: 640px; } .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; } .section-heading > p:last-of-type { font-size: 16px; }
.release-meta { font-size: 12px; } .release-meta { font-size: 12px; }
.download-list { gap: 16px; } .download-list { gap: 14px; }
.download-option { padding: 26px 28px; } .download-option { padding: 22px 24px; }
.platform-icon { width: 48px; height: 48px; flex-basis: 48px; } .platform-icon { width: 44px; height: 44px; flex-basis: 44px; }
.platform-icon svg { width: 26px; height: 26px; } .platform-icon svg { width: 24px; height: 24px; }
.download-platform { gap: 18px; } .download-platform { gap: 16px; }
.download-platform strong { font-size: 16px; } .download-platform strong { font-size: 15px; }
.download-platform small { font-size: 12px; } .download-platform small { font-size: 12px; }
.download-action { font-size: 13px; } .download-action { font-size: 13px; }
.download-footnote { margin-bottom: 96px; font-size: 12px; } .download-footnote { margin-bottom: 84px; font-size: 12px; }
.site-footer { min-height: 96px; font-size: 11px; } .site-footer { min-height: 88px; font-size: 11px; }
.site-footer .brand img { width: 34px; height: 34px; } .site-footer .brand img { width: 32px; height: 32px; }
.site-footer .brand strong { font-size: 13px; } .site-footer .brand strong { font-size: 13px; }
.site-footer .brand small { font-size: 11px; } .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; } *, *::before, *::after { scroll-behavior: auto !important; transition-duration: .01ms !important; animation-duration: .01ms !important; }
} }
@media (max-width: 760px) { @media (max-width: 768px) {
.nav-inner { width: calc(100% - 32px); height: 68px; gap: 12px; } .site-header + main, main { padding-top: 0; }
.site-header + main { padding-top: 0; } .nav-inner { height: 64px; padding: 0 16px; gap: 12px; }
.nav-inner nav { flex: 1; justify-content: flex-end; gap: clamp(10px, 3vw, 17px); font-size: 11px; } .brand img { width: 30px; height: 30px; }
.nav-inner nav a:first-child { display: none; } .brand small { display: none; }
.theme-toggle { min-height: 36px; padding: 0 10px; } .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; } .theme-toggle-label { display: none; }
.hero { grid-template-columns: 1fr; gap: 10px; width: calc(100% - 40px); min-height: 0; padding: 116px 0 60px; } .hero {
.hero-mark { width: min(75vw, 340px); justify-self: center; margin-top: 8px; } grid-template-columns: 1fr;
.hero::before { top: 300px; right: -140px; } gap: 28px;
.hero-notes { margin-top: 34px; row-gap: 10px; } width: 100%;
.hero-notes span { padding: 0 9px; } min-height: 0;
.hero-notes span:first-child { padding-left: 0; } padding: 88px 16px 48px;
.downloads-section { padding-top: 68px; } }
.site-footer { flex-wrap: wrap; justify-content: space-between; padding: 18px 0; } .hero::before {
.site-footer > span { order: 1; width: 100%; } 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) { @media (max-width: 420px) {
.brand small { display: none; } .nav-inner { height: 60px; padding: 0 14px; gap: 8px; }
.nav-inner { width: calc(100% - 28px); } .hero { padding: 80px 14px 40px; gap: 22px; }
.nav-inner nav { gap: 10px; font-size: 10px; } h1 { font-size: clamp(28px, 7.5vw, 34px); }
.nav-inner nav a:nth-child(2) { display: none; } .hero-actions { gap: 12px; }
.theme-toggle { flex: 0 0 36px; width: 36px; padding: 0; } .hero-actions .button { width: 100%; }
.hero-actions { gap: 17px; } .hero-actions .text-link { width: 100%; text-align: center; padding: 4px 0; }
.hero-notes { font-size: 10px; } .hero-mark { width: min(80vw, 250px); }
.hero-notes span { padding-right: 7px; padding-left: 7px; } .download-option { padding: 13px 12px; gap: 8px; }
.download-option { min-width: 0; padding: 14px 12px; gap: 10px; } .platform-icon { width: 34px; height: 34px; flex-basis: 34px; }
.download-platform { min-width: 0; gap: 9px; } .platform-icon svg { width: 18px; height: 18px; }
.download-platform > span:last-child { min-width: 0; } .download-platform { gap: 10px; }
.download-platform small { max-width: 175px; line-height: 1.5; overflow-wrap: anywhere; } .download-platform strong { font-size: 13px; }
.download-action { font-size: 10px; } .download-platform small { font-size: 10px; line-height: 1.35; }
.downloads-section { padding-right: 16px; padding-left: 16px; } .download-action { font-size: 11px; }
.site-footer { column-gap: 10px; } .downloads-section { padding-right: 14px; padding-left: 14px; }
} }