Skip to content

Commit 07e7749

Browse files
committed
Consolidate GameFoundryStudio accordion styling and add legal footer navigation - PR_26152_012-accordion-footer-legal-top
1 parent e4b4f28 commit 07e7749

8 files changed

Lines changed: 392 additions & 21 deletions

File tree

GameFoundryStudio/assets/css/gamefoundrystudio.css

Lines changed: 83 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -304,13 +304,40 @@
304304
color: var(--muted)
305305
}
306306

307-
.footer .container {
307+
.footer__inner {
308308
display: flex;
309309
justify-content: space-between;
310310
gap: 20px;
311311
flex-wrap: wrap
312312
}
313313

314+
.footer__brand,
315+
.footer__legal,
316+
.footer__links {
317+
display: flex;
318+
flex-wrap: wrap;
319+
gap: 10px 16px;
320+
align-items: center
321+
}
322+
323+
.footer__legal h2 {
324+
margin: 0;
325+
color: var(--gold);
326+
font-size: 13px;
327+
letter-spacing: .16em;
328+
text-transform: uppercase
329+
}
330+
331+
.footer__links a {
332+
color: var(--muted);
333+
font-size: 14px
334+
}
335+
336+
.footer__links a:hover,
337+
.footer__links a:focus-visible {
338+
color: var(--gold)
339+
}
340+
314341
.field {
315342
display: flex;
316343
flex-direction: column;
@@ -468,17 +495,28 @@ details.vertical-accordion summary::-webkit-details-marker {
468495
display: none
469496
}
470497

471-
details.vertical-accordion summary:after {
472-
content: "";
498+
details.vertical-accordion summary:after,
499+
.horizontal-accordion-toggle,
500+
.return-to-top {
501+
--accordion-button-border: var(--line);
502+
--accordion-button-background: var(--panel-soft);
503+
--accordion-button-color: var(--gold);
504+
min-width: 20px;
473505
width: 20px;
474506
height: 20px;
475-
border: 1px solid var(--line);
507+
padding: 0;
508+
border: 1px solid var(--accordion-button-border);
476509
border-radius: var(--radius-pill);
477-
background: var(--panel-soft);
478-
color: var(--gold);
510+
background: var(--accordion-button-background);
511+
color: var(--accordion-button-color);
512+
line-height: 1;
479513
display: inline-grid;
480514
place-items: center;
481-
flex: 0 0 auto;
515+
flex: 0 0 auto
516+
}
517+
518+
details.vertical-accordion summary:after {
519+
content: "";
482520
background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
483521
background-position: calc(50% - 3.5px) 50%, calc(50% + 3.5px) 50%;
484522
background-size: 7px 7px;
@@ -505,14 +543,6 @@ details.vertical-accordion[open] summary:active:after {
505543

506544
.horizontal-accordion-toggle {
507545
margin-left: auto;
508-
min-width: 20px;
509-
width: 20px;
510-
height: 20px;
511-
padding: 0;
512-
border-radius: var(--radius-pill);
513-
background: var(--panel-soft);
514-
color: var(--gold);
515-
line-height: 1;
516546
font-size: 0;
517547
overflow: hidden;
518548
position: relative
@@ -630,13 +660,47 @@ details.vertical-accordion[open] summary:active:after {
630660
}
631661

632662
.tool-column[class*="tool-group-"] .horizontal-accordion-toggle {
633-
border-color: var(--tool-group-accent);
634-
color: var(--tool-group-color)
663+
--accordion-button-border: var(--tool-group-accent);
664+
--accordion-button-color: var(--tool-group-color)
635665
}
636666

637667
.tool-column[class*="tool-group-"] details.vertical-accordion summary:after {
638-
border-color: var(--tool-group-accent);
639-
color: var(--tool-group-color)
668+
--accordion-button-border: var(--tool-group-accent);
669+
--accordion-button-color: var(--tool-group-color)
670+
}
671+
672+
.return-to-top {
673+
--accordion-button-border: var(--meaning-border, var(--line));
674+
--accordion-button-background: var(--meaning-soft, var(--panel-soft));
675+
--accordion-button-color: var(--meaning-color, var(--gold));
676+
position: fixed;
677+
right: 22px;
678+
bottom: 22px;
679+
z-index: var(--z-index-lg);
680+
width: 44px;
681+
height: 44px;
682+
box-shadow: var(--shadow-md);
683+
opacity: 0;
684+
pointer-events: none;
685+
transform: translateY(10px);
686+
transition: opacity .2s ease, transform .2s ease, color .2s ease, border-color .2s ease, background .2s ease
687+
}
688+
689+
.return-to-top span {
690+
transform: translateY(-1px)
691+
}
692+
693+
.return-to-top.is-visible {
694+
opacity: 1;
695+
pointer-events: auto;
696+
transform: translateY(0)
697+
}
698+
699+
.return-to-top:hover,
700+
.return-to-top:focus-visible {
701+
--accordion-button-border: var(--meaning-color, var(--gold));
702+
--accordion-button-background: color-mix(in srgb, var(--meaning-color, var(--gold)) 24%, var(--panel));
703+
outline: none
640704
}
641705

642706
.tool-column.is-collapsed .tool-column-header {

GameFoundryStudio/assets/js/gamefoundry-partials.js

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,10 @@
3232
docs: "docs/index.html",
3333
about: "about.html",
3434
faq: "faq.html",
35+
"cookie-policy": "cookie-policy.html",
36+
disclaimer: "disclaimer.html",
37+
"privacy-policy": "privacy-policy.html",
38+
"terms-legal": "terms.html",
3539
account: "account/index.html",
3640
branding: "account/branding.html",
3741
controls: "account/controls.html",
@@ -86,6 +90,21 @@
8690
});
8791
}
8892

93+
function wireReturnToTop(root) {
94+
const button = root.querySelector("[data-return-to-top]");
95+
if (!button) return;
96+
97+
function updateVisibility() {
98+
button.classList.toggle("is-visible", window.scrollY > 280);
99+
}
100+
101+
button.addEventListener("click", function () {
102+
window.scrollTo({ top: 0, behavior: "smooth" });
103+
});
104+
window.addEventListener("scroll", updateVisibility, { passive: true });
105+
updateVisibility();
106+
}
107+
89108
async function partialElement(partialName) {
90109
const partialPath = partials[partialName];
91110
if (!partialPath) return null;
@@ -101,6 +120,8 @@
101120
rewriteRootedPaths(element);
102121
if (partialName === "header-nav") {
103122
markActiveNavigation(element);
123+
} else if (partialName === "footer") {
124+
wireReturnToTop(element);
104125
}
105126
return element;
106127
}
Lines changed: 19 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,20 @@
11
<footer class="footer">
2-
<div class="container"><span>© 2026 Game Foundry Studio</span><span>Build · Play · Share</span></div>
3-
</footer>
2+
<div class="container footer__inner">
3+
<div class="footer__brand">
4+
<span>&copy; 2026 Game Foundry Studio</span>
5+
<span>Build &middot; Play &middot; Share</span>
6+
</div>
7+
<nav class="footer__legal" aria-labelledby="footerLegalHeading">
8+
<h2 id="footerLegalHeading">Legal</h2>
9+
<div class="footer__links">
10+
<a data-route="privacy-policy" href="privacy-policy.html">Privacy Policy</a>
11+
<a data-route="terms-legal" href="terms.html">Terms &amp; Legal</a>
12+
<a data-route="cookie-policy" href="cookie-policy.html">Cookie Policy</a>
13+
<a data-route="disclaimer" href="disclaimer.html">Disclaimer</a>
14+
</div>
15+
</nav>
16+
<button class="return-to-top" type="button" data-return-to-top aria-label="Return to top" title="Return to top">
17+
<span aria-hidden="true">^</span>
18+
</button>
19+
</div>
20+
</footer>
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<!doctype html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="utf-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1">
7+
<title>Cookie Policy - Game Foundry Studio</title>
8+
<meta name="description" content="Cookie Policy for Game Foundry Studio.">
9+
<link rel="icon" href="assets/images/favicon.svg" type="image/svg+xml">
10+
<link rel="stylesheet" href="assets/css/styles.css">
11+
</head>
12+
13+
<body>
14+
<div data-partial="header-nav"></div>
15+
<main>
16+
<section class="page-title">
17+
<div class="container">
18+
<div class="kicker">Legal</div>
19+
<h1>Cookie Policy</h1>
20+
<p class="lede">How Game Foundry Studio may use browser storage, cookies, and similar technologies as
21+
account, creator, and publishing services are introduced.</p>
22+
</div>
23+
</section>
24+
<section class="section">
25+
<div class="container account-panel">
26+
<aside class="side-menu">
27+
<a href="privacy-policy.html">Privacy Policy</a>
28+
<a href="terms.html">Terms &amp; Legal</a>
29+
<a class="active" href="cookie-policy.html">Cookie Policy</a>
30+
<a href="disclaimer.html">Disclaimer</a>
31+
</aside>
32+
<article class="card">
33+
<div class="card-body">
34+
<h2>Cookie and Storage Use</h2>
35+
<p>Game Foundry Studio may use cookies or local browser storage to remember site preferences,
36+
maintain account sessions, protect creator workflows, and improve platform reliability.</p>
37+
<p>Tool data should stay within the documented project, workspace, or tool contracts. Browser
38+
storage used by the site should not replace saved project files or publishing records.</p>
39+
<div class="callout"><strong>Current status:</strong> This policy page is a site placeholder
40+
for legal navigation and will be updated as production services are connected.</div>
41+
</div>
42+
</article>
43+
</div>
44+
</section>
45+
</main>
46+
<div data-partial="footer"></div>
47+
<script src="assets/js/gamefoundry-partials.js" defer></script>
48+
</body>
49+
50+
</html>

GameFoundryStudio/disclaimer.html

Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
1+
<!doctype html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="utf-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1">
7+
<title>Disclaimer - Game Foundry Studio</title>
8+
<meta name="description" content="Disclaimer for Game Foundry Studio.">
9+
<link rel="icon" href="assets/images/favicon.svg" type="image/svg+xml">
10+
<link rel="stylesheet" href="assets/css/styles.css">
11+
</head>
12+
13+
<body>
14+
<div data-partial="header-nav"></div>
15+
<main>
16+
<section class="page-title">
17+
<div class="container">
18+
<div class="kicker">Legal</div>
19+
<h1>Disclaimer</h1>
20+
<p class="lede">Important notes about prototype tools, generated content, examples, and creator
21+
responsibility across Game Foundry Studio.</p>
22+
</div>
23+
</section>
24+
<section class="section">
25+
<div class="container account-panel">
26+
<aside class="side-menu">
27+
<a href="privacy-policy.html">Privacy Policy</a>
28+
<a href="terms.html">Terms &amp; Legal</a>
29+
<a href="cookie-policy.html">Cookie Policy</a>
30+
<a class="active" href="disclaimer.html">Disclaimer</a>
31+
</aside>
32+
<article class="card">
33+
<div class="card-body">
34+
<h2>Use and Reliance</h2>
35+
<p>Game Foundry Studio pages, tools, examples, and generated outputs are provided for creator
36+
workflow exploration and should be reviewed before production use.</p>
37+
<p>Creators remain responsible for verifying game behavior, asset rights, publishing metadata,
38+
safety requirements, and any third-party integrations before release.</p>
39+
<div class="callout"><strong>Current status:</strong> This disclaimer is a site placeholder
40+
until full production legal terms are finalized.</div>
41+
</div>
42+
</article>
43+
</div>
44+
</section>
45+
</main>
46+
<div data-partial="footer"></div>
47+
<script src="assets/js/gamefoundry-partials.js" defer></script>
48+
</body>
49+
50+
</html>
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<!doctype html>
2+
<html lang="en">
3+
4+
<head>
5+
<meta charset="utf-8">
6+
<meta name="viewport" content="width=device-width, initial-scale=1">
7+
<title>Privacy Policy - Game Foundry Studio</title>
8+
<meta name="description" content="Privacy Policy for Game Foundry Studio.">
9+
<link rel="icon" href="assets/images/favicon.svg" type="image/svg+xml">
10+
<link rel="stylesheet" href="assets/css/styles.css">
11+
</head>
12+
13+
<body>
14+
<div data-partial="header-nav"></div>
15+
<main>
16+
<section class="page-title">
17+
<div class="container">
18+
<div class="kicker">Legal</div>
19+
<h1>Privacy Policy</h1>
20+
<p class="lede">How Game Foundry Studio intends to handle account, creator, project, and platform data
21+
as the site grows.</p>
22+
</div>
23+
</section>
24+
<section class="section">
25+
<div class="container account-panel">
26+
<aside class="side-menu">
27+
<a class="active" href="privacy-policy.html">Privacy Policy</a>
28+
<a href="terms.html">Terms &amp; Legal</a>
29+
<a href="cookie-policy.html">Cookie Policy</a>
30+
<a href="disclaimer.html">Disclaimer</a>
31+
</aside>
32+
<article class="card">
33+
<div class="card-body">
34+
<h2>Privacy Commitments</h2>
35+
<p>Game Foundry Studio is designed around explicit creator workflows. Project files, manifests,
36+
account data, and publishing details should be handled through documented contracts and
37+
visible user actions.</p>
38+
<p>Future production services may collect account details, project metadata, publishing
39+
settings, marketplace records, support requests, and security logs needed to operate the
40+
platform.</p>
41+
<div class="callout"><strong>Current status:</strong> This policy page is a site placeholder
42+
and should be reviewed by counsel before production launch.</div>
43+
</div>
44+
</article>
45+
</div>
46+
</section>
47+
</main>
48+
<div data-partial="footer"></div>
49+
<script src="assets/js/gamefoundry-partials.js" defer></script>
50+
</body>
51+
52+
</html>

0 commit comments

Comments
 (0)