davideisinger.com

My personal website
Log | Files | Refs | README

style.scss (7563B)


      1 body {
      2   margin: 8px;
      3   font-family: "courier", monospace;
      4   font-size: 18px;
      5   padding: 50px;
      6   line-height: 1.5em;
      7   background-color: #f6f6f6;
      8   color: #333;
      9 }
     10 
     11 @media only screen and (max-width: 800px) {
     12   body {
     13     -webkit-text-size-adjust: 100%;
     14     font-size: 16px;
     15   }
     16 }
     17 
     18 @media only screen and (max-width: 600px) {
     19   body {
     20     padding: 10px;
     21   }
     22 }
     23 
     24 h1,
     25 h2,
     26 h3 {
     27   font-size: 1em;
     28   margin: 1em 0;
     29 
     30   span {
     31     color: #aaa;
     32   }
     33 }
     34 
     35 h3 {
     36   color: #aaa;
     37 }
     38 
     39 a {
     40   color: #00a;
     41   text-underline-offset: 2px;
     42 }
     43 
     44 header>h1 {
     45   margin: 1em 0;
     46 }
     47 
     48 hr {
     49   border: 0;
     50   border-top: 2px solid #ddd;
     51 }
     52 
     53 ul {
     54   list-style: none;
     55   padding: 0 0 0 2ch;
     56   position: relative;
     57 
     58   >li {
     59     &::before {
     60       color: #aaa;
     61       content: '∗';
     62       left: 0ch;
     63       position: absolute;
     64     }
     65   }
     66 }
     67 
     68 ol {
     69   margin: 0;
     70   padding: 0;
     71   counter-reset: item;
     72 
     73 
     74   li {
     75     counter-increment: item;
     76     display: table;
     77     table-layout: fixed;
     78     width: 100%;
     79   }
     80 
     81   li::before {
     82     content: counter(item) ".";
     83     display: table-cell;
     84     padding-right: 1ch;
     85     white-space: nowrap;
     86     width: 3ch;
     87   }
     88 
     89   &+a.footnote-backref {
     90     margin-left: -1ch;
     91   }
     92 }
     93 
     94 blockquote {
     95   border-left: 1ch solid #ddd;
     96   font-style: italic;
     97   margin: 0;
     98   padding-left: 1ch;
     99 
    100   em {
    101     font-style: normal;
    102   }
    103 }
    104 
    105 header,
    106 #content,
    107 footer {
    108   max-width: 800px;
    109 }
    110 
    111 footer {
    112   color: #aaa;
    113   text-align: center;
    114 
    115   hr {
    116     margin-bottom: 12px;
    117   }
    118 }
    119 
    120 @media only screen and (max-width: 600px) {
    121   footer {
    122     text-align: left;
    123 
    124     a {
    125       display: block;
    126     }
    127 
    128     .mobile-hidden {
    129       display: none;
    130     }
    131   }
    132 }
    133 
    134 sup {
    135   line-height: 0;
    136   font-size: 0.8em;
    137 }
    138 
    139 
    140 .nowrap {
    141   white-space: nowrap;
    142 }
    143 
    144 .references,
    145 .footnotes {
    146   font-size: 0.8em;
    147 
    148   h3 {
    149     margin-bottom: 0;
    150   }
    151 
    152   ul {
    153     margin-top: 0.5em;
    154   }
    155 }
    156 
    157 // IMAGES
    158 
    159 figure {
    160   margin: 0;
    161 }
    162 
    163 img {
    164   mix-blend-mode: multiply;
    165   width: 100%;
    166   height: auto;
    167 
    168   &.inline {
    169     width: auto;
    170     vertical-align: middle;
    171   }
    172 }
    173 
    174 p:has(img) {
    175   display: flex;
    176   gap: 1em;
    177   margin-block-start: 1em;
    178   margin-block-end: 1em;
    179   align-items: center;
    180 
    181   a {
    182     line-height: 0;
    183   }
    184 }
    185 
    186 a:has(> img.float-right) {
    187   display: block;
    188   float: right;
    189   width: 50%;
    190   margin: 0 0 1em 1.5em;
    191   line-height: 0;
    192 }
    193 
    194 @media only screen and (max-width: 600px) {
    195   a:has(> img.float-right) {
    196     float: none;
    197     width: 100%;
    198     margin: 1em 0;
    199   }
    200 }
    201 
    202 // CODE
    203 
    204 code {
    205   background-color: #ddd;
    206   border-radius: 3px;
    207   font-family: "courier", monospace;
    208   padding: 1px 1ch;
    209 }
    210 
    211 .highlight,
    212 pre {
    213   overflow: auto;
    214 
    215   code {
    216     background: none;
    217     padding: 0;
    218     border-radius: 0;
    219   }
    220 }
    221 
    222 pre {
    223   background-color: #2e3440;
    224   color: #d8dee9;
    225   margin: 0;
    226   padding: 1ch 1ch;
    227   border-radius: 3px;
    228 }
    229 
    230 // HOMEPAGE INTRO
    231 
    232 .home-intro {
    233   display: grid;
    234   grid-template-areas: "name" "bio" "about";
    235   margin-top: 1em;
    236   margin-bottom: 0;
    237 
    238   + #content > hr:first-child,
    239   + #content > section:first-child > hr:first-child {
    240     margin-top: 0;
    241   }
    242 
    243   &.home-intro-with-music {
    244     grid-template-columns: minmax(0, 1fr) 330px;
    245     grid-template-areas:
    246       "name music-heading"
    247       "bio music"
    248       "about more-music";
    249 
    250     .home-name,
    251     .home-bio,
    252     .home-about {
    253       padding-right: 26px;
    254     }
    255   }
    256 
    257   h1 {
    258     grid-area: name;
    259     margin: 0;
    260     padding-bottom: 14px;
    261   }
    262 
    263   p {
    264     margin: 0;
    265   }
    266 
    267   .home-bio {
    268     grid-area: bio;
    269     padding-bottom: 10px;
    270   }
    271 
    272   .home-about,
    273   .more-music {
    274     font-size: 14px;
    275     padding-bottom: 20px;
    276   }
    277 
    278   .home-about {
    279     grid-area: about;
    280     display: flex;
    281     flex-wrap: wrap;
    282     gap: 8px 24px;
    283 
    284     a {
    285       white-space: nowrap;
    286     }
    287   }
    288 
    289   .more-music {
    290     grid-area: more-music;
    291   }
    292 }
    293 
    294 .home-music-cell {
    295   border-left: 2px solid #ddd;
    296   padding-left: 26px;
    297   min-width: 0;
    298 }
    299 
    300 .home-music-heading {
    301   grid-area: music-heading;
    302   color: #666;
    303   font-size: 13px;
    304   font-weight: normal;
    305   letter-spacing: 1.1px;
    306   line-height: 28.8px;
    307   text-transform: uppercase;
    308   margin: 0;
    309   padding-top: 4px;
    310   padding-bottom: 10px;
    311 }
    312 
    313 .home-music {
    314   grid-area: music;
    315   padding-bottom: 18px;
    316 
    317   .track-title {
    318     font-size: inherit;
    319     font-weight: bold;
    320     margin-bottom: 4px;
    321   }
    322 
    323   .track-source {
    324     color: #666;
    325     font-size: 14px;
    326     line-height: 1.5;
    327     margin-bottom: 16px;
    328   }
    329 
    330   audio {
    331     display: block;
    332     width: 100%;
    333     min-width: 0;
    334     height: 42px;
    335   }
    336 }
    337 
    338 @media only screen and (max-width: 800px) {
    339   .home-intro {
    340     margin-bottom: 26px;
    341 
    342     &.home-intro-with-music {
    343       grid-template-columns: 1fr;
    344       grid-template-areas:
    345         "name"
    346         "bio"
    347         "about"
    348         "music-heading"
    349         "music"
    350         "more-music";
    351 
    352       .home-name,
    353       .home-bio,
    354       .home-about {
    355         padding-right: 0;
    356       }
    357     }
    358 
    359     .home-about,
    360     .more-music {
    361       padding-bottom: 0;
    362     }
    363   }
    364 
    365   .home-music-cell {
    366     border-left: 0;
    367     padding-left: 0;
    368   }
    369 
    370   .home-music-heading {
    371     border-top: 2px solid #ddd;
    372     padding-top: 20px;
    373     margin-top: 26px;
    374   }
    375 }
    376 
    377 // AUDIO
    378 
    379 .track-toggle {
    380   flex: 0 0 96px;
    381   display: inline-grid;
    382   grid-template-columns: 1.25em 1fr;
    383   align-items: center;
    384   column-gap: 0;
    385   box-sizing: border-box;
    386   width: 96px;
    387   text-align: center;
    388   padding: 8px 12px;
    389   border: 1px solid #ccc;
    390   border-radius: 4px;
    391   background: #eee;
    392   color: #00a;
    393   font: inherit;
    394   font-size: 14px;
    395   cursor: pointer;
    396 
    397   .track-toggle-icon {
    398     text-align: center;
    399     line-height: 1;
    400   }
    401 
    402   &:hover {
    403     background: #e3e3e3;
    404   }
    405 
    406   &:focus-visible {
    407     outline: 2px solid #00a;
    408     outline-offset: 3px;
    409   }
    410 }
    411 
    412 .track-playback {
    413   display: block;
    414   color: #666;
    415   font-size: 14px;
    416   font-variant-numeric: tabular-nums;
    417   text-align: right;
    418   white-space: nowrap;
    419 
    420   // Preserve the text baseline before a timestamp appears.
    421   &:empty::before {
    422     content: "\00a0";
    423   }
    424 }
    425 
    426 .music-track {
    427   align-items: center;
    428   display: flex;
    429   gap: 2ch;
    430   padding: 1ch 0;
    431 
    432   > div {
    433     flex: 1;
    434     min-width: 0;
    435   }
    436 
    437   .track-heading {
    438     display: grid;
    439     grid-template-columns: minmax(0, 1fr) 13ch;
    440     align-items: baseline;
    441     column-gap: 1ch;
    442   }
    443 
    444   .track-title {
    445     font-weight: bold;
    446     margin: 0;
    447   }
    448 
    449   .track-source {
    450     color: #666;
    451     font-size: 14px;
    452     line-height: 1.5;
    453     margin: 0;
    454   }
    455 }
    456 
    457 @media only screen and (max-width: 600px) {
    458   .music-track {
    459     display: block;
    460 
    461     .track-toggle {
    462       margin-bottom: 1ch;
    463     }
    464 
    465     audio {
    466       padding-bottom: 1ch;
    467     }
    468   }
    469 }
    470 
    471 audio::-webkit-media-controls-panel {
    472   background-color: rgba(0, 0, 0, 0.05);
    473 }
    474 
    475 @media print {
    476   body {
    477     background-color: white;
    478     font-size: 18px;
    479     padding: 0;
    480   }
    481 
    482   @page {
    483     size: a5;
    484     margin: 1in 0.8in;
    485   }
    486 
    487   footer {
    488     display: none;
    489   }
    490 
    491   .home-intro.home-intro-with-music {
    492     grid-template-columns: minmax(0, 1fr);
    493     grid-template-areas: "name" "bio" "about";
    494 
    495     .home-music-cell {
    496       display: none;
    497     }
    498 
    499     .home-name,
    500     .home-bio,
    501     .home-about {
    502       padding-right: 0;
    503     }
    504   }
    505 
    506   h2,
    507   h3,
    508   hr {
    509     page-break-after: avoid;
    510   }
    511 
    512   blockquote,
    513   li {
    514     page-break-inside: avoid;
    515   }
    516 
    517   #content {
    518     max-width: none;
    519   }
    520 
    521   .page-break {
    522     page-break-after: always;
    523   }
    524 
    525   a.footnote-backref {
    526     display: none;
    527   }
    528 
    529   code {
    530     background: none;
    531     border-radius: 0;
    532     padding: 0;
    533 
    534     &::before,
    535     &::after {
    536       content: "`"
    537     }
    538   }
    539 
    540   ol {
    541     p {
    542       display: inline;
    543     }
    544   }
    545 }
    546 
    547 .visually-hidden {
    548   position: absolute;
    549   width: 1px;
    550   height: 1px;
    551   padding: 0;
    552   overflow: hidden;
    553   clip-path: inset(50%);
    554   white-space: nowrap;
    555 }
    556 
    557 #content:focus {
    558   outline: none;
    559 }