@font-face { font-family: teranoptia; src: url("/fonts/teranoptia/fonts/Teranoptia-Furiae.ttf"); } /* CSS Variables - Light theme by default */ :root { --text: #212121; --muted-text: #777777; --bg: #fff; --highlight: #ddd; --code: #212121; --code-bg: #f5f5f5; --link: #1565c0; --border: #b2b2b2; } /* Dark theme when toggle is checked */ body:has(#theme-toggle:checked) { --text: #dadada; --muted-text: #777777; --bg: #1a1a1a; --highlight: #444; --code: #dadada; --code-bg: #333; --link: #42a5f5; --border: #424242; } /* Invert images with invertible class in dark mode */ body:has(#theme-toggle:checked) img.invertible { filter: brightness(90%) invert(1); } /* Prevent flash of unstyled content */ .preload-transitions * { transition: none !important; } /* Reset */ * { box-sizing: border-box; margin: 0; padding: 0; } body { color: var(--text); background: var(--bg); font-family: "Noto Serif", serif; font-size: 18px; line-height: 1.7; } a { color: var(--link); text-decoration: none; } a:hover { text-decoration: underline; } img { max-width: 100%; } hr { margin: 20px; } ul, ol { margin: 0 40px; } li { padding: 5px 0; } main { max-width: 850px; padding: 0 25px; margin: auto; display: flex; flex-direction: column; min-height: 100vh; width: 100%; } h1 { font-size: 42px; line-height: 46px; margin: 40px 0 25px; text-align: center; } h2 { font-size: 28px; margin: 40px 0 25px; } h3 { font-size: 25px; margin: 40px 0 25px; } h4 { font-size: 22px; margin: 40px 0 25px; } h5 { font-size: 20px; margin: 40px 0 25px; } p { margin: 15px 0; text-align: justify; text-justify: auto; hyphens: auto; } input, textarea { background-color: var(--bg); color: var(--text); padding: 5px; line-height: 1.8; border: 1px solid var(--muted-text); border-radius: 5px; } button { background-color: var(--bg); color: var(--text); padding: 5px 10px; line-height: 1.8; border: 1px solid var(--muted-text); border-radius: 5px; } blockquote { margin-left: 20px; padding-left: 20px; border-left: 3px solid var(--border); font-style: italic; line-height: 1.5; } code { padding: 3px 6px; border-radius: 5px; font-family: monospace; background-color: var(--highlight); } pre code { width: 100%; overflow-x: scroll; display: inline-block; background-color: var(--code-bg); color: var(--code); padding: 20px; border-radius: 3px; font-family: monospace; font-size: 16px; } table { width: 100%; margin: 20px 0; border-collapse: collapse; } th, td { padding: 10px; border: 1px solid var(--border); text-align: left; } .notice { font-style: italic; background-color: #42a5f51a; border-radius: 5px; position: relative; margin: 40px 0; padding: 20px; overflow: auto; } .info { background-color: #42a5f51a; } .warning { background-color: #ffca281a; } .fleuron { text-align: center !important; width: 100%; font-size: 30px; font-family: teranoptia; line-height: 70px; margin: 80px 0; } .fleuron a { color: var(--muted-text) } .fleuron a:hover { text-decoration: none; } .home-card { display: flex; justify-content: center; border-bottom: 1px solid var(--border); } .home-card img { max-width: 150px; margin: 50px; } .home-card h2 { text-align: left; margin-bottom: 0; line-height: 150%; } .home-card p { font-size: medium; line-height: 150%; text-align: justify; margin: 10px 0; } @media (max-width: 600px) { .home-card { display: flex; flex-direction: column; align-items: center; border-bottom: 1px solid var(--border); } .home-card img { margin-bottom: 0; } .home-card h2 { margin-top: 20px; text-align: center; } .social-links { justify-content: center; margin-bottom: 30px; } } .social-links { display: flex; flex-wrap: wrap; gap: 15px; margin-top: 20px; } .social-links a { color: var(--muted-text); text-transform: uppercase; font-size: 1.6rem; } .social-links a svg { width: 30px; height: 30px; } .list-entry { text-align: left; padding: 20px; text-decoration: none; border: 1px solid var(--bg); } .list-entry:hover { text-decoration: none; transition: border-color ease-in 0.1s; border: 1px solid var(--muted-text); border-radius: 5px; } .list-entry * { margin: 0; margin-top: 10px; line-height: 130%; text-decoration: none; text-align: left; } .list-entry img { width: 100%; } .list-entry .title { color: var(--text); font-weight: bold; text-decoration: none; } .list-entry .desc { font-size: small; color: var(--muted-text); text-decoration: none; } .list-entry .date { font-style: italic; line-height: 0.8; font-size: small; color: var(--muted-text); text-decoration: none; } footer { padding: 40px 0; border-top: 1px solid var(--border); margin-top: 60px; text-align: center; } /* Theme toggle */ label[for="theme-toggle"] { position: fixed; top: 20px; right: 20px; cursor: pointer; padding: 8px; border-radius: 50%; background: var(--bg); /* border: 1px solid var(--border); */ display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; z-index: 1000; } label[for="theme-toggle"]:hover { background: var(--border); } label[for="theme-toggle"] svg { display: block; color: var(--text); } /* Syntax highlighting - Light theme (Pygments default) */ .codehilite { background: var(--code-bg); padding: 20px; border-radius: 5px; overflow-x: auto; margin: 20px 0; } .codehilite pre { margin: 0; line-height: 125%; } .codehilite code { padding: 0; background: transparent; } .codehilite .hll { background-color: #ffffcc } .codehilite .c { color: #3D7B7B; font-style: italic } /* Comment */ .codehilite .err { border: 1px solid #FF0000 } /* Error */ .codehilite .k { color: #008000; font-weight: bold } /* Keyword */ .codehilite .o { color: #666666 } /* Operator */ .codehilite .ch { color: #3D7B7B; font-style: italic } /* Comment.Hashbang */ .codehilite .cm { color: #3D7B7B; font-style: italic } /* Comment.Multiline */ .codehilite .cp { color: #9C6500 } /* Comment.Preproc */ .codehilite .cpf { color: #3D7B7B; font-style: italic } /* Comment.PreprocFile */ .codehilite .c1 { color: #3D7B7B; font-style: italic } /* Comment.Single */ .codehilite .cs { color: #3D7B7B; font-style: italic } /* Comment.Special */ .codehilite .gd { color: #A00000 } /* Generic.Deleted */ .codehilite .ge { font-style: italic } /* Generic.Emph */ .codehilite .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ .codehilite .gr { color: #E40000 } /* Generic.Error */ .codehilite .gh { color: #000080; font-weight: bold } /* Generic.Heading */ .codehilite .gi { color: #008400 } /* Generic.Inserted */ .codehilite .go { color: #717171 } /* Generic.Output */ .codehilite .gp { color: #000080; font-weight: bold } /* Generic.Prompt */ .codehilite .gs { font-weight: bold } /* Generic.Strong */ .codehilite .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ .codehilite .gt { color: #0044DD } /* Generic.Traceback */ .codehilite .kc { color: #008000; font-weight: bold } /* Keyword.Constant */ .codehilite .kd { color: #008000; font-weight: bold } /* Keyword.Declaration */ .codehilite .kn { color: #008000; font-weight: bold } /* Keyword.Namespace */ .codehilite .kp { color: #008000 } /* Keyword.Pseudo */ .codehilite .kr { color: #008000; font-weight: bold } /* Keyword.Reserved */ .codehilite .kt { color: #B00040 } /* Keyword.Type */ .codehilite .m { color: #666666 } /* Literal.Number */ .codehilite .s { color: #BA2121 } /* Literal.String */ .codehilite .na { color: #687822 } /* Name.Attribute */ .codehilite .nb { color: #008000 } /* Name.Builtin */ .codehilite .nc { color: #0000FF; font-weight: bold } /* Name.Class */ .codehilite .no { color: #880000 } /* Name.Constant */ .codehilite .nd { color: #AA22FF } /* Name.Decorator */ .codehilite .ni { color: #717171; font-weight: bold } /* Name.Entity */ .codehilite .ne { color: #CB3F38; font-weight: bold } /* Name.Exception */ .codehilite .nf { color: #0000FF } /* Name.Function */ .codehilite .nl { color: #767600 } /* Name.Label */ .codehilite .nn { color: #0000FF; font-weight: bold } /* Name.Namespace */ .codehilite .nt { color: #008000; font-weight: bold } /* Name.Tag */ .codehilite .nv { color: #19177C } /* Name.Variable */ .codehilite .ow { color: #AA22FF; font-weight: bold } /* Operator.Word */ .codehilite .w { color: #bbbbbb } /* Text.Whitespace */ .codehilite .mb { color: #666666 } /* Literal.Number.Bin */ .codehilite .mf { color: #666666 } /* Literal.Number.Float */ .codehilite .mh { color: #666666 } /* Literal.Number.Hex */ .codehilite .mi { color: #666666 } /* Literal.Number.Integer */ .codehilite .mo { color: #666666 } /* Literal.Number.Oct */ .codehilite .sa { color: #BA2121 } /* Literal.String.Affix */ .codehilite .sb { color: #BA2121 } /* Literal.String.Backtick */ .codehilite .sc { color: #BA2121 } /* Literal.String.Char */ .codehilite .dl { color: #BA2121 } /* Literal.String.Delimiter */ .codehilite .sd { color: #BA2121; font-style: italic } /* Literal.String.Doc */ .codehilite .s2 { color: #BA2121 } /* Literal.String.Double */ .codehilite .se { color: #AA5D1F; font-weight: bold } /* Literal.String.Escape */ .codehilite .sh { color: #BA2121 } /* Literal.String.Heredoc */ .codehilite .si { color: #A45A77; font-weight: bold } /* Literal.String.Interpol */ .codehilite .sx { color: #008000 } /* Literal.String.Other */ .codehilite .sr { color: #A45A77 } /* Literal.String.Regex */ .codehilite .s1 { color: #BA2121 } /* Literal.String.Single */ .codehilite .ss { color: #19177C } /* Literal.String.Symbol */ .codehilite .bp { color: #008000 } /* Name.Builtin.Pseudo */ .codehilite .fm { color: #0000FF } /* Name.Function.Magic */ .codehilite .vc { color: #19177C } /* Name.Variable.Class */ .codehilite .vg { color: #19177C } /* Name.Variable.Global */ .codehilite .vi { color: #19177C } /* Name.Variable.Instance */ .codehilite .vm { color: #19177C } /* Name.Variable.Magic */ .codehilite .il { color: #666666 } /* Literal.Number.Integer.Long */ /* Syntax highlighting - Dark theme (Monokai) */ body:has(#theme-toggle:checked) .codehilite .hll { background-color: #49483e } body:has(#theme-toggle:checked) .codehilite .c { color: #959077 } /* Comment */ body:has(#theme-toggle:checked) .codehilite .err { color: #ed007e; background-color: #1e0010 } /* Error */ body:has(#theme-toggle:checked) .codehilite .esc { color: #f8f8f2 } /* Escape */ body:has(#theme-toggle:checked) .codehilite .g { color: #f8f8f2 } /* Generic */ body:has(#theme-toggle:checked) .codehilite .k { color: #66d9ef } /* Keyword */ body:has(#theme-toggle:checked) .codehilite .l { color: #ae81ff } /* Literal */ body:has(#theme-toggle:checked) .codehilite .n { color: #f8f8f2 } /* Name */ body:has(#theme-toggle:checked) .codehilite .o { color: #ff4689 } /* Operator */ body:has(#theme-toggle:checked) .codehilite .x { color: #f8f8f2 } /* Other */ body:has(#theme-toggle:checked) .codehilite .p { color: #f8f8f2 } /* Punctuation */ body:has(#theme-toggle:checked) .codehilite .ch { color: #959077 } /* Comment.Hashbang */ body:has(#theme-toggle:checked) .codehilite .cm { color: #959077 } /* Comment.Multiline */ body:has(#theme-toggle:checked) .codehilite .cp { color: #959077 } /* Comment.Preproc */ body:has(#theme-toggle:checked) .codehilite .cpf { color: #959077 } /* Comment.PreprocFile */ body:has(#theme-toggle:checked) .codehilite .c1 { color: #959077 } /* Comment.Single */ body:has(#theme-toggle:checked) .codehilite .cs { color: #959077 } /* Comment.Special */ body:has(#theme-toggle:checked) .codehilite .gd { color: #ff4689 } /* Generic.Deleted */ body:has(#theme-toggle:checked) .codehilite .ge { color: #f8f8f2; font-style: italic } /* Generic.Emph */ body:has(#theme-toggle:checked) .codehilite .ges { color: #f8f8f2; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ body:has(#theme-toggle:checked) .codehilite .gr { color: #f8f8f2 } /* Generic.Error */ body:has(#theme-toggle:checked) .codehilite .gh { color: #f8f8f2 } /* Generic.Heading */ body:has(#theme-toggle:checked) .codehilite .gi { color: #a6e22e } /* Generic.Inserted */ body:has(#theme-toggle:checked) .codehilite .go { color: #66d9ef } /* Generic.Output */ body:has(#theme-toggle:checked) .codehilite .gp { color: #ff4689; font-weight: bold } /* Generic.Prompt */ body:has(#theme-toggle:checked) .codehilite .gs { color: #f8f8f2; font-weight: bold } /* Generic.Strong */ body:has(#theme-toggle:checked) .codehilite .gu { color: #959077 } /* Generic.Subheading */ body:has(#theme-toggle:checked) .codehilite .gt { color: #f8f8f2 } /* Generic.Traceback */ body:has(#theme-toggle:checked) .codehilite .kc { color: #66d9ef } /* Keyword.Constant */ body:has(#theme-toggle:checked) .codehilite .kd { color: #66d9ef } /* Keyword.Declaration */ body:has(#theme-toggle:checked) .codehilite .kn { color: #ff4689 } /* Keyword.Namespace */ body:has(#theme-toggle:checked) .codehilite .kp { color: #66d9ef } /* Keyword.Pseudo */ body:has(#theme-toggle:checked) .codehilite .kr { color: #66d9ef } /* Keyword.Reserved */ body:has(#theme-toggle:checked) .codehilite .kt { color: #66d9ef } /* Keyword.Type */ body:has(#theme-toggle:checked) .codehilite .ld { color: #e6db74 } /* Literal.Date */ body:has(#theme-toggle:checked) .codehilite .m { color: #ae81ff } /* Literal.Number */ body:has(#theme-toggle:checked) .codehilite .s { color: #e6db74 } /* Literal.String */ body:has(#theme-toggle:checked) .codehilite .na { color: #a6e22e } /* Name.Attribute */ body:has(#theme-toggle:checked) .codehilite .nb { color: #f8f8f2 } /* Name.Builtin */ body:has(#theme-toggle:checked) .codehilite .nc { color: #a6e22e } /* Name.Class */ body:has(#theme-toggle:checked) .codehilite .no { color: #66d9ef } /* Name.Constant */ body:has(#theme-toggle:checked) .codehilite .nd { color: #a6e22e } /* Name.Decorator */ body:has(#theme-toggle:checked) .codehilite .ni { color: #f8f8f2 } /* Name.Entity */ body:has(#theme-toggle:checked) .codehilite .ne { color: #a6e22e } /* Name.Exception */ body:has(#theme-toggle:checked) .codehilite .nf { color: #a6e22e } /* Name.Function */ body:has(#theme-toggle:checked) .codehilite .nl { color: #f8f8f2 } /* Name.Label */ body:has(#theme-toggle:checked) .codehilite .nn { color: #f8f8f2 } /* Name.Namespace */ body:has(#theme-toggle:checked) .codehilite .nx { color: #a6e22e } /* Name.Other */ body:has(#theme-toggle:checked) .codehilite .py { color: #f8f8f2 } /* Name.Property */ body:has(#theme-toggle:checked) .codehilite .nt { color: #ff4689 } /* Name.Tag */ body:has(#theme-toggle:checked) .codehilite .nv { color: #f8f8f2 } /* Name.Variable */ body:has(#theme-toggle:checked) .codehilite .ow { color: #ff4689 } /* Operator.Word */ body:has(#theme-toggle:checked) .codehilite .pm { color: #f8f8f2 } /* Punctuation.Marker */ body:has(#theme-toggle:checked) .codehilite .w { color: #f8f8f2 } /* Text.Whitespace */ body:has(#theme-toggle:checked) .codehilite .mb { color: #ae81ff } /* Literal.Number.Bin */ body:has(#theme-toggle:checked) .codehilite .mf { color: #ae81ff } /* Literal.Number.Float */ body:has(#theme-toggle:checked) .codehilite .mh { color: #ae81ff } /* Literal.Number.Hex */ body:has(#theme-toggle:checked) .codehilite .mi { color: #ae81ff } /* Literal.Number.Integer */ body:has(#theme-toggle:checked) .codehilite .mo { color: #ae81ff } /* Literal.Number.Oct */ body:has(#theme-toggle:checked) .codehilite .sa { color: #e6db74 } /* Literal.String.Affix */ body:has(#theme-toggle:checked) .codehilite .sb { color: #e6db74 } /* Literal.String.Backtick */ body:has(#theme-toggle:checked) .codehilite .sc { color: #e6db74 } /* Literal.String.Char */ body:has(#theme-toggle:checked) .codehilite .dl { color: #e6db74 } /* Literal.String.Delimiter */ body:has(#theme-toggle:checked) .codehilite .sd { color: #e6db74 } /* Literal.String.Doc */ body:has(#theme-toggle:checked) .codehilite .s2 { color: #e6db74 } /* Literal.String.Double */ body:has(#theme-toggle:checked) .codehilite .se { color: #ae81ff } /* Literal.String.Escape */ body:has(#theme-toggle:checked) .codehilite .sh { color: #e6db74 } /* Literal.String.Heredoc */ body:has(#theme-toggle:checked) .codehilite .si { color: #e6db74 } /* Literal.String.Interpol */ body:has(#theme-toggle:checked) .codehilite .sx { color: #e6db74 } /* Literal.String.Other */ body:has(#theme-toggle:checked) .codehilite .sr { color: #e6db74 } /* Literal.String.Regex */ body:has(#theme-toggle:checked) .codehilite .s1 { color: #e6db74 } /* Literal.String.Single */ body:has(#theme-toggle:checked) .codehilite .ss { color: #e6db74 } /* Literal.String.Symbol */ body:has(#theme-toggle:checked) .codehilite .bp { color: #f8f8f2 } /* Name.Builtin.Pseudo */ body:has(#theme-toggle:checked) .codehilite .fm { color: #a6e22e } /* Name.Function.Magic */ body:has(#theme-toggle:checked) .codehilite .vc { color: #f8f8f2 } /* Name.Variable.Class */ body:has(#theme-toggle:checked) .codehilite .vg { color: #f8f8f2 } /* Name.Variable.Global */ body:has(#theme-toggle:checked) .codehilite .vi { color: #f8f8f2 } /* Name.Variable.Instance */ body:has(#theme-toggle:checked) .codehilite .vm { color: #f8f8f2 } /* Name.Variable.Magic */ body:has(#theme-toggle:checked) .codehilite .il { color: #ae81ff } /* Literal.Number.Integer.Long */