├── .gitignore ├── README.md ├── index.html └── styles.css /.gitignore: -------------------------------------------------------------------------------- 1 | *.meta 2 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | The Ramen Unity Style Guide 2 | =========================== 3 | 4 | ### For file structure, naming conventions and other things 5 | 6 | These are guidelines for keeping your project organized and allow your team to quickly find the assets they need. Games are large projects that span several months, thus having standardized conventions that make sense will avoid headaches in the long run. 7 | 8 | Note that your team and project might have different needs, use different software, etc. Use this guide only as a base to decide on what works for your team. Every project should have its own, easy to find, style guide, so everyone in the team is up to date in the project's conventions. 9 | 10 | # Table of Contents 11 | 12 | - [Asset Naming](#asset-naming) 13 | - [Folders](#folders) 14 | - [Source code](#source-code) 15 | - [Non-code assets](#non-code-assets) 16 | - [Directory/File structure](#directory-file-structure) 17 | - [Assets](#assets) 18 | - [Scripts](#scripts) 19 | - [Models](#models) 20 | - [Workflow](#workflow) 21 | - [Models](#models) 22 | - [Textures](#textures) 23 | - [Configuration files](#configuration-files) 24 | - [Localization](#localization) 25 | - [Audio](#audio) 26 | - [Be Consistent](#be-consistent) 27 | 28 | # Asset Naming 29 | 30 | First of all, no\ spaces\ on file or directory names. 31 | 32 | ## Folders 33 | 34 | `PascalCase` 35 | 36 | Prefer a deep folder structure over having long asset names. 37 | 38 | Directory names should be as concise as possible, prefer one or two words. If a directory name is too long, it probably makes sense to split it into sub directories. 39 | 40 | Try to have only one file type per folder. Use `Textures/Trees`, `Models/Trees` and not `Trees/Textures`, `Trees/Models`. That way its easy to set up root directories for the different software involved, for example, Substance Painter would always be set to save to the Textures directory. 41 | 42 | If your project contains multiple environments or art sets, use the asset type for the parent directory: `Trees/Jungle`, `Trees/City` not `Jungle/Trees`, `City/Trees`. Since it makes it easier to compare similar assets from different art sets to ensure continuity across art sets. 43 | 44 | ### Debug Folders 45 | 46 | `[PascalCase]` 47 | 48 | This signifies that the folder only contains assets that are not ready for production. For example, having an `[Assets]` and `Assets` folder. 49 | 50 | ## Source Code 51 | 52 | Use the naming convention of the programming language. For C# and shader files use `PascalCase`, as per C# convention. 53 | 54 | ## Non-Code Assets 55 | 56 | Use `tree_small` not `small_tree`. While the latter sound better in English, it is much more effective to group all tree objects together instead of all small objects. 57 | 58 | `camelCase` where necessary. Use `weapon_miniGun` instead of `weapon_gun_mini`. Avoid this if possible, for example, `vehicles_fighterJet` should be `vehicles_jet_fighter` if you plan to have multiple types of jets. 59 | 60 | Prefer using descriptive suffixes instead of iterative: `vehicle_truck_damaged` not `vehicle_truck_01`. If using numbers as a suffix, always use 2 digits. And **do not** use it as a versioning system! Use `git` or something similar. 61 | 62 | ### Persistent/Important GameObjects 63 | 64 | `_snake_case` 65 | 66 | Use a leading underscore to make object instances that are not specific to the current scene stand out. 67 | 68 | ### Debug Objects 69 | 70 | `[SNAKE_CASE]` 71 | 72 | Enclose objects that are only being used for debugging/testing and are not part of the release with brackets. 73 | 74 | # Directory/File Structure 75 | 76 | ``` 77 | Root 78 | +---Assets 79 | +---Build 80 | \---Tools # Programs to aid development: compilers, asset managers etc. 81 | ``` 82 | 83 | ## Assets 84 | 85 | ``` 86 | Assets 87 | +---Art 88 | | +---Materials 89 | | +---Models # FBX and BLEND files 90 | | +---Textures # PNG files 91 | +---Audio 92 | | +---Music 93 | | \---Sound # Samples and sound effects 94 | +---Code 95 | | +---Scripts # C# scripts 96 | | \---Shaders # Shader files and shader graphs 97 | +---Docs # Wiki, concept art, marketing material 98 | +---Level # Anything related to game design in Unity 99 | | +---Prefabs 100 | | +---Scenes 101 | | \---UI 102 | \---Resources # Configuration files, localization text and other user files. 103 | ``` 104 | 105 | ## Assets (alternative) 106 | 107 | ``` 108 | Assets 109 | +---Art 110 | | +---Materials 111 | | +---Models # FBX and BLEND files 112 | | +---Music 113 | | +---Prefabs 114 | | +---Sound # Samples and sound effects 115 | | +---Textures 116 | | +---UI 117 | +---Levels # Unity scene files 118 | +---Src # C# scripts and shaders 119 | | +---Framework 120 | | \---Shaders 121 | ``` 122 | 123 | ## Scripts 124 | 125 | Use namespaces that match your directory structure. 126 | 127 | A Framework directory is great for having code that can be reused across projects. 128 | 129 | The Scripts folder varies depending on the project, however, `Environment`, `Framework`, `Tools` and `UI` should be consistent across projects. 130 | 131 | ``` 132 | Scripts 133 | +---Environment 134 | +---Framework 135 | +---NPC 136 | +---Player 137 | +---Tools 138 | \---UI 139 | ``` 140 | 141 | ## Models 142 | 143 | Separate files from the modelling program and ready to use, exported models. 144 | 145 | ``` 146 | Models 147 | +---Blend 148 | \---FBX 149 | ``` 150 | 151 | # Workflow 152 | 153 | ## Models 154 | 155 | File extension: `FBX` 156 | 157 | Even though Unity supports Blender files by default, it is better to keep what is being worked on and what is a complete, exported model separate. This is also a must when using other software, such as Substance for texturing. 158 | 159 | Use `Y up`, `-Z forward` and `uniform scale` when exporting. 160 | 161 | ## Textures 162 | 163 | File extension: `PNG`, `TIFF` or `HDR` 164 | 165 | Choose either a `Specularity/Glossiness` or `Roughness/Metallic` workflow. This depends on the software being used and what your artists are more comfortable with. Specularity maps have the advantage of being having the possibility to be RGB maps instead of grayscale (useful for tinted metals), apart from that there is little difference between the result from either workflow. 166 | 167 | ### Texture Suffixes 168 | 169 | Suffix | Texture 170 | :------|:----------------- 171 | `_AL` | Albedo 172 | `_SP` | Specular 173 | `_R` | Roughness 174 | `_MT` | Metallic 175 | `_GL` | Glossiness 176 | `_N` | Normal 177 | `_H` | Height 178 | `_DP` | Displacement 179 | `_EM` | Emission 180 | `_AO` | Ambient Occlusion 181 | `_M` | Mask 182 | 183 | ### RGB Masks 184 | 185 | It is good practice to use a single texture to combine black and white masks in a single texture split by each RGB channel. Using this, most textures should have: 186 | 187 | ``` 188 | texture_AL.png # Albedo 189 | texture_N.png # Normal Map 190 | texture_M.png # Mask 191 | ``` 192 | 193 | Channel | Spec/Gloss | Rough/Metal 194 | :-------|:------------------|:----------- 195 | R | Specularity | Roughness 196 | G | Glossiness | Metallic 197 | B | Ambient Occlusion | Ambient Occlusion 198 | 199 | #### The blue channel can vary depending on the type of material: 200 | 201 | - For character materials use the `B` channel for *subsurface opacity/strength* 202 | - For anisotropic materials use the `B` channel for the *anisotropic direction map* 203 | 204 | ## Configuration Files 205 | 206 | File extension: `INI` 207 | 208 | Fast and easy to parse, clean and easy to tweak. 209 | 210 | `XML`, `JSON`, and `YAML` are also good alternatives, pick one and be consistent. 211 | 212 | Use binary file formats for files that should not be changed by the player. For multiplayer games store configuration data on a secure server. 213 | 214 | ## Localization 215 | 216 | File extension: `CSV` 217 | 218 | Widely used by localization software, makes it trivial to edit strings using spreadsheets. 219 | 220 | ## Audio 221 | 222 | File extension: `WAV` while mixing, `OGG` in game. 223 | 224 | Preload small sound clips to memory, load on the fly for longer music and less frequent ambient noise files. 225 | 226 | # Be Consistent 227 | 228 | > The point of having style guidelines is to have a common vocabulary of coding so people can concentrate on what you're saying rather than on how you're saying it. We present global style rules here so people know the vocabulary, but local style is also important. If code you add to a file looks drastically different from the existing code around it, it throws readers out of their rhythm when they go to read it. Avoid this. 229 | 230 | -- [Google C++ Style Guide](https://google.github.io/styleguide/cppguide.html) 231 | 232 | --- 233 | -------------------------------------------------------------------------------- /index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | README.md 6 | 7 | 8 | 9 |

The Ramen Unity Style Guide

For file structure, naming conventions and other things

These are guidelines for keeping your project organized and allow your team to quickly find the assets they need. Games are large projects that span several months, thus having standardized conventions that make sense will avoid headaches in the long run.

Note that your team and project might have different needs, use different software, etc. Use this guide only as a base to decide on what works for your team. Every project should have its own, easy to find, style guide, so everyone in the team is up to date in the project's conventions.

Table of Contents

Asset Naming

First of all, no\ spaces\ on file or directory names.

Folders

PascalCase

Prefer a deep folder structure over having long asset names.

Directory names should be as concise as possible, prefer one or two words. If a directory name is too long, it probably makes sense to split it into sub directories.

Try to have only one file type per folder. Use Textures/Trees, Models/Trees and not Trees/Textures, Trees/Models. That way its easy to set up root directories for the different software involved, for example, Substance Painter would always be set to save to the Textures directory.

If your project contains multiple environments or art sets, use the asset type for the parent directory: Trees/Jungle, Trees/City not Jungle/Trees, City/Trees. Since it makes it easier to compare similar assets from different art sets to ensure continuity across art sets.

Debug Folders

[PascalCase]

This signifies that the folder only contains assets that are not ready for production. For example, having an [Assets] and Assets folder.

Source Code

Use the naming convention of the programming language. For C# and shader files use PascalCase, as per C# convention.

Non-Code Assets

Use tree_small not small_tree. While the latter sound better in English, it is much more effective to group all tree objects together instead of all small objects.

camelCase where necessary. Use weapon_miniGun instead of weapon_gun_mini. Avoid this if possible, for example, vehicles_fighterJet should be vehicles_jet_fighter if you plan to have multiple types of jets.

Prefer using descriptive suffixes instead of iterative: vehicle_truck_damaged not vehicle_truck_01. If using numbers as a suffix, always use 2 digits. And do not use it as a versioning system! Use git or something similar.

Persistent/Important GameObjects

_snake_case

Use a leading underscore to make object instances that are not specific to the current scene stand out.

Debug Objects

[SNAKE_CASE]

Enclose objects that are only being used for debugging/testing and are not part of the release with brackets.

Directory/File Structure

 

Assets

 

Assets (alternative)

 

Scripts

Use namespaces that match your directory structure.

A Framework directory is great for having code that can be reused across projects.

The Scripts folder varies depending on the project, however, Environment, Framework, Tools and UI should be consistent across projects.

 

Models

Separate files from the modelling program and ready to use, exported models.

 

Workflow

Models

File extension: FBX

Even though Unity supports Blender files by default, it is better to keep what is being worked on and what is a complete, exported model separate. This is also a must when using other software, such as Substance for texturing.

Use Y up, -Z forward and uniform scale when exporting.

Textures

File extension: PNG, TIFF or HDR

Choose either a Specularity/Glossiness or Roughness/Metallic workflow. This depends on the software being used and what your artists are more comfortable with. Specularity maps have the advantage of being having the possibility to be RGB maps instead of grayscale (useful for tinted metals), apart from that there is little difference between the result from either workflow.

Texture Suffixes

SuffixTexture
_ALAlbedo
_SPSpecular
_RRoughness
_MTMetallic
_GLGlossiness
_NNormal
_HHeight
_DPDisplacement
_EMEmission
_AOAmbient Occlusion
_MMask

RGB Masks

It is good practice to use a single texture to combine black and white masks in a single texture split by each RGB channel. Using this, most textures should have:

 
ChannelSpec/GlossRough/Metal
RSpecularityRoughness
GGlossinessMetallic
BAmbient OcclusionAmbient Occlusion

The blue channel can vary depending on the type of material:

Configuration Files

File extension: INI

Fast and easy to parse, clean and easy to tweak.

XML, JSON, and YAML are also good alternatives, pick one and be consistent.

Use binary file formats for files that should not be changed by the player. For multiplayer games store configuration data on a secure server.

Localization

File extension: CSV

Widely used by localization software, makes it trivial to edit strings using spreadsheets.

Audio

File extension: WAV while mixing, OGG in game.

Preload small sound clips to memory, load on the fly for longer music and less frequent ambient noise files.

Be Consistent

The point of having style guidelines is to have a common vocabulary of coding so people can concentrate on what you're saying rather than on how you're saying it. We present global style rules here so people know the vocabulary, but local style is also important. If code you add to a file looks drastically different from the existing code around it, it throws readers out of their rhythm when they go to read it. Avoid this.

-- Google C++ Style Guide


10 | 11 | 12 | -------------------------------------------------------------------------------- /styles.css: -------------------------------------------------------------------------------- 1 | html { 2 | overflow-x: initial !important; 3 | } 4 | 5 | #write, 6 | body { 7 | height: auto; 8 | } 9 | 10 | #write, 11 | #write h1, 12 | #write h2, 13 | #write h3, 14 | #write h4, 15 | #write h5, 16 | #write h6, 17 | #write ol, 18 | #write p, 19 | #write ul { 20 | position: relative; 21 | } 22 | 23 | #write, 24 | #write h1, 25 | #write h2, 26 | #write h3, 27 | #write h4, 28 | #write h5, 29 | #write h6, 30 | #write p, 31 | #write pre { 32 | width: inherit; 33 | } 34 | 35 | #write, 36 | pre { 37 | white-space: pre-wrap; 38 | } 39 | 40 | .CodeMirror, 41 | .md-fences, 42 | table { 43 | text-align: left; 44 | } 45 | 46 | .md-reset, 47 | a:active, 48 | a:hover { 49 | outline: 0px; 50 | } 51 | 52 | .md-reset, 53 | .md-toc-item a { 54 | text-decoration: none; 55 | } 56 | 57 | .MathJax_SVG, 58 | .md-reset { 59 | float: none; 60 | direction: ltr; 61 | } 62 | 63 | :root { 64 | --bg-color: #ffffff; 65 | --text-color: #333333; 66 | } 67 | 68 | html { 69 | font-size: 14px; 70 | background-color: var(--bg-color); 71 | color: var(--text-color); 72 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 73 | -webkit-font-smoothing: antialiased; 74 | } 75 | 76 | body { 77 | margin: 0px; 78 | padding: 0px; 79 | bottom: 0px; 80 | top: 0px; 81 | left: 0px; 82 | right: 0px; 83 | font-size: 1rem; 84 | line-height: 1.42857; 85 | overflow-x: hidden; 86 | background: inherit; 87 | } 88 | 89 | .in-text-selection, 90 | ::selection { 91 | background: rgb(181, 214, 252); 92 | text-shadow: none; 93 | } 94 | 95 | #write { 96 | margin: 0px auto; 97 | word-break: normal; 98 | word-wrap: break-word; 99 | padding-bottom: 70px; 100 | overflow-x: visible; 101 | } 102 | 103 | .first-line-indent #write p .md-line { 104 | text-indent: 0px; 105 | } 106 | 107 | .first-line-indent #write li, 108 | .first-line-indent #write p, 109 | .first-line-indent #write p .md-line:first-child { 110 | text-indent: 2em; 111 | } 112 | 113 | .for-image #write { 114 | padding-left: 8px; 115 | padding-right: 8px; 116 | } 117 | 118 | body.typora-export { 119 | padding-left: 30px; 120 | padding-right: 30px; 121 | } 122 | 123 | @media screen and (max-width: 500px) { 124 | body.typora-export { 125 | padding-left: 0px; 126 | padding-right: 0px; 127 | } 128 | .CodeMirror-sizer { 129 | margin-left: 0px !important; 130 | } 131 | .CodeMirror-gutters { 132 | display: none !important; 133 | } 134 | } 135 | 136 | #write>blockquote:first-child, 137 | #write>div:first-child, 138 | #write>ol:first-child, 139 | #write>p:first-child, 140 | #write>pre:first-child, 141 | #write>table:first-child, 142 | #write>ul:first-child { 143 | margin-top: 30px; 144 | } 145 | 146 | #write li>table:first-child { 147 | margin-top: -20px; 148 | } 149 | 150 | img { 151 | max-width: 100%; 152 | vertical-align: middle; 153 | } 154 | 155 | button, 156 | input, 157 | select, 158 | textarea { 159 | color: inherit; 160 | font-style: inherit; 161 | font-variant: inherit; 162 | font-weight: inherit; 163 | font-stretch: inherit; 164 | font-size: inherit; 165 | line-height: inherit; 166 | font-family: inherit; 167 | } 168 | 169 | input[type="checkbox"], 170 | input[type="radio"] { 171 | line-height: normal; 172 | padding: 0px; 173 | } 174 | 175 | *, 176 | ::after, 177 | ::before { 178 | box-sizing: border-box; 179 | } 180 | 181 | h1 { 182 | font-size: 2rem; 183 | } 184 | 185 | h2 { 186 | font-size: 1.8rem; 187 | } 188 | 189 | h3 { 190 | font-size: 1.6rem; 191 | } 192 | 193 | h4 { 194 | font-size: 1.4rem; 195 | } 196 | 197 | h5 { 198 | font-size: 1.2rem; 199 | } 200 | 201 | h6 { 202 | font-size: 1rem; 203 | } 204 | 205 | p { 206 | -webkit-margin-before: 1rem; 207 | -webkit-margin-after: 1rem; 208 | -webkit-margin-start: 0px; 209 | -webkit-margin-end: 0px; 210 | } 211 | 212 | .mathjax-block { 213 | margin-top: 0px; 214 | margin-bottom: 0px; 215 | -webkit-margin-before: 0px; 216 | -webkit-margin-after: 0px; 217 | } 218 | 219 | .hidden { 220 | display: none; 221 | } 222 | 223 | .md-blockmeta { 224 | color: rgb(204, 204, 204); 225 | font-weight: 700; 226 | font-style: italic; 227 | } 228 | 229 | a { 230 | cursor: pointer; 231 | } 232 | 233 | sup.md-footnote { 234 | padding: 2px 4px; 235 | background-color: rgba(238, 238, 238, 0.7); 236 | color: rgb(85, 85, 85); 237 | border-radius: 4px; 238 | } 239 | 240 | #write input[type="checkbox"] { 241 | cursor: pointer; 242 | width: inherit; 243 | height: inherit; 244 | } 245 | 246 | #write>figure:first-child { 247 | margin-top: 16px; 248 | } 249 | 250 | figure { 251 | overflow-x: auto; 252 | margin: -8px 0px 0px -8px; 253 | max-width: calc(100% + 16px); 254 | padding: 8px; 255 | } 256 | 257 | tr { 258 | break-inside: avoid; 259 | break-after: auto; 260 | } 261 | 262 | thead { 263 | display: table-header-group; 264 | } 265 | 266 | table { 267 | border-collapse: collapse; 268 | border-spacing: 0px; 269 | width: 100%; 270 | overflow: auto; 271 | break-inside: auto; 272 | } 273 | 274 | .CodeMirror-line, 275 | .md-fences { 276 | break-inside: avoid; 277 | } 278 | 279 | table.md-table td { 280 | min-width: 80px; 281 | } 282 | 283 | .CodeMirror-gutters { 284 | border-right: 0px; 285 | background-color: inherit; 286 | margin-right: 4px; 287 | } 288 | 289 | .CodeMirror-placeholder { 290 | opacity: 0.3; 291 | } 292 | 293 | .CodeMirror pre { 294 | padding: 0px 4px; 295 | } 296 | 297 | .CodeMirror-lines { 298 | padding: 0px; 299 | } 300 | 301 | div.hr:focus { 302 | cursor: none; 303 | } 304 | 305 | .md-fences { 306 | font-size: 0.9rem; 307 | display: block; 308 | overflow: visible; 309 | white-space: pre; 310 | background: inherit; 311 | position: relative !important; 312 | } 313 | 314 | .md-diagram-panel { 315 | width: 100%; 316 | margin-top: 10px; 317 | text-align: center; 318 | padding-top: 0px; 319 | padding-bottom: 8px; 320 | overflow-x: auto; 321 | } 322 | 323 | .md-fences .CodeMirror.CodeMirror-wrap { 324 | top: -1.6em; 325 | margin-bottom: -1.6em; 326 | } 327 | 328 | .md-fences.mock-cm { 329 | white-space: pre-wrap; 330 | } 331 | 332 | .show-fences-line-number .md-fences { 333 | padding-left: 0px; 334 | } 335 | 336 | .show-fences-line-number .md-fences.mock-cm { 337 | padding-left: 40px; 338 | } 339 | 340 | .footnotes { 341 | opacity: 0.8; 342 | font-size: 0.9rem; 343 | margin-top: 1em; 344 | margin-bottom: 1em; 345 | } 346 | 347 | .footnotes+.footnotes { 348 | margin-top: 0px; 349 | } 350 | 351 | .md-reset { 352 | margin: 0px; 353 | padding: 0px; 354 | border: 0px; 355 | vertical-align: top; 356 | background: 0px 0px; 357 | text-shadow: none; 358 | position: static; 359 | width: auto; 360 | height: auto; 361 | white-space: nowrap; 362 | cursor: inherit; 363 | -webkit-tap-highlight-color: transparent; 364 | line-height: normal; 365 | font-weight: 400; 366 | text-align: left; 367 | box-sizing: content-box; 368 | } 369 | 370 | .md-toc-inner, 371 | a img, 372 | img a { 373 | cursor: pointer; 374 | } 375 | 376 | li div { 377 | padding-top: 0px; 378 | } 379 | 380 | blockquote { 381 | margin: 1rem 0px; 382 | } 383 | 384 | li .mathjax-block, 385 | li p { 386 | margin: 0.5rem 0px; 387 | } 388 | 389 | li { 390 | margin: 0px; 391 | position: relative; 392 | } 393 | 394 | blockquote> :last-child { 395 | margin-bottom: 0px; 396 | } 397 | 398 | blockquote> :first-child { 399 | margin-top: 0px; 400 | } 401 | 402 | .footnotes-area { 403 | color: rgb(136, 136, 136); 404 | margin-top: 0.714rem; 405 | padding-bottom: 0.143rem; 406 | white-space: nowrap; 407 | } 408 | 409 | @media print { 410 | body, 411 | html { 412 | border: 1px solid transparent; 413 | height: 99%; 414 | break-after: avoid; 415 | break-before: avoid; 416 | } 417 | #write { 418 | margin-top: 0px; 419 | border-color: transparent !important; 420 | } 421 | .typora-export * { 422 | -webkit-print-color-adjust: exact; 423 | } 424 | h1, 425 | h2, 426 | h3, 427 | h4, 428 | h5, 429 | h6 { 430 | break-after: avoid-page; 431 | orphans: 2; 432 | } 433 | p { 434 | orphans: 4; 435 | } 436 | html.blink-to-pdf { 437 | font-size: 13px; 438 | } 439 | .typora-export #write { 440 | padding-left: 1cm; 441 | padding-right: 1cm; 442 | padding-bottom: 0px; 443 | break-after: avoid; 444 | } 445 | .typora-export #write::after { 446 | height: 0px; 447 | } 448 | @page { 449 | margin: 20mm 0px; 450 | } 451 | } 452 | 453 | .footnote-line { 454 | margin-top: 0.714em; 455 | font-size: 0.7em; 456 | } 457 | 458 | pre.md-meta-block { 459 | font-size: 0.8rem; 460 | min-height: 0.8rem; 461 | white-space: pre-wrap; 462 | background: rgb(204, 204, 204); 463 | display: block; 464 | overflow-x: hidden; 465 | } 466 | 467 | p>img:only-child { 468 | display: block; 469 | margin: auto; 470 | } 471 | 472 | .md-line>.md-image:only-child, 473 | p>.md-image:only-child { 474 | display: inline-block; 475 | width: 100%; 476 | text-align: center; 477 | } 478 | 479 | .mathjax-block:not(:empty)::after, 480 | .md-toc-content::after, 481 | .md-toc::after { 482 | display: none; 483 | } 484 | 485 | #write .MathJax_Display { 486 | margin: 0.8em 0px 0px; 487 | } 488 | 489 | .mathjax-block { 490 | white-space: pre; 491 | overflow: hidden; 492 | width: 100%; 493 | } 494 | 495 | p+.mathjax-block { 496 | margin-top: -1.143rem; 497 | } 498 | 499 | [contenteditable="true"]:active, 500 | [contenteditable="true"]:focus { 501 | outline: 0px; 502 | box-shadow: none; 503 | } 504 | 505 | .md-task-list-item { 506 | position: relative; 507 | list-style-type: none; 508 | } 509 | 510 | .task-list-item.md-task-list-item { 511 | padding-left: 0px; 512 | } 513 | 514 | .md-task-list-item>input { 515 | position: absolute; 516 | top: 0px; 517 | left: 0px; 518 | margin-left: -1.2em; 519 | margin-top: calc(1em - 10px); 520 | } 521 | 522 | .math { 523 | font-size: 1rem; 524 | } 525 | 526 | .md-toc { 527 | min-height: 3.58rem; 528 | position: relative; 529 | font-size: 0.9rem; 530 | border-radius: 10px; 531 | } 532 | 533 | .MathJax_SVG, 534 | .mathjax-block .MathJax_SVG_Display { 535 | text-indent: 0px; 536 | max-width: none; 537 | max-height: none; 538 | min-height: 0px; 539 | } 540 | 541 | .md-toc-content { 542 | position: relative; 543 | margin-left: 0px; 544 | } 545 | 546 | .md-toc-item { 547 | display: block; 548 | color: rgb(65, 131, 196); 549 | } 550 | 551 | .md-toc-inner:hover {} 552 | 553 | .md-toc-inner { 554 | display: inline-block; 555 | } 556 | 557 | .md-toc-h1 .md-toc-inner { 558 | margin-left: 0px; 559 | font-weight: 700; 560 | } 561 | 562 | .md-toc-h2 .md-toc-inner { 563 | margin-left: 2em; 564 | } 565 | 566 | .md-toc-h3 .md-toc-inner { 567 | margin-left: 4em; 568 | } 569 | 570 | .md-toc-h4 .md-toc-inner { 571 | margin-left: 6em; 572 | } 573 | 574 | .md-toc-h5 .md-toc-inner { 575 | margin-left: 8em; 576 | } 577 | 578 | .md-toc-h6 .md-toc-inner { 579 | margin-left: 10em; 580 | } 581 | 582 | @media screen and (max-width: 48em) { 583 | .md-toc-h3 .md-toc-inner { 584 | margin-left: 3.5em; 585 | } 586 | .md-toc-h4 .md-toc-inner { 587 | margin-left: 5em; 588 | } 589 | .md-toc-h5 .md-toc-inner { 590 | margin-left: 6.5em; 591 | } 592 | .md-toc-h6 .md-toc-inner { 593 | margin-left: 8em; 594 | } 595 | } 596 | 597 | a.md-toc-inner { 598 | font-size: inherit; 599 | font-style: inherit; 600 | font-weight: inherit; 601 | line-height: inherit; 602 | } 603 | 604 | .footnote-line a:not(.reversefootnote) { 605 | color: inherit; 606 | } 607 | 608 | .md-attr { 609 | display: none; 610 | } 611 | 612 | .md-fn-count::after { 613 | content: "."; 614 | } 615 | 616 | code, 617 | pre, 618 | tt { 619 | font-family: var(--monospace); 620 | } 621 | 622 | .md-comment { 623 | color: rgb(162, 127, 3); 624 | opacity: 0.8; 625 | font-family: var(--monospace); 626 | } 627 | 628 | code { 629 | text-align: left; 630 | } 631 | 632 | a.md-print-anchor { 633 | border-width: initial !important; 634 | border-style: none !important; 635 | border-color: initial !important; 636 | display: inline-block !important; 637 | position: absolute !important; 638 | width: 1px !important; 639 | right: 0px !important; 640 | outline: 0px !important; 641 | background: 0px 0px !important; 642 | text-decoration: initial !important; 643 | text-shadow: initial !important; 644 | } 645 | 646 | .md-inline-math .MathJax_SVG .noError { 647 | display: none !important; 648 | } 649 | 650 | .mathjax-block .MathJax_SVG_Display { 651 | text-align: center; 652 | margin: 1em 0px; 653 | position: relative; 654 | min-width: 100%; 655 | width: auto; 656 | display: block !important; 657 | } 658 | 659 | .MathJax_SVG_Display, 660 | .md-inline-math .MathJax_SVG_Display { 661 | width: auto; 662 | margin: inherit; 663 | display: inline-block !important; 664 | } 665 | 666 | .MathJax_SVG .MJX-monospace { 667 | font-family: monospace; 668 | } 669 | 670 | .MathJax_SVG .MJX-sans-serif { 671 | font-family: sans-serif; 672 | } 673 | 674 | .MathJax_SVG { 675 | display: inline; 676 | font-style: normal; 677 | font-weight: 400; 678 | line-height: normal; 679 | zoom: 90%; 680 | text-align: left; 681 | text-transform: none; 682 | letter-spacing: normal; 683 | word-spacing: normal; 684 | word-wrap: normal; 685 | white-space: nowrap; 686 | min-width: 0px; 687 | border: 0px; 688 | padding: 0px; 689 | margin: 0px; 690 | } 691 | 692 | .MathJax_SVG * { 693 | transition: none; 694 | } 695 | 696 | .os-windows.monocolor-emoji .md-emoji { 697 | font-family: "Segoe UI Symbol", sans-serif; 698 | } 699 | 700 | .md-diagram-panel>svg, 701 | [lang="flow"] svg, 702 | [lang="mermaid"] svg { 703 | max-width: 100%; 704 | } 705 | 706 | [lang="mermaid"] .node text { 707 | font-size: 1rem; 708 | } 709 | 710 | table tr th { 711 | border-bottom: 0px; 712 | } 713 | 714 | 715 | .CodeMirror, 716 | .CodeMirror-sizer { 717 | position: relative; 718 | } 719 | 720 | .CodeMirror.cm-s-inner { 721 | background: inherit; 722 | } 723 | 724 | .fences-no-line-wrapping .md-fences .CodeMirror { 725 | margin-top: -30px; 726 | } 727 | 728 | .CodeMirror-scroll { 729 | overflow-y: hidden; 730 | overflow-x: auto; 731 | } 732 | 733 | .CodeMirror-lines { 734 | padding: 4px 0px; 735 | } 736 | 737 | .CodeMirror-gutter-filler, 738 | .CodeMirror-scrollbar-filler { 739 | background-color: rgb(255, 255, 255); 740 | } 741 | 742 | .CodeMirror-scroll, 743 | .cm-s-inner .CodeMirror-activeline-background { 744 | background: inherit; 745 | } 746 | 747 | .CodeMirror-linenumber { 748 | padding: 0px 3px 0px 5px; 749 | text-align: right; 750 | color: rgb(153, 153, 153); 751 | } 752 | 753 | .cm-s-inner .cm-keyword { 754 | color: rgb(119, 0, 136); 755 | } 756 | 757 | .cm-s-inner .cm-atom, 758 | .cm-s-inner.cm-atom { 759 | color: rgb(34, 17, 153); 760 | } 761 | 762 | .cm-s-inner .cm-number { 763 | color: rgb(17, 102, 68); 764 | } 765 | 766 | .cm-s-inner .cm-def { 767 | color: rgb(0, 0, 255); 768 | } 769 | 770 | .cm-s-inner .cm-variable { 771 | color: rgb(0, 0, 0); 772 | } 773 | 774 | .cm-s-inner .cm-variable-2 { 775 | color: rgb(0, 85, 170); 776 | } 777 | 778 | .cm-s-inner .cm-variable-3 { 779 | color: rgb(0, 136, 85); 780 | } 781 | 782 | .cm-s-inner .cm-string { 783 | color: rgb(170, 17, 17); 784 | } 785 | 786 | .cm-s-inner .cm-property { 787 | color: rgb(0, 0, 0); 788 | } 789 | 790 | .cm-s-inner .cm-operator { 791 | color: rgb(152, 26, 26); 792 | } 793 | 794 | .cm-s-inner .cm-comment, 795 | .cm-s-inner.cm-comment { 796 | color: rgb(170, 85, 0); 797 | } 798 | 799 | .cm-s-inner .cm-string-2 { 800 | color: rgb(255, 85, 0); 801 | } 802 | 803 | .cm-s-inner .cm-meta, 804 | .cm-s-inner .cm-qualifier { 805 | color: rgb(85, 85, 85); 806 | } 807 | 808 | .cm-s-inner .cm-builtin { 809 | color: rgb(51, 0, 170); 810 | } 811 | 812 | .cm-s-inner .cm-bracket { 813 | color: rgb(153, 153, 119); 814 | } 815 | 816 | .cm-s-inner .cm-tag { 817 | color: rgb(17, 119, 0); 818 | } 819 | 820 | .cm-s-inner .cm-attribute { 821 | color: rgb(0, 0, 204); 822 | } 823 | 824 | .cm-s-inner .cm-header, 825 | .cm-s-inner.cm-header { 826 | color: rgb(0, 0, 255); 827 | } 828 | 829 | .cm-s-inner .cm-quote, 830 | .cm-s-inner.cm-quote { 831 | color: rgb(0, 153, 0); 832 | } 833 | 834 | .cm-s-inner .cm-hr, 835 | .cm-s-inner.cm-hr { 836 | color: rgb(153, 153, 153); 837 | } 838 | 839 | .cm-s-inner .cm-link, 840 | .cm-s-inner.cm-link { 841 | color: rgb(0, 0, 204); 842 | } 843 | 844 | .cm-negative { 845 | color: rgb(221, 68, 68); 846 | } 847 | 848 | .cm-positive { 849 | color: rgb(34, 153, 34); 850 | } 851 | 852 | .cm-header, 853 | .cm-strong { 854 | font-weight: 700; 855 | } 856 | 857 | .cm-del { 858 | text-decoration: line-through; 859 | } 860 | 861 | .cm-em { 862 | font-style: italic; 863 | } 864 | 865 | .cm-link { 866 | text-decoration: underline; 867 | } 868 | 869 | .cm-error, 870 | .cm-invalidchar { 871 | color: red; 872 | } 873 | 874 | .cm-constant { 875 | color: rgb(38, 139, 210); 876 | } 877 | 878 | .cm-defined { 879 | color: rgb(181, 137, 0); 880 | } 881 | 882 | div.CodeMirror span.CodeMirror-matchingbracket { 883 | color: rgb(0, 255, 0); 884 | } 885 | 886 | div.CodeMirror span.CodeMirror-nonmatchingbracket { 887 | color: rgb(255, 34, 34); 888 | } 889 | 890 | .CodeMirror { 891 | height: auto; 892 | overflow: hidden; 893 | } 894 | 895 | .CodeMirror-scroll { 896 | margin-bottom: -30px; 897 | padding-bottom: 30px; 898 | height: 100%; 899 | outline: 0px; 900 | position: relative; 901 | box-sizing: content-box; 902 | } 903 | 904 | .CodeMirror-gutter-filler, 905 | .CodeMirror-hscrollbar, 906 | .CodeMirror-scrollbar-filler, 907 | .CodeMirror-vscrollbar { 908 | position: absolute; 909 | z-index: 6; 910 | display: none; 911 | } 912 | 913 | .CodeMirror-vscrollbar { 914 | right: 0px; 915 | top: 0px; 916 | overflow-x: hidden; 917 | overflow-y: scroll; 918 | } 919 | 920 | .CodeMirror-hscrollbar { 921 | bottom: 0px; 922 | left: 0px; 923 | overflow-y: hidden; 924 | overflow-x: scroll; 925 | } 926 | 927 | .CodeMirror-scrollbar-filler { 928 | right: 0px; 929 | bottom: 0px; 930 | } 931 | 932 | .CodeMirror-gutter-filler { 933 | left: 0px; 934 | bottom: 0px; 935 | } 936 | 937 | .CodeMirror-gutters { 938 | border-right: 1px solid rgb(221, 221, 221); 939 | background: inherit; 940 | white-space: nowrap; 941 | position: absolute; 942 | left: 0px; 943 | top: 0px; 944 | padding-bottom: 30px; 945 | z-index: 3; 946 | } 947 | 948 | .CodeMirror-gutter { 949 | white-space: normal; 950 | height: 100%; 951 | box-sizing: content-box; 952 | padding-bottom: 30px; 953 | margin-bottom: -32px; 954 | display: inline-block; 955 | } 956 | 957 | .CodeMirror-gutter-wrapper { 958 | position: absolute; 959 | z-index: 4; 960 | background: 0px 0px !important; 961 | border: none !important; 962 | } 963 | 964 | .CodeMirror-gutter-background { 965 | position: absolute; 966 | top: 0px; 967 | bottom: 0px; 968 | z-index: 4; 969 | } 970 | 971 | .CodeMirror-gutter-elt { 972 | position: absolute; 973 | cursor: default; 974 | z-index: 4; 975 | } 976 | 977 | .CodeMirror-lines { 978 | cursor: text; 979 | } 980 | 981 | .CodeMirror pre { 982 | border-radius: 0px; 983 | border-width: 0px; 984 | background: 0px 0px; 985 | font-family: inherit; 986 | font-size: inherit; 987 | margin: 0px; 988 | white-space: pre; 989 | word-wrap: normal; 990 | color: inherit; 991 | z-index: 2; 992 | position: relative; 993 | overflow: visible; 994 | } 995 | 996 | .CodeMirror-wrap pre { 997 | word-wrap: break-word; 998 | white-space: pre-wrap; 999 | word-break: normal; 1000 | } 1001 | 1002 | .CodeMirror-code pre { 1003 | border-right: 30px solid transparent; 1004 | width: fit-content; 1005 | } 1006 | 1007 | .CodeMirror-wrap .CodeMirror-code pre { 1008 | border-right: none; 1009 | width: auto; 1010 | } 1011 | 1012 | .CodeMirror-linebackground { 1013 | position: absolute; 1014 | left: 0px; 1015 | right: 0px; 1016 | top: 0px; 1017 | bottom: 0px; 1018 | z-index: 0; 1019 | } 1020 | 1021 | .CodeMirror-linewidget { 1022 | position: relative; 1023 | z-index: 2; 1024 | overflow: auto; 1025 | } 1026 | 1027 | .CodeMirror-wrap .CodeMirror-scroll { 1028 | overflow-x: hidden; 1029 | } 1030 | 1031 | .CodeMirror-measure { 1032 | position: absolute; 1033 | width: 100%; 1034 | height: 0px; 1035 | overflow: hidden; 1036 | visibility: hidden; 1037 | } 1038 | 1039 | .CodeMirror-measure pre { 1040 | position: static; 1041 | } 1042 | 1043 | .CodeMirror div.CodeMirror-cursor { 1044 | position: absolute; 1045 | border-right: none; 1046 | width: 0px; 1047 | visibility: hidden; 1048 | } 1049 | 1050 | .CodeMirror-focused div.CodeMirror-cursor { 1051 | visibility: inherit; 1052 | } 1053 | 1054 | .CodeMirror-selected { 1055 | background: rgb(217, 217, 217); 1056 | } 1057 | 1058 | .CodeMirror-focused .CodeMirror-selected { 1059 | background: rgb(215, 212, 240); 1060 | } 1061 | 1062 | .cm-searching { 1063 | background: rgba(255, 255, 0, 0.4); 1064 | } 1065 | 1066 | @media print { 1067 | .CodeMirror div.CodeMirror-cursor { 1068 | visibility: hidden; 1069 | } 1070 | } 1071 | 1072 | .CodeMirror-lint-markers { 1073 | width: 16px; 1074 | } 1075 | 1076 | .CodeMirror-lint-tooltip { 1077 | background-color: infobackground; 1078 | border: 1px solid rgb(0, 0, 0); 1079 | border-radius: 4px; 1080 | color: infotext; 1081 | font-family: var(--monospace); 1082 | overflow: hidden; 1083 | padding: 2px 5px; 1084 | position: fixed; 1085 | white-space: pre-wrap; 1086 | z-index: 10000; 1087 | max-width: 600px; 1088 | opacity: 0; 1089 | transition: opacity 0.4s; 1090 | font-size: 0.8em; 1091 | } 1092 | 1093 | .CodeMirror-lint-mark-error, 1094 | .CodeMirror-lint-mark-warning { 1095 | background-position: left bottom; 1096 | background-repeat: repeat-x; 1097 | } 1098 | 1099 | .CodeMirror-lint-mark-error { 1100 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg=="); 1101 | } 1102 | 1103 | .CodeMirror-lint-marker-error, 1104 | .CodeMirror-lint-marker-warning { 1105 | background-position: center center; 1106 | background-repeat: no-repeat; 1107 | cursor: pointer; 1108 | display: inline-block; 1109 | height: 16px; 1110 | width: 16px; 1111 | vertical-align: middle; 1112 | position: relative; 1113 | } 1114 | 1115 | .CodeMirror-lint-message-error, 1116 | .CodeMirror-lint-message-warning { 1117 | padding-left: 18px; 1118 | background-position: left top; 1119 | background-repeat: no-repeat; 1120 | } 1121 | 1122 | .CodeMirror-lint-marker-error, 1123 | .CodeMirror-lint-message-error { 1124 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII="); 1125 | } 1126 | 1127 | .CodeMirror-lint-marker-warning, 1128 | .CodeMirror-lint-message-warning { 1129 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII="); 1130 | } 1131 | 1132 | .CodeMirror-lint-marker-multiple { 1133 | background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC"); 1134 | background-repeat: no-repeat; 1135 | background-position: right bottom; 1136 | width: 100%; 1137 | height: 100%; 1138 | } 1139 | 1140 | 1141 | :root { 1142 | --side-bar-bg-color: white; 1143 | --window-border: none; 1144 | --search-select-bg-color: #575c61; 1145 | --active-file-bg-color: #f1f4f5; 1146 | --item-hover-bg-color: #f1f4f5; 1147 | --item-hover-text-color: black; 1148 | --control-text-color: #555; 1149 | } 1150 | 1151 | html { 1152 | font-size: 12pt; 1153 | } 1154 | 1155 | @font-face { 1156 | font-family: STIX2Text; 1157 | font-style: normal; 1158 | font-weight: normal; 1159 | src: local("STIX2Text Regular"), url("./academic/STIX2Text-Regular.woff") format("woff"), url("ttps://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/fonts/HTML-CSS/TeX/woff/MathJax_Main-Regular.woff") format("woff"); 1160 | } 1161 | 1162 | @font-face { 1163 | font-family: STIX2Text; 1164 | font-style: italic; 1165 | font-weight: normal; 1166 | src: local("STIX2Text Italic"), url("./academic/STIX2Text-Italic.woff") format("woff"), url("ttps://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/fonts/HTML-CSS/TeX/woff/MathJax_Main-Italic.woff") format("woff"); 1167 | } 1168 | 1169 | @font-face { 1170 | font-family: STIX2Text; 1171 | font-style: normal; 1172 | font-weight: bold; 1173 | src: local("STIX2Text Bold"), url("./academic/STIX2Text-Bold.woff") format("woff"), url("ttps://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/fonts/HTML-CSS/TeX/woff/MathJax_Main-Bold.woff") format("woff"); 1174 | } 1175 | 1176 | @font-face { 1177 | font-family: STIX2Text; 1178 | font-style: italic; 1179 | font-weight: bold; 1180 | src: local("STIX2Text Bold Italic"), url("./academic/STIX2Text-BoldItalic.woff") format("woff"), url("ttps://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.2/fonts/HTML-CSS/TeX/woff/MathJax_Main-BoldItalic.woff") format("woff"); 1181 | } 1182 | 1183 | @font-face { 1184 | font-family: STIX2Math; 1185 | font-style: italic; 1186 | font-weight: bold; 1187 | src: local("STIX2Math"), url("./academic/STIX2Math.woff") format("woff"); 1188 | } 1189 | 1190 | @font-face { 1191 | font-family: "Latin Modern Mono Light"; 1192 | src: url("./academic/lmmonolt10-oblique-webfont.woff") format("woff"); 1193 | font-weight: normal; 1194 | font-style: italic; 1195 | } 1196 | 1197 | @font-face { 1198 | font-family: "Latin Modern Mono Light"; 1199 | src: url("./academic/lmmonolt10-regular-webfont.woff") format("woff"); 1200 | font-weight: normal; 1201 | font-style: normal; 1202 | } 1203 | 1204 | @font-face { 1205 | font-family: "Latin Modern Mono Light"; 1206 | src: url("./academic/lmmonolt10-boldoblique-webfont.woff") format("woff"); 1207 | font-weight: bold; 1208 | font-style: italic; 1209 | } 1210 | 1211 | @font-face { 1212 | font-family: "Latin Modern Mono Light"; 1213 | src: url("./academic/lmmonolt10-bold-webfont.woff") format("woff"); 1214 | font-weight: bold; 1215 | font-style: normal; 1216 | } 1217 | 1218 | #write { 1219 | font-family: STIX2Text, "Times New Roman", serif; 1220 | line-height: 1.5em; 1221 | padding: 5% 10% 10%; 1222 | } 1223 | 1224 | .file-list-item-summary { 1225 | height: 36px; 1226 | } 1227 | 1228 | .file-list-item { 1229 | padding-bottom: 18px; 1230 | padding-top: 18px !important; 1231 | } 1232 | 1233 | #sidebar-loading-template.file-list-item { 1234 | padding-top: 0px !important; 1235 | } 1236 | 1237 | a, 1238 | a:visited { 1239 | color: rgb(170, 0, 0); 1240 | } 1241 | 1242 | h1, 1243 | h2, 1244 | h3, 1245 | h4, 1246 | h5, 1247 | h6 { 1248 | font-family: inherit; 1249 | line-height: 1.5em; 1250 | margin-bottom: 1em; 1251 | margin-top: 1em; 1252 | } 1253 | 1254 | h1 { 1255 | font-size: 2.4em; 1256 | } 1257 | 1258 | #write h1 { 1259 | text-align: center; 1260 | } 1261 | 1262 | h2, 1263 | .cm-s-typora-default pre.cm-header1:not(.cm-atom) :not(.cm-overlay) { 1264 | font-size: 1.8em; 1265 | } 1266 | 1267 | h3, 1268 | .cm-s-typora-default pre.cm-header2:not(.cm-atom) :not(.cm-overlay) { 1269 | font-size: 1.4em; 1270 | } 1271 | 1272 | h4, 1273 | .cm-s-typora-default pre.cm-header3:not(.cm-atom) :not(.cm-overlay) { 1274 | font-size: 1.2em; 1275 | } 1276 | 1277 | h5, 1278 | .cm-s-typora-default pre.cm-header4:not(.cm-atom) :not(.cm-overlay) { 1279 | font-size: 1.1em; 1280 | } 1281 | 1282 | h6 { 1283 | font-size: 1em; 1284 | } 1285 | 1286 | p { 1287 | margin-top: 1em; 1288 | margin-bottom: 1em; 1289 | text-align: justify; 1290 | } 1291 | 1292 | pre, 1293 | code { 1294 | font-family: "Latin Modern Mono Light", "Latin Modern Mono", monospace !important; 1295 | } 1296 | 1297 | .footnotes { 1298 | display: list-item; 1299 | margin-left: 1em; 1300 | } 1301 | 1302 | .md-fences { 1303 | border: 1px solid; 1304 | } 1305 | 1306 | .md-fences.md-fences-with-lineno { 1307 | border: none; 1308 | } 1309 | 1310 | .CodeMirror-linenumber { 1311 | color: rgb(51, 51, 51); 1312 | } 1313 | 1314 | .in-text-selection, 1315 | ::selection, 1316 | .CodeMirror-selected { 1317 | background: var(--search-select-bg-color); 1318 | text-shadow: none; 1319 | color: var(--search-select-text-color) !important; 1320 | } 1321 | 1322 | a.md-toc-inner { 1323 | color: var(--text-color); 1324 | } 1325 | 1326 | .cm-s-typora-default .cm-link { 1327 | color: rgb(170, 0, 0); 1328 | text-decoration: underline; 1329 | } 1330 | 1331 | .cm-s-typora-default .cm-header, 1332 | .cm-s-typora-default .cm-property { 1333 | color: black; 1334 | } 1335 | 1336 | #typora-source .CodeMirror-lines { 1337 | -webkit-font-smoothing: auto; 1338 | max-width: 1000px; 1339 | } 1340 | 1341 | .md-def-name::before, 1342 | .md-def-name::after { 1343 | color: rgb(45, 45, 45); 1344 | } 1345 | 1346 | sup.md-footnote { 1347 | background-color: initial; 1348 | color: inherit; 1349 | } 1350 | 1351 | mark { 1352 | background: rgb(255, 243, 135); 1353 | } 1354 | 1355 | [cid]>td, 1356 | [cid]>th { 1357 | border: 1px solid; 1358 | padding-left: 1ch; 1359 | padding-right: 1ch; 1360 | } 1361 | 1362 | pre.md-meta-block { 1363 | border: 1px solid rgb(162, 169, 177); 1364 | background-color: rgb(248, 249, 250); 1365 | padding: 5px; 1366 | margin-bottom: 1em; 1367 | } 1368 | 1369 | .task-list-item input::before { 1370 | content: "√"; 1371 | display: inline-block; 1372 | width: 1.25rem; 1373 | height: 1.6rem; 1374 | vertical-align: middle; 1375 | text-align: center; 1376 | color: rgb(187, 187, 187); 1377 | background-color: inherit; 1378 | } 1379 | 1380 | .task-list-item input:checked::before, 1381 | .task-list-item input[checked]::before { 1382 | color: inherit; 1383 | } 1384 | 1385 | .task-list-item { 1386 | padding-left: 1.5em; 1387 | } 1388 | 1389 | blockquote { 1390 | font-style: italic; 1391 | padding: 0.25em 24px; 1392 | position: relative; 1393 | color: rgb(56, 56, 56); 1394 | border-left: 2px solid; 1395 | } 1396 | 1397 | #write>blockquote { 1398 | padding: 0.25em 30px; 1399 | margin-left: -32px; 1400 | width: calc(100% + 32px); 1401 | } 1402 | 1403 | #write>.md-fences-with-lineno { 1404 | margin-left: -33px; 1405 | color: black; 1406 | } 1407 | 1408 | .CodeMirror-linenumber { 1409 | min-width: 25px; 1410 | } 1411 | 1412 | .typora-export p { 1413 | white-space: normal; 1414 | } 1415 | --------------------------------------------------------------------------------