From a0805be1b8679f12f291aa0f3f20828144b92b57 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Vojte=CC=8Cch=20Struha=CC=81r?= Date: Sat, 7 Jun 2025 10:44:47 +0200 Subject: [PATCH] Replace fancy apostrophe with a normal one Plus add scrolling improvement --- astro.config.mjs | 1 + .../docs/szmgr/PGV02_metody_vizualizace.md | 2 +- .../PGV03_zaklady_pocitatcove_grafiky.md | 2 +- .../docs/szmgr/PGV08_real_time_rendering.md | 2 +- .../PGV10_zpracovani_obrazu_pomoci_PDE.md | 2 +- src/content/docs/szmgr/SZP01_algoritmy.md | 2 +- .../docs/szmgr/SZP05_krivky_a_povrchy.md | 4 +-- .../docs/szmgr/SZP06_strojove_uceni.md | 2 +- .../docs/szmgr/VPH01_pokrocila_grafika.md | 2 +- .../VPH02_graficke_a_fyzikalni_principy.md | 2 +- .../docs/szmgr/VPH03_herni_design_i.md | 20 +++++++------- .../docs/szmgr/VPH04_herni_design_ii.md | 26 +++++++++---------- src/content/docs/szmgr/VPH06_ai_ve_hrach.md | 8 +++--- src/content/docs/szmgr/VPH07_gpu_rendering.md | 2 +- src/styles/scroll-fix.css | 7 +++++ 15 files changed, 46 insertions(+), 38 deletions(-) create mode 100644 src/styles/scroll-fix.css diff --git a/astro.config.mjs b/astro.config.mjs index e6bb871..ca44e4c 100644 --- a/astro.config.mjs +++ b/astro.config.mjs @@ -31,6 +31,7 @@ export default defineConfig({ "./src/styles/theme.css", "./src/styles/footnotes-fix.css", "./src/styles/pixelated-logo.css", + "./src/styles/scroll-fix.css", ], sidebar: [ { diff --git a/src/content/docs/szmgr/PGV02_metody_vizualizace.md b/src/content/docs/szmgr/PGV02_metody_vizualizace.md index 6684f1d..b1a38c6 100644 --- a/src/content/docs/szmgr/PGV02_metody_vizualizace.md +++ b/src/content/docs/szmgr/PGV02_metody_vizualizace.md @@ -79,7 +79,7 @@ Node-link diagram, Tree (Klasické zobrazení), Radial Tree (Sunburst, ale strom Tyto interakce můžeme aplikovat na různé operandy. Operand interakce je prostor, na který interakci aplikujeme. > [!TIP] -> Rozdělení mi není úplně 100% jasné, takže budu rád za opravy. Celé slidy čerpají z knihy Interactive Data Visualization: Foundations, Techniques, and Applications, Second Edition (dostupné z [Anna’s Archive](https://annas-archive.org/md5/0bf49e061a8b82167d0e05a5d2b50476)) +> Rozdělení mi není úplně 100% jasné, takže budu rád za opravy. Celé slidy čerpají z knihy Interactive Data Visualization: Foundations, Techniques, and Applications, Second Edition (dostupné z [Anna's Archive](https://annas-archive.org/md5/0bf49e061a8b82167d0e05a5d2b50476)) ### Techniky pro prostor obrazovky (Pixely) diff --git a/src/content/docs/szmgr/PGV03_zaklady_pocitatcove_grafiky.md b/src/content/docs/szmgr/PGV03_zaklady_pocitatcove_grafiky.md index f2f4d0c..0072f85 100644 --- a/src/content/docs/szmgr/PGV03_zaklady_pocitatcove_grafiky.md +++ b/src/content/docs/szmgr/PGV03_zaklady_pocitatcove_grafiky.md @@ -258,7 +258,7 @@ Binding 2 => Attribute 2 (uv souřadnice) ## Princip rasterizace -Z Primitive assembly dostáváme bod, čáru, nebo trojúhelník, který potřebujeme převést na fragmenty (pixely, typicky čtvercové). Každému fragmentu přidělíme barvu a hloubku (Z-value) = fragment’s associated data. Fragment definujeme integerovými souřadnicemi jeho levého dolního bodu (pozor na 0.5 offset). +Z Primitive assembly dostáváme bod, čáru, nebo trojúhelník, který potřebujeme převést na fragmenty (pixely, typicky čtvercové). Každému fragmentu přidělíme barvu a hloubku (Z-value) = fragment's associated data. Fragment definujeme integerovými souřadnicemi jeho levého dolního bodu (pozor na 0.5 offset). - **Bod**\ Při rasterizaci bodu vykreslíme čtverec o hraně `gl_PointSize` zaokrouhlený na celé pixely. diff --git a/src/content/docs/szmgr/PGV08_real_time_rendering.md b/src/content/docs/szmgr/PGV08_real_time_rendering.md index 40a2b11..7044230 100644 --- a/src/content/docs/szmgr/PGV08_real_time_rendering.md +++ b/src/content/docs/szmgr/PGV08_real_time_rendering.md @@ -237,7 +237,7 @@ Stíny jsou důležité, jelikož: ![width=500rem](./img/vph01_shadow_volumes.png) - Prakticky se používá Stencil Buffer Algorithm, kdy renderujeme pro každý objekt nejprve front faces a pak back faces. Tenhle přístup je problematický, pokud je kamera ve stínu, ale řešitelný pokud obrátíme pořádí objektů -- jdeme od nekonečna ke kameře (Z-fail, Carmack’s reverse). + Prakticky se používá Stencil Buffer Algorithm, kdy renderujeme pro každý objekt nejprve front faces a pak back faces. Tenhle přístup je problematický, pokud je kamera ve stínu, ale řešitelný pokud obrátíme pořádí objektů -- jdeme od nekonečna ke kameře (Z-fail, Carmack's reverse). - **Soft shadows**\ Existuje množství algoritmů. Například shadow mapy s Percentage Closer Filtering (PCF). Jsou ale výpočetně náročnější než hard shadows. diff --git a/src/content/docs/szmgr/PGV10_zpracovani_obrazu_pomoci_PDE.md b/src/content/docs/szmgr/PGV10_zpracovani_obrazu_pomoci_PDE.md index ae6504a..2efab85 100644 --- a/src/content/docs/szmgr/PGV10_zpracovani_obrazu_pomoci_PDE.md +++ b/src/content/docs/szmgr/PGV10_zpracovani_obrazu_pomoci_PDE.md @@ -58,7 +58,7 @@ A z této rovnice už vyjádříme $u_{ij}^{k + 1}$. ($\Delta t$ je časový kro ### Nelineární izotropní difuze -Zobecníme funkci pro difuzi kombinací Fick’s law a Mass preservation: $\partial_t u = \text{div} (g \cdot \nabla u)$, kde $\div$ je divergence. +Zobecníme funkci pro difuzi kombinací Fick's law a Mass preservation: $\partial_t u = \text{div} (g \cdot \nabla u)$, kde $\div$ je divergence. - **Lineární** - $g = 1$ diff --git a/src/content/docs/szmgr/SZP01_algoritmy.md b/src/content/docs/szmgr/SZP01_algoritmy.md index b89f021..5262a32 100644 --- a/src/content/docs/szmgr/SZP01_algoritmy.md +++ b/src/content/docs/szmgr/SZP01_algoritmy.md @@ -137,7 +137,7 @@ Greedy algoritmy nachází řešení globálního problému tak, že volí loká #### Problémy -- **Cashier’s algorithm (mince)**\ +- **Cashier's algorithm (mince)**\ Jak zaplatit danou částku s co nejmenším počtem mincí různých hodnot? - **Řešení**\ diff --git a/src/content/docs/szmgr/SZP05_krivky_a_povrchy.md b/src/content/docs/szmgr/SZP05_krivky_a_povrchy.md index 8a248fa..0214404 100644 --- a/src/content/docs/szmgr/SZP05_krivky_a_povrchy.md +++ b/src/content/docs/szmgr/SZP05_krivky_a_povrchy.md @@ -258,7 +258,7 @@ P(x) = \sum_{i=0}^n P_i \ell_i(x) Blbé je, že musíme všechny pomocné polynomy přepočítat, když přidáme nový bod. -- **Hornerovo schéma / Horner’s method**\ +- **Hornerovo schéma / Horner's method**\ Metoda evaluace polynomů. Vychází z myšlenky, že násobení se dá nestovat: [^horner] ```math @@ -674,7 +674,7 @@ Polygonové povrchy dělíme v případě, kdy chceme je zjemnit, vyhladit. [^coons-path]: [Wikipedia: Coons patch](https://en.wikipedia.org/wiki/Coons_patch) [^nurbs]: [Wikipedia: Non-uniform rational B-spline](https://en.wikipedia.org/wiki/Non-uniform_rational_B-spline) [^sweeping]: [Wikipedia: Solid modeling](https://en.wikipedia.org/wiki/Solid_modeling#Sweeping) -[^horner]: [Wikipedia: Horner’s method](https://en.wikipedia.org/wiki/Horner%27s_method) +[^horner]: [Wikipedia: Horner's method](https://en.wikipedia.org/wiki/Horner%27s_method) ## Další zdroje diff --git a/src/content/docs/szmgr/SZP06_strojove_uceni.md b/src/content/docs/szmgr/SZP06_strojove_uceni.md index 6cd22d1..4448afe 100644 --- a/src/content/docs/szmgr/SZP06_strojove_uceni.md +++ b/src/content/docs/szmgr/SZP06_strojove_uceni.md @@ -423,7 +423,7 @@ Neuronové sítě, jejichž architektura obsahuje cykly. Tedy výstup v jednom b ``` > [!TIP] - > Pokud $\textcolor{red}{\sigma' \cdot W_{k’k}} \not\approx 1$, pak gradient buď vybouchne nebo se ztratí. + > Pokud $\textcolor{red}{\sigma' \cdot W_{k'k}} \not\approx 1$, pak gradient buď vybouchne nebo se ztratí. - **Long Short-Term Memory (LSTM)**\ LSTM řeší problém s vanishing a exploding gradientem, kterým RNN. V RNN je $\sigma$ typicky $\tanh$. V LSTM obsahuje jeden hidden neuron vlastně čtyři "podvrstvy", které mimo jiné umožňují část paměti zapomenout: diff --git a/src/content/docs/szmgr/VPH01_pokrocila_grafika.md b/src/content/docs/szmgr/VPH01_pokrocila_grafika.md index 4ad84f6..6694f73 100644 --- a/src/content/docs/szmgr/VPH01_pokrocila_grafika.md +++ b/src/content/docs/szmgr/VPH01_pokrocila_grafika.md @@ -357,7 +357,7 @@ Stíny jsou důležité, jelikož: ![width=500rem](./img/vph01_shadow_volumes.png) - Prakticky se používá Stencil Buffer Algorithm, kdy renderujeme pro každý objekt nejprve front faces a pak back faces. Tenhle přístup je problematický, pokud je kamera ve stínu, ale řešitelný pokud obrátíme pořádí objektů -- jdeme od nekonečna ke kameře (Z-fail, Carmack’s reverse). + Prakticky se používá Stencil Buffer Algorithm, kdy renderujeme pro každý objekt nejprve front faces a pak back faces. Tenhle přístup je problematický, pokud je kamera ve stínu, ale řešitelný pokud obrátíme pořádí objektů -- jdeme od nekonečna ke kameře (Z-fail, Carmack's reverse). - **Soft shadows**\ Existuje množství algoritmů. Například shadow mapy s Percentage Closer Filtering (PCF). Jsou ale výpočetně náročnější než hard shadows. diff --git a/src/content/docs/szmgr/VPH02_graficke_a_fyzikalni_principy.md b/src/content/docs/szmgr/VPH02_graficke_a_fyzikalni_principy.md index 7913370..6e613a3 100644 --- a/src/content/docs/szmgr/VPH02_graficke_a_fyzikalni_principy.md +++ b/src/content/docs/szmgr/VPH02_graficke_a_fyzikalni_principy.md @@ -301,7 +301,7 @@ Specifický pohyb postav bezvědomí. Kombinuje animace a fyziku. Je založená ![width=500rem](./img/vph02_ragdoll.jpg) -- **Featherstone’s algorithm**\ +- **Featherstone's algorithm**\ Algoritmus pro výpočet dynamiky stromovité struktury propojených článků. diff --git a/src/content/docs/szmgr/VPH03_herni_design_i.md b/src/content/docs/szmgr/VPH03_herni_design_i.md index 8c30aba..0765b07 100644 --- a/src/content/docs/szmgr/VPH03_herni_design_i.md +++ b/src/content/docs/szmgr/VPH03_herni_design_i.md @@ -14,9 +14,9 @@ _PA215, PA216_ > Game design is like a recipe... > -> It looks fine, but you can’t eat it... +> It looks fine, but you can't eat it... > -> Well it can be eaten, but it doesn’t fill you up. +> Well it can be eaten, but it doesn't fill you up. > > — Taky ZZ @@ -107,9 +107,9 @@ Lidi jsou různí a různí lidi hrají různé hry různě. - **Explorer**\ Snaží se objevovat a poznávat svět. Je hrdý na hloubku svých znalostí o světě. - > I haven’t tried that one, what’s it do? + > I haven't tried that one, what's it do? -**Bartle’s Taxonomy of Players [^pa215-2022]** +**Bartle's Taxonomy of Players [^pa215-2022]** ![width=500rem](./img/vph03_bartle.png) @@ -142,7 +142,7 @@ Hry dovedou navodit řadu různých herních zážitků, které můžeme různý > [!IMPORTANT] > Herní zážitky souvisí s pojmem obtížnost, kterému se věnuje část otázky [Herní design II](../vph04_herni_design_ii/). -#### LeBlanc’s Eight Kinds of Fun +#### LeBlanc's Eight Kinds of Fun > [!TIP] > Taky označované jako _Taxonomy of Game Pleasures_ a _herní "pošušňáníčka"_. [^pa215-2019] @@ -242,9 +242,9 @@ Game designer produkuje taky hromady abstraktních teorií o herním designu. > Design theory is like coffee. > > - You can get it on **every corner**. -> - It’s expensive whether it’s **high or low quality**. -> - It’s a **fuel for magic**. -> - **Without doing something with it it’s useless**. +> - It's expensive whether it's **high or low quality**. +> - It's a **fuel for magic**. +> - **Without doing something with it it's useless**. > — Ano, stále ZZ @@ -288,9 +288,9 @@ Lehký slovník pro popis her. [^cgo] Hodí se při komunikaci s klienty, nevyvo - **Audio**\ Includes background music such as a fully orchestrated soundtrack, sound effects, rewarding sounds and voice-acted dialogue. - **Narrative**\ - Contains the interactive story of a game which makes up the game’s plot. + Contains the interactive story of a game which makes up the game's plot. - **Game Design**\ - Contains all the game’s mechanics that define the game’s rules, which provide the structures and frames for play (for example winning and losing conditions) and actions available to the player. + Contains all the game's mechanics that define the game's rules, which provide the structures and frames for play (for example winning and losing conditions) and actions available to the player. - **Level Design**\ Includes the architecture of the spatial navigation of levels which determine how the player agent can progress from one point in the game to another. - **Gameplay**\ diff --git a/src/content/docs/szmgr/VPH04_herni_design_ii.md b/src/content/docs/szmgr/VPH04_herni_design_ii.md index bbd60d1..0e15206 100644 --- a/src/content/docs/szmgr/VPH04_herni_design_ii.md +++ b/src/content/docs/szmgr/VPH04_herni_design_ii.md @@ -22,17 +22,17 @@ Obsahuje základní informace o hře v čitelné formě pro negamedesignery (tř - target audience, žánr, target platform, pro kolik bude hráčů... - high concept statement - krátký popis hry - ** What does the player do? - ** Why do they do it? - ** Where do they do it? - ** What are the constraints on the player? - ** What sort of emotion is this game trying to evoke in the player? - ** How is this game unique? What differentiates it from other games? + - What does the player do? + - Why do they do it? + - Where do they do it? + - What are the constraints on the player? + - What sort of emotion is this game trying to evoke in the player? + - How is this game unique? What differentiates it from other games? - feature set - competition - podobné hry - inovation - co hra přináší nového (art, design, technologie, ...) - scope management - omezení rozsahu hry tak aby se zvládla vyrobit - \*\* must have, should have, could have, won’t have + \*\* must have, should have, could have, won't have ## Teoretické koncepty herní analýzy @@ -101,7 +101,7 @@ V teorii her se hry dělí na: - **Symetrická**\ V symetrických hrách mají všichni hráči stejné možnosti. Jinými slovy, nezáleží na tom, **kým** hráč je, ale jakou strategii zvolí. Většina symetrických her je krátká, jelikož při delším hraní mají hráči různé strategické možnosti, a tak se hra stává _de facto_ asymetrickou. - Příkladem symetrické hry jsou například kámen-nůžky-papír, prisoner’s dilema. + Příkladem symetrické hry jsou například kámen-nůžky-papír, prisoner's dilema. Z pohledu game designu stačí, že mají hráči stejné možnosti. Tedy například šachy jsou symetrické z pohledu game designéra, ale z pohledu teorie her ne, protože bílý začíná a má tedy výhodu. @@ -179,13 +179,13 @@ Game desiner může využít libovolné herní elementy k tomu, aby komunikoval ### Struktura -- **Lineární (3-bodová struktura, Monomyth / Hero’s journey)** +- **Lineární (3-bodová struktura, Monomyth / Hero's journey)** 1. Setup -- expozice, počáteční incident. 2. Konfrontace -- překážky, krize. 3. Rozuzlení -- vyvrcholení, závěr. - > [The] hero’s journey, or the monomyth, is the common template of stories that involve a hero who goes on an adventure, is victorious in a decisive crisis, and comes home changed or transformed. + > [The] hero's journey, or the monomyth, is the common template of stories that involve a hero who goes on an adventure, is victorious in a decisive crisis, and comes home changed or transformed. > > — Wikipedia: Hero's journey @@ -222,7 +222,7 @@ Jak tutoriál tak onboarding učí hráče, jak hru hrát. Onboarding je širš - A design of an early gameplay to motivate the player to play a game. [^pa215-2019] - A design of gameplay to motivate the player to achieve mastery. -> [...] it’s incredibly powerful to teach a player how to play the game, in-game, because that way they quickly take ownership over what happens. +> [...] it's incredibly powerful to teach a player how to play the game, in-game, because that way they quickly take ownership over what happens. > > — Miyamoto @@ -296,7 +296,7 @@ Proces, kdy je game design testován na hráčích po celou dobu vývoje. A to --- > - Playtest before you think you are ready. -> - Don’t explain. +> - Don't explain. > - Take notes. > - Shut Up. > - Notice everything. @@ -312,4 +312,4 @@ Proces, kdy je game design testován na hráčích po celou dobu vývoje. A to [^pa215-2022]: https://is.muni.cz/auth/el/fi/podzim2022/PA215/index.qwarp [^zagalo]: https://www.slideshare.net/nzagalo/videogame-narrative [^pa215-2019]: https://is.muni.cz/auth/el/fi/podzim2019/PA215/um/ -[^fuck-rules]: [Don’t follow these rules!: A Primer for Playtesting, Nathalie Pozzi and Eric Zimmerman](https://static1.squarespace.com/static/579b8aa26b8f5b8f49605c96/t/5962a494bebafbc89ca001b6/1499636884792/A+Primer+for+Playtesting.pdf) +[^fuck-rules]: [Don't follow these rules!: A Primer for Playtesting, Nathalie Pozzi and Eric Zimmerman](https://static1.squarespace.com/static/579b8aa26b8f5b8f49605c96/t/5962a494bebafbc89ca001b6/1499636884792/A+Primer+for+Playtesting.pdf) diff --git a/src/content/docs/szmgr/VPH06_ai_ve_hrach.md b/src/content/docs/szmgr/VPH06_ai_ve_hrach.md index f2b99a0..3a54d33 100644 --- a/src/content/docs/szmgr/VPH06_ai_ve_hrach.md +++ b/src/content/docs/szmgr/VPH06_ai_ve_hrach.md @@ -155,7 +155,7 @@ Pathfinding vnímá scénu jako graf, ve kterém hledá (obvykle nejkratší) ce Prozkoumej jednoho souseda, pak jeho souseda, pak souseda toho souseda atd. dokud jsi tak hluboko, že nemáš kam jít. Pak se teprve vynoř o úroveň výš a zkus prozkoumat jiného souseda. - **Shortest path algorithms / algoritmy pro nejkratší cestu**\ Hledají nejkratší cestu mezi dvěma uzly. Používají nějakou heuristiku $f$ pro výběr dalšího uzlu k prozkoumání. -- **Dijkstra’s algorithm / Dijkstrův algoritmus**\ +- **Dijkstra's algorithm / Dijkstrův algoritmus**\ Podobný BFS, ale snaží se najít nejkratší cestu, ne nutně prozkoumat celý graf. Hranám přiřazuje cenu a vybírá ty s nejnižší cenou -- $f$ je nejnižší vzdálenost od počátečního uzlu. ### A\* algoritmus @@ -275,7 +275,7 @@ Agenti nevidí herní svět stejně jako hráči, vidí ho spíš jako graf s uz - **Tile-based / dlaždicové**\ Některé hry, např real-time strategie (RTS), mají svět rozdělen do čtvercových / hexagonálních dlaždic. Díky tomu je jednoduché je převést na graf, neboť co dlaždice to uzel. - **Sid Meier’s Civilization V [^civ5]** + **Sid Meier's Civilization V [^civ5]** ![width=400](./img/vph06_civilization.jpg) @@ -481,7 +481,7 @@ Typicky turn-based hry pro dva hráče, často s perfektní informací. - **Zero-sum games**\ Hra, kde výhra jednoho hráče je prohrou druhého (např. šachy). - **Non-zero-sum games**\ - Výhra jednoho hráče nemusí být prohra druhého, stejně tak prohra jednoho hráče nemusí být výhra druhého (např. kooperativní hry, prisoner’s dilemma). + Výhra jednoho hráče nemusí být prohra druhého, stejně tak prohra jednoho hráče nemusí být výhra druhého (např. kooperativní hry, prisoner's dilemma). ### AI turn-based algoritmy @@ -547,7 +547,7 @@ Minmax i alpha-beta pruning se chápe nejlíp s vizualizací. Můžete kouknout [^steering]: [Steering Behaviors](https://slsdo.github.io/steering-behaviors/) [^navmesh]: [Navigation System in Unity](https://docs.unity3d.com/Manual/nav-NavigationSystem.html) [^astar]: [Introduction to the A\* Algorithm](https://www.redblobgames.com/pathfinding/a-star/introduction.html) -[^civ5]: [Sid Meier’s Civilization V](https://store.steampowered.com/app/8930/Sid_Meiers_Civilization_V/) +[^civ5]: [Sid Meier's Civilization V](https://store.steampowered.com/app/8930/Sid_Meiers_Civilization_V/) [^monte-carlo]: [Wikipedia: Monte Carlo method](https://en.wikipedia.org/wiki/Monte_Carlo_method) [^mcts]: [Wikipedia: Monte Carlo tree search](https://en.wikipedia.org/wiki/Monte_Carlo_tree_search) [^ida-star]: [Wikipedia: Iterative deepening A\*](https://en.wikipedia.org/wiki/Iterative_deepening_A*) diff --git a/src/content/docs/szmgr/VPH07_gpu_rendering.md b/src/content/docs/szmgr/VPH07_gpu_rendering.md index 05ff6b2..22566f2 100644 --- a/src/content/docs/szmgr/VPH07_gpu_rendering.md +++ b/src/content/docs/szmgr/VPH07_gpu_rendering.md @@ -301,7 +301,7 @@ Ambient occlusion approximuje, jak moc je objekt vystaven ambientním světlu. J [^sw-coordinates]: [Verge3D Wiki: Coordinate Systems](https://www.soft8soft.com/wiki/index.php/Coordinate_Systems) [^viewport]: [`glViewport`](https://registry.khronos.org/OpenGL-Refpages/gl4/html/glViewport.xhtml) [^depth-range]: [`glDepthRange`](https://registry.khronos.org/OpenGL-Refpages/gl4/html/glDepthRange.xhtml) -[^vulkan-coords]: [Vulkan’s coordinate system](http://anki3d.org/vulkan-coordinate-system/) +[^vulkan-coords]: [Vulkan's coordinate system](http://anki3d.org/vulkan-coordinate-system/) [^pv227]: [PV227 GPU Rendering (podzim 2022)](https://is.muni.cz/auth/el/fi/podzim2022/PV227/) [^anti-aliasing]: [LearnOpenGL: Anti-Aliasing](https://learnopengl.com/Advanced-OpenGL/Anti-Aliasing) [^ambient-occlusion]: [Wikipedia: Ambient occlusion](https://en.wikipedia.org/wiki/Ambient_occlusion) diff --git a/src/styles/scroll-fix.css b/src/styles/scroll-fix.css new file mode 100644 index 0000000..93679d0 --- /dev/null +++ b/src/styles/scroll-fix.css @@ -0,0 +1,7 @@ +:root { + scroll-behavior: smooth; +} + +a { + scroll-padding-top: 2rem; +} \ No newline at end of file