Skip to content

Commit 5b0a072

Browse files
committed
Enhance comic site content and structure
- Updated content.yaml to improve site-wide text, chapter details, and bubble dialogues for clarity and engagement. - Modified index.html to reflect new titles and subtitles, ensuring consistency with updated content. - Introduced content.schema.json to define a JSON schema for validating the structure of the content file, ensuring data integrity and ease of future modifications.
1 parent 4eff089 commit 5b0a072

14 files changed

Lines changed: 987 additions & 120 deletions

visual-quickstart/assets/css/style.css

Lines changed: 75 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,9 @@
44
edits here will be overwritten on the next build.
55
66
How to make changes:
7-
- WORDS (titles, subtitle, CTA, footer, captions, character dialogue,
8-
terminal commands, chapter list): edit visual-quickstart/content.yaml
7+
- WORDS (page/tab titles, nav labels, site chrome, subtitle, CTA, footer,
8+
captions, character dialogue, terminal commands, chapter list): edit
9+
visual-quickstart/content.yaml (see its top-level `site:` section)
910
- STYLES (CSS): edit the CSS block in build_site.py
1011
- HTML STRUCTURE / layout: edit the page templates in build_site.py
1112
(index_page / chapter_page / banner / nav / panel)
@@ -73,12 +74,20 @@ a{color:var(--teal)}
7374
.cell{position:relative;margin:0;background:var(--card);border-radius:22px;
7475
padding:14px;box-shadow:var(--shadow)}
7576
.cell .panel{display:block;width:100%;height:auto;border-radius:12px}
76-
.cap{font-weight:700;font-size:1.06rem;color:var(--ink);margin:2px 4px 12px;
77+
.cap{font-weight:700;font-size:1.325rem;color:var(--ink);margin:2px 4px 12px;
7778
padding-left:24px;line-height:1.25}
7879
.badge{position:absolute;top:-14px;left:-14px;z-index:2;width:46px;height:46px;
7980
display:grid;place-items:center;border-radius:50%;background:var(--orange);
8081
color:#fff;font-weight:800;font-size:1.25rem;border:4px solid #fff;
8182
box-shadow:0 6px 14px rgba(232,112,42,.4)}
83+
/* book-icon link to the matching course section, top-right of each frame */
84+
.frame-link{position:absolute;top:-14px;right:-14px;z-index:2;width:46px;height:46px;
85+
display:grid;place-items:center;border-radius:50%;background:var(--teal);
86+
color:#fff;border:4px solid #fff;box-shadow:0 6px 14px rgba(15,138,138,.4);
87+
text-decoration:none;transition:transform .15s ease,filter .15s ease}
88+
.frame-link:hover{transform:translateY(-2px) scale(1.05);filter:brightness(1.08)}
89+
.frame-link:focus-visible{outline:3px solid #58a6ff;outline-offset:2px}
90+
.frame-link svg{width:24px;height:24px}
8291
.foot{text-align:center;color:#6c6657;font-size:.92rem;padding:26px 18px 46px}
8392
/* home */
8493
body.home{display:flex;flex-direction:column;min-height:100vh}
@@ -98,7 +107,7 @@ body.home{display:flex;flex-direction:column;min-height:100vh}
98107
.home-main{flex:1;width:100%;max-width:920px;margin:0 auto;padding:20px 20px 40px;
99108
display:flex;flex-direction:column}
100109
.home-intro{margin:6px 0 0}
101-
.home-intro .cap{text-align:center;padding-left:0;font-size:1.12rem}
110+
.home-intro .cap{text-align:center;padding-left:0;font-size:1.40rem}
102111
.intro-cta{text-align:center;margin:24px auto 0}
103112
.intro-cta .cta{border:3px solid #fff;box-shadow:0 10px 24px rgba(0,0,0,.40)}
104113
.intro-cta .cta:hover{transform:translateY(-2px)}
@@ -131,7 +140,68 @@ body.home{display:flex;flex-direction:column;min-height:100vh}
131140
@media(max-width:600px){
132141
.strip{padding:4px 8px 28px;gap:20px}
133142
.cell{padding:8px;border-radius:16px}
134-
.cap{font-size:.98rem;padding-left:28px;margin:2px 4px 8px}
143+
.cap{font-size:1.225rem;padding-left:28px;margin:2px 4px 8px}
135144
.home-main{padding:14px 8px 32px}
136145
.badge{width:38px;height:38px;font-size:1.05rem;top:-12px;left:-8px}
146+
.frame-link{width:38px;height:38px;top:-12px;right:-8px}
147+
.frame-link svg{width:20px;height:20px}
148+
}
149+
/* ===== starter engagement layer: scroll reveal - typewriter - copy ===== */
150+
/* Hidden initial state is only armed once JS adds .anim-ready, so no-JS and
151+
reduced-motion users still see every frame fully rendered. */
152+
.anim-ready main.strip .cell{opacity:0;transform:translateY(26px);
153+
will-change:opacity,transform;
154+
transition:opacity .6s cubic-bezier(.22,.61,.36,1),transform .6s cubic-bezier(.22,.61,.36,1)}
155+
.anim-ready main.strip .cell.in-view{opacity:1;transform:none}
156+
.anim-ready main.strip .cell .badge{transform:scale(.2);opacity:0;
157+
transition:transform .5s cubic-bezier(.34,1.56,.64,1) .14s,opacity .3s ease .14s}
158+
.anim-ready main.strip .cell.in-view .badge{transform:scale(1);opacity:1}
159+
/* per-command copy buttons: real HTML <button>s overlaid on the terminal bar
160+
(kept OUTSIDE the role="img" panel SVG so they stay keyboard/AT accessible).
161+
Positioned by % over .panel-wrap, which exactly bounds the fixed-ratio SVG. */
162+
.panel-wrap{position:relative;display:block}
163+
.term-copy{position:absolute;margin:0;padding:0 1.2% 0 0;border:0;background:transparent;
164+
display:flex;align-items:center;justify-content:flex-end;cursor:pointer;
165+
-webkit-tap-highlight-color:transparent}
166+
.term-copy .tc-box{position:relative;height:74%;aspect-ratio:1;display:grid;
167+
place-items:center;border-radius:22%;border:1px solid #30363d;background:#21262d;
168+
opacity:0;transition:opacity .15s ease,background .15s ease}
169+
.term-copy:hover .tc-box,.term-copy:focus-visible .tc-box{opacity:1}
170+
.term-copy:hover .tc-box{background:#30363d}
171+
.term-copy:focus{outline:none}
172+
.term-copy:focus-visible .tc-box{outline:2px solid #58a6ff;outline-offset:2px}
173+
.term-copy .tc-box svg{position:absolute;width:62%;height:62%;transition:opacity .15s ease}
174+
.term-copy .tc-ico{color:#8b949e}
175+
.term-copy:hover .tc-ico{color:#c9d1d9}
176+
.term-copy .tc-chk{color:#3fb950;opacity:0}
177+
.term-copy.copied .tc-ico{opacity:0}
178+
.term-copy.copied .tc-chk{opacity:1}
179+
.term-copy.copied .tc-box{border-color:#3fb950}
180+
/* touch devices have no hover: keep the copy icons visible there */
181+
@media(hover:none){.term-copy .tc-box{opacity:1}}
182+
/* ===== homepage entrance: the opening panel comes alive on load ===== */
183+
/* Pure CSS (runs on first paint, no JS). Fill-mode 'both' supplies the hidden
184+
start state, so removing the animation (reduced motion) leaves things visible. */
185+
@keyframes home-rise{from{opacity:0;transform:translateY(-18px)}to{opacity:1;transform:none}}
186+
@keyframes home-fade-up{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:none}}
187+
@keyframes home-panel-in{from{opacity:0;transform:scale(.97)}to{opacity:1;transform:none}}
188+
@keyframes home-bubble-pop{0%{opacity:0;transform:scale(.5)}70%{opacity:1;transform:scale(1.06)}100%{opacity:1;transform:scale(1)}}
189+
@keyframes home-av-wave{0%{opacity:0;transform:scale(.6) rotate(-12deg)}55%{opacity:1;transform:scale(1.05) rotate(9deg)}72%{transform:rotate(-5deg)}86%{transform:rotate(3deg)}100%{opacity:1;transform:scale(1) rotate(0)}}
190+
body.home .banner-wrap{animation:home-rise .6s ease both}
191+
body.home .home-av{transform-origin:62% 88%;animation:home-av-wave 1s cubic-bezier(.34,1.56,.64,1) .1s both}
192+
body.home .home-intro{animation:home-panel-in .6s ease .15s both}
193+
body.home .home-intro .cap{animation:home-fade-up .55s ease .3s both}
194+
body.home .home-intro .panel > g{transform-box:fill-box;transform-origin:center;
195+
animation:home-bubble-pop .55s cubic-bezier(.34,1.56,.64,1) both}
196+
body.home .home-intro .panel > g:nth-of-type(1){animation-delay:.6s}
197+
body.home .home-intro .panel > g:nth-of-type(2){animation-delay:2.6s}
198+
body.home .home-intro .panel > g:nth-of-type(3){animation-delay:4.6s}
199+
/* CTA and chapter selector are NOT animated: they must be clickable immediately. */
200+
@media(prefers-reduced-motion:reduce){
201+
.anim-ready main.strip .cell,
202+
.anim-ready main.strip .cell .badge{opacity:1;transform:none;transition:none}
203+
.term-copy .tc-box,.term-copy .tc-box svg{transition:none}
204+
.frame-link{transition:none}
205+
body.home .banner-wrap,body.home .home-av,body.home .home-intro,
206+
body.home .home-intro .cap,body.home .home-intro .panel > g{animation:none}
137207
}
-959 Bytes
Loading
214 KB
Loading

0 commit comments

Comments
 (0)