/*
 * custom.css - Copyright (c) 2001-2026 - Olivier Poncet
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation, either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */

/*
 * ---------------------------------------------------------------------------
 * colors
 * ---------------------------------------------------------------------------
 */

.reveal .color-website {
    color: #88aaff;
}

.reveal .color-twitter {
    color: #1d9bf0;
}

.reveal .color-bluesky {
    color: #0085ff;
}

.reveal .color-twitch {
    color: #a970ff;
}

.reveal .color-youtube {
    color: #ff0000;
}

.reveal .color-github {
    color: #f8f8f8;
}

.reveal .color-gitlab {
    color: #fc6d26;
}

.reveal .color-bitbucket {
    color: #2684ff;
}

.reveal .color-red {
    color: #ff2c2d;
}

.reveal .color-green {
    color: #17ff2e;
}

.reveal .color-blue {
    color: #1b91ff;
}

.reveal .color-cyan {
    color: #00ecff;
}

.reveal .color-magenta {
    color: #ec00ff;
}

.reveal .color-yellow {
    color: #ffec00;
}

.reveal .color-black {
    color: #000000;
}

.reveal .color-white {
    color: #ffffff;
}

/*
 * ---------------------------------------------------------------------------
 * titles and text
 * ---------------------------------------------------------------------------
 */

.reveal h1 {
    color: #ffffff;
    text-shadow: 3px 3px rgba(0, 0, 0, 0.7);
}

.reveal h2 {
    color: #ffec00;
    text-shadow: 3px 3px rgba(0, 0, 0, 0.7);
    text-transform: initial;
}

.reveal h3 {
    color: #ffec00;
    text-shadow: 3px 3px rgba(0, 0, 0, 0.7);
    text-transform: initial;
}

.reveal h1 + p.tagline {
    text-shadow: 2px 2px rgba(0, 0, 0, 0.7);
    font-size: larger;
    font-weight: bold;
}

.reveal h2 + p.tagline {
    text-shadow: 2px 2px rgba(0, 0, 0, 0.7);
    font-size: inherit;
    font-weight: bold;
}

.reveal h3 + p.tagline {
    text-shadow: 2px 2px rgba(0, 0, 0, 0.7);
    font-size: smaller;
    font-weight: bold;
}

.reveal .text-align-left {
    text-align: left;
}

.reveal .text-align-center {
    text-align: center;
}

.reveal .text-align-right {
    text-align: right;
}

.reveal .text-align-justify {
    text-align: justify;
}

.reveal .text-lowercase {
    text-transform: lowercase;
}

.reveal .text-uppercase {
    text-transform: uppercase;
}

.reveal .text-capitalize {
    text-transform: capitalize;
}

.reveal .text-nowrap {
    white-space: nowrap;
}

.reveal .text-shadow {
    text-shadow: 1px 1px rgba(0, 0, 0, 0.7);
}

.reveal .font-monospace {
    font-family: monospace;
}

.reveal .font-larger {
    font-size: larger;
}

.reveal .font-smaller {
    font-size: smaller;
}

.reveal .font-bold {
    font-weight: bold;
}

/*
 * ---------------------------------------------------------------------------
 * blockquotes
 * ---------------------------------------------------------------------------
 */

.reveal blockquote {
    border-radius: 16px;
    border-left: 3px solid rgba(255, 255, 255, 0.5);
    border-right: 3px solid rgba(255, 255, 255, 0.5);
    padding: 32px;
}

/*
 * ---------------------------------------------------------------------------
 * images
 * ---------------------------------------------------------------------------
 */

.reveal img.h64 {
    height: 64px;
}

.reveal img.h128 {
    height: 128px;
}

.reveal img.h192 {
    height: 192px;
}

.reveal img.h256 {
    height: 256px;
}

.reveal img.h320 {
    height: 320px;
}

.reveal img.h384 {
    height: 384px;
}

.reveal img.h448 {
    height: 448px;
}

.reveal img.h512 {
    height: 512px;
}

.reveal img.rounded-0 {
    border-radius: 0.1em;
    border: 2px solid #d3d3d3;
}

.reveal img.rounded-1 {
    border-radius: 0.2em;
    border: 2px solid #d3d3d3;
}

.reveal img.rounded-2 {
    border-radius: 0.3em;
    border: 2px solid #d3d3d3;
}

.reveal img.rounded-3 {
    border-radius: 0.4em;
    border: 2px solid #d3d3d3;
}

.reveal img.rounded-4 {
    border-radius: 0.5em;
    border: 2px solid #d3d3d3;
}

.reveal img.circle {
    border-radius: 50%;
}

.reveal img.portrait {
    border-radius: 50%;
    border: 1px solid rgba(0, 0, 0, 0.5);
    background: rgba(0, 0, 0, 0.5);
}

/*
 * ---------------------------------------------------------------------------
 * miscellaneous
 * ---------------------------------------------------------------------------
 */

.reveal .align-items-start {
    align-items: flex-start;
}

.reveal .r-hstack {
    gap: 1em;
}

.reveal div.block {
    background: rgba(255, 255, 255, 0.05);
    border: 1px solid rgba(0, 0, 0, 0.5);
    border-radius: 1em;
    font-size: 24px;
    margin-left: auto;
    margin-right: auto;
    max-width: 80%;
    padding: 0.5em;
}

.reveal ul.block {
    background: rgba(8, 8, 8, 0.9);
    border: 1px dashed #808080;
    border-radius: 1em;
    list-style: none;
    margin-left: auto;
    margin-right: auto;
    max-width: 80%;
    padding: 0.5em;
}

.reveal table.bit-operators {
    font-family: monospace;
    font-size: smaller;
    white-space: nowrap;
}

.reveal table.bit-operators th {
    text-align: center;
}

.reveal table.bit-operators td {
    text-align: center;
}

.reveal table.contact {
    background: rgba(0, 64, 128, 0.25);
    border-radius: 0.5em;
    font-family: monospace;
    font-size: smaller;
}

.reveal table.contact tr {
    border: none;
}

.reveal table.contact td {
    border: none;
}

.reveal pre {
    font-size: 0.50em;
}

.reveal pre code {
    max-height: none;
}

.reveal .code-wrapper code {
    border-radius: 0.5em;
}

/*
 * ---------------------------------------------------------------------------
 * lists and list items
 * ---------------------------------------------------------------------------
 */

.reveal ul.list-style-none {
    list-style: none;
    text-indent: 0.5em;
}

.reveal li.list-item-0 {
    list-style-type: '0️⃣ ';
}

.reveal li.list-item-1 {
    list-style-type: '1️⃣ ';
}

.reveal li.list-item-2 {
    list-style-type: '2️⃣ ';
}

.reveal li.list-item-3 {
    list-style-type: '3️⃣ ';
}

.reveal li.list-item-4 {
    list-style-type: '4️⃣ ';
}

.reveal li.list-item-5 {
    list-style-type: '5️⃣ ';
}

.reveal li.list-item-6 {
    list-style-type: '6️⃣ ';
}

.reveal li.list-item-7 {
    list-style-type: '7️⃣ ';
}

.reveal li.list-item-8 {
    list-style-type: '8️⃣ ';
}

.reveal li.list-item-9 {
    list-style-type: '9️⃣ ';
}

.reveal li.list-item-fearful {
    list-style-type: '😨';
}

.reveal li.list-item-fear {
    list-style-type: '😱';
}

/*
 * ---------------------------------------------------------------------------
 * fragment semi-fade-out
 * ---------------------------------------------------------------------------
 */

.reveal .fragment.semi-fade-out.visible {
    opacity: 0.25;
}

/*
 * ---------------------------------------------------------------------------
 * fragment highlight-xxx/highlight-current-xxx
 * ---------------------------------------------------------------------------
 */

.reveal .fragment.highlight-cyan,
.reveal .fragment.highlight-current-cyan,
.reveal .fragment.highlight-magenta,
.reveal .fragment.highlight-current-magenta,
.reveal .fragment.highlight-yellow,
.reveal .fragment.highlight-current-yellow {
    opacity: 1.0;
    visibility: inherit;
}

.reveal .fragment.highlight-cyan.visible {
    color: #00ecff;
}

.reveal .fragment.highlight-current-cyan.current-fragment {
    color: #00ecff;
}

.reveal .fragment.highlight-magenta.visible {
    color: #ec00ff;
}

.reveal .fragment.highlight-current-magenta.current-fragment {
    color: #ec00ff;
}

.reveal .fragment.highlight-yellow.visible {
    color: #ffec00;
}

.reveal .fragment.highlight-current-yellow.current-fragment {
    color: #ffec00;
}

/*
 * ---------------------------------------------------------------------------
 * fragment highlight-current-xxx-larger
 * ---------------------------------------------------------------------------
 */

.reveal .fragment.highlight-current-red-larger,
.reveal .fragment.highlight-current-green-larger,
.reveal .fragment.highlight-current-blue-larger,
.reveal .fragment.highlight-current-cyan-larger,
.reveal .fragment.highlight-current-magenta-larger,
.reveal .fragment.highlight-current-yellow-larger {
    opacity: 1.0;
    visibility: inherit;
}

.reveal .fragment.highlight-current-red-larger.current-fragment {
    color: #ff2c2d;
    font-size: larger;
}

.reveal .fragment.highlight-current-green-larger.current-fragment {
    color: #17ff2e;
    font-size: larger;
}

.reveal .fragment.highlight-current-blue-larger.current-fragment {
    color: #1b91ff;
    font-size: larger;
}

.reveal .fragment.highlight-current-cyan-larger.current-fragment {
    color: #00ecff;
    font-size: larger;
}

.reveal .fragment.highlight-current-magenta-larger.current-fragment {
    color: #ec00ff;
    font-size: larger;
}

.reveal .fragment.highlight-current-yellow-larger.current-fragment {
    color: #ffec00;
    font-size: larger;
}

/*
 * ---------------------------------------------------------------------------
 * fragment zoom-xxx
 * ---------------------------------------------------------------------------
 */

.reveal .fragment.zoom-red.current-fragment,
.reveal .fragment.zoom-green.current-fragment,
.reveal .fragment.zoom-blue.current-fragment,
.reveal .fragment.zoom-cyan.current-fragment,
.reveal .fragment.zoom-magenta.current-fragment,
.reveal .fragment.zoom-yellow.current-fragment {
    transform: scale(1.25);
}

.reveal .fragment.zoom-red.current-fragment {
    color: #ff2c2d;
}

.reveal .fragment.zoom-green.current-fragment {
    color: #17ff2e;
}

.reveal .fragment.zoom-blue.current-fragment {
    color: #1b91ff;
}

.reveal .fragment.zoom-cyan.current-fragment {
    color: #00ecff;
}

.reveal .fragment.zoom-magenta.current-fragment {
    color: #ec00ff;
}

.reveal .fragment.zoom-yellow.current-fragment {
    color: #ffec00;
}

/*
 * ---------------------------------------------------------------------------
 * fragment unblur
 * ---------------------------------------------------------------------------
 */

.reveal .fragment.unblur {
    visibility: inherit;
    opacity: 0.5;
    filter: blur(16px);
}

.reveal .fragment.unblur.visible {
    opacity: 1.0;
    filter: none;
}

.reveal .fragment.unblur.visible.current-fragment {
}

/*
 * ---------------------------------------------------------------------------
 * fragment grow-then-ungrow
 * ---------------------------------------------------------------------------
 */

.reveal .fragment.grow-then-ungrow {
    visibility: inherit;
    opacity: 1.0;
}

.reveal .fragment.grow-then-ungrow.visible {
    opacity: 1.0;
}

.reveal .fragment.grow-then-ungrow.visible.current-fragment {
    transform: translate(0, -10%) scale(1.5);
}

/*
 * ---------------------------------------------------------------------------
 * fragment appear
 * ---------------------------------------------------------------------------
 */

.reveal .fragment.appear {
    visibility: inherit;
    opacity: 0.3;
    filter: blur(8px);
}

.reveal .fragment.appear.visible {
    opacity: 1.0;
    filter: none;
}

.reveal .fragment.appear.visible.current-fragment {
    transform: scale(1.25);
    color: #ffec00;
}

/*
 * ---------------------------------------------------------------------------
 * wave
 * ---------------------------------------------------------------------------
 */

.wave span {
    display: inline-block;
    animation: grow 3s ease-in-out infinite;
    animation-delay: calc(var(--i) * 0.1s);
}

@keyframes grow {
    0%, 100% {
        transform: scale(1.00);
    }
    15% {
        transform: scale(1.25);
    }
}

/*
 * ---------------------------------------------------------------------------
 * End-Of-File
 * ---------------------------------------------------------------------------
 */
