diff --git a/site-root/public/.htaccess b/site-root/public/.htaccess new file mode 100644 index 0000000..f30e7a6 --- /dev/null +++ b/site-root/public/.htaccess @@ -0,0 +1,37 @@ +# Deny browse directory +Options -Indexes + +# Handle errors +ErrorDocument 404 /error-404.html +ErrorDocument 405 /error-405.html +ErrorDocument 500 /error-500.html + + + RewriteEngine On + + # Handle authorization header + RewriteCond %{HTTP:Authorization} . + RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + # Allow only the following request methods + RewriteCond %{REQUEST_METHOD} !^(GET|HEAD) [NC] + RewriteRule .* - [F,L,R=405] + Header add Access-Control-Allow-Methods "GET, HEAD" + Header add Allow "GET, HEAD" + + # Always remove www + RewriteCond %{HTTP_HOST} ^www\.(.*)$ [NC] + RewriteRule ^(.*)$ http://%1%{REQUEST_URI} [R=301,QSA,NC,L] + + # Redirect to trailing slash if not folder or file + RewriteCond %{REQUEST_URI} /+[^\.]+$ + RewriteRule ^(.+[^/])$ %{REQUEST_URI}/ [R=301,L] + + # Handle redirects + # Redirect 301 "/experiences/health-and-wellness/2023/" "/experiences/health-and-wellness/historical-summaries/#2023-44-years-of-age" + + # Send Requests To Front Controller... + # RewriteCond %{REQUEST_FILENAME} !-d + # RewriteCond %{REQUEST_FILENAME} !-f + # RewriteRule ^ index.php [L] + diff --git a/site-root/public/css/styles.css b/site-root/public/css/styles.css new file mode 100644 index 0000000..6d9c5b6 --- /dev/null +++ b/site-root/public/css/styles.css @@ -0,0 +1,636 @@ +@charset "UTF-8"; +:root{ + --header-font:"Gill Sans", "Gill Sans MT", Calibri, sans-serif; + --body-font:"Open Sans", "Helvetica Neue", Verdana, sans-serif; + --code-font:Consolas, monaco, monospace; + --max-width:1100px; + --x-bold-font:600; + --bold-font:500; + --medium-font:300; + --light-font:250; + --2xl-font:clamp(30pt, 9.375vw, 35pt); + --xl-font:clamp(25pt, 7.8125vw, 30pt); + --l-font:clamp(20pt, 6.25vw, 25pt); + --m-font:clamp(16pt, 5vw, 18pt); + --s-font:clamp(13pt, 4.0625vw, 15pt); + --xs-font:clamp(10pt, 3.125vw, 14pt); + --2xs-font:clamp(8pt, 3.125vw, 12pt); + --l-line-height:calc(var(--2xl-font) * 1); + --m-line-height:calc(var(--s-font) * 1.75); + --s-line-height:calc(var(--s-font) * 1.25); + --line-length:70ch; + --key:#0A6276; + --key-light:#5FCAF2; + --gray-darkest:#030303; + --gray-darker:#0F2124; + --gray-lightest:#FCFDFD; + --red:#B91C00; + --red-light:#F77E68; + --green:#0D7220; + --green-light:#83F598; + --background-color:var(--gray-lightest); + --vw-0:0vw; + --0-spacer:0; + --xl-spacer:4rem; + --l-spacer:2rem; + --m-spacer:1rem; + --s-spacer:0.75rem; + --xs-spacer:0.5rem; + --2xs-spacer:0.25rem; + --3xs-spacer:0.1rem; + --1-px:1px; + --2-px:2px; + --3-px:3px; + --400-px:400px; + --icon-new-window:"⧉"; + --icon-increase:"◭"; + --icon-decrease:"⧩"; + --icon-hold:"≅"; + --icon-lift-spacer:-0.5rem; + --icon-lift-spacer-2:-0.15rem; + --margin-centered:var(--0-spacer) var(--auto); + --smooth:smooth; + --auto:auto; + --pointer:pointer; + --none:none; + --transition-color:color 0.25s; + --center:center; + --left:left; + --solid:solid; + --dashed:dashed; + --transparent:transparent; + --relative:relative; + --absolute:absolute; + --italic:italic; + --inline-block:inline-block; + --block:block; + --both:both; + --hidden:hidden; + --scroll:scroll; + --wavy:wavy; +} + +h1, +h2, +h3, +h4, +h5, +h6{ + margin-top:var(--l-spacer); + margin-bottom:var(--xs-spacer); + font-family:var(--head-font); + font-size:clamp(30pt, 9.375vw, 35pt); + line-height:var(--l-line-height); +} +h1 + ol, h1 + ul, h1 + p, +h2 + ol, +h2 + ul, +h2 + p, +h3 + ol, +h3 + ul, +h3 + p, +h4 + ol, +h4 + ul, +h4 + p, +h5 + ol, +h5 + ul, +h5 + p, +h6 + ol, +h6 + ul, +h6 + p{ + margin-top:var(--0-spacer); + padding-top:var(--0-spacer); +} + +h1{ + margin-top:var(--m-spacer); +} + +h2{ + font-size:var(--xl-font); +} + +h3, +h4, +h5, +h6{ + font-size:var(--l-font); + text-align:var(--center); +} + +code{ + font-family:var(--code-font); + font-size:var(--xs-font); +} + +pre{ + overflow-y:var(--scroll); + -ms-overflow-style:var(--none); + scrollbar-width:var(--none); +} +pre::-webkit-scrollbar{ + display:var(--none); +} + +blockquote{ + margin:var(--m-spacer); + font-style:var(--italic); +} + +a:hover{ + cursor:var(--pointer); +} + +a{ + font-weight:var(--bold-font); + text-decoration-color:var(--key); + text-decoration-thickness:var(--2-px); + text-underline-offset:var(--2-px); + color:var(--key); + transition:var(--transition-color); +} +a:hover{ + color:var(--gray-darker); +} + +a[rel~=noreferrer]:after{ + content:var(--icon-new-window); + display:var(--inline-block); + margin-left:var(--2xs-spacer); + position:var(--relative); + top:var(--icon-lift-spacer); + font-size:var(--xs-font); +} + +kbd{ + font-size:var(--2xs-font); +} + +kbd.single, +kbd > kbd{ + padding:var(--0-spacer) var(--3-px); + font-weight:var(--light-font); + font-family:var(--code-font); + font-size:var(--xs-font); + display:var(--inline-block); + border-radius:var(--3-px); + border:var(--1-px) var(--solid) var(--gray-darkest); +} + +a#skip-nav{ + display:block; + position:absolute; + top:-10rem; +} + +nav[is=main-nav]{ + background-color:var(--background-color); +} +nav[is=main-nav] > ul{ + max-width:1100px; + margin:var(--margin-centered); + padding:0; + display:grid; + list-style:none; +} +nav[is=main-nav] > ul.col-5{ + grid-template-columns:6ch auto auto auto auto; +} +nav[is=main-nav] > ul > li{ + margin:0; + padding:0; +} +nav[is=main-nav] > ul > li > a{ + text-decoration:none; + display:flex; + justify-content:center; + align-items:center; + height:100%; + min-height:44pt; + color:#000000; + background-position:center center; + background-size:auto 20pt; + background-repeat:no-repeat; + transition:transform 0.2s ease-in-out; + font-family:var(--font-header); + font-size:var(--xs-font); +} +nav[is=main-nav] > ul > li > a > span:nth-of-type(1){ + display:none; +} +nav[is=main-nav] > ul > li > a > span:nth-of-type(2){ + display:inline; +} +@media screen and (min-width: 800px){ + nav[is=main-nav] > ul > li > a > span{ + position:relative; + left:0; + right:0; + } + nav[is=main-nav] > ul > li > a > span:nth-of-type(1){ + display:inline; + } + nav[is=main-nav] > ul > li > a > span:nth-of-type(2){ + display:none; + } +} +nav[is=main-nav] > ul > li > a:hover:not(.current){ + transform:scale(1.1, 1.1); +} +nav[is=main-nav] > ul > li > a.current{ + background-color:var(--key); + color:var(--gray-lightest); +} + +@media (prefers-color-scheme: dark){ + nav[is=main-nav] > ul > li > a{ + color:var(--gray-lightest); + } + nav[is=main-nav]{ + background-color:var(--gray-darkest); + } +} +a#back-to-top{ + display:flex; + height:44pt; + width:50vw; + justify-content:center; + align-items:center; + background-color:var(--background-color); + position:fixed; + top:calc(100vh - 44pt); + left:49.5vw; + text-decoration:none; +} +@media screen and (min-width: 800px){ + a#back-to-top{ + width:100vw; + left:0; + } +} +a#back-to-top > span{ + display:block; + max-width:var(--max-width); +} +a#back-to-top > span:before{ + display:var(--inline-block); + content:var(--icon-increase); + position:var(--relative); + right:var(--xs-spacer); +} +a#back-to-top > span:after{ + display:var(--inline-block); + content:var(--icon-increase); + position:var(--relative); + left:var(--xs-spacer); +} + +@media (prefers-color-scheme: dark){ + a#back-to-top{ + background-color:var(--gray-darkest); + } +} +footer{ + padding-top:40pt; + padding-bottom:60pt; + text-align:center; + font-size:var(--xs-font); + line-height:1.5rem; +} +footer > ul{ + display:block; + margin:var(--m-spacer) auto; + padding:var(--0-spacer); + list-style:none; +} +footer > ul > li{ + display:inline-block; +} +footer > ul > li > a{ + margin-right:1rem; + text-decoration:none; +} +footer > ul > li > a:last-of-type{ + margin-left:1rem; +} +footer > ul > li:after{ + content:"|"; +} +footer > ul > li:last-of-type:after{ + content:""; +} +footer > p{ + margin:0; +} + +.shiki{ + padding:1rem; + border-radius:0.5rem; +} + +.shiki.focus .line:not(.focus){ + transition:all 0.3s ease-in; + filter:saturate(0) blur(1px); +} + +.shiki.focus:hover .line{ + transition:all 0.3 ease-out; + filter:saturate(0.7) blur(0); +} + +html{ + scroll-padding-top:44pt; +} +@media screen and (min-width: 800px){ + html{ + scroll-padding-top:55pt; + } +} + +body{ + min-height:var(--vw-0); + max-width:var(--line-length); + margin:var(--margin-centered); + background:var(--gray-lightest); + color:var(--gray-darkest); + font-family:var(--body-font); + font-size:var(--m-font); + line-height:var(--m-line-height); + font-weight:var(--light-font); + margin-bottom:66pt; +} + +[is=dateblock]{ + margin-bottom:var(--l-spacer); +} +[is=dateblock] p{ + margin:var(--0-spacer); + font-size:var(--xs-font); +} +[is=dateblock] p > time{ + font-weight:var(--bold-font); +} + +div[is=heading-wrapper]{ + display:flex; + flex-direction:column-reverse; +} +div[is=heading-wrapper] > a{ + display:block; + text-align:center; +} +div[is=heading-wrapper] > a > span:nth-of-type(1):before, div[is=heading-wrapper] > a > span:nth-of-type(1):after{ + display:inline-block; + margin:var(--0-spacer) var(--m-spacer); + content:"#"; + font-size:var(--2xs-font); + position:relative; + top:var(--3-px); +} +div[is=heading-wrapper] > a > span:nth-of-type(2){ + clip:rect(1px, 1px, 1px, 1px) !important; + border-width:0 !important; + height:1px !important; + overflow:hidden !important; + padding:0 !important; + position:absolute !important; + white-space:nowrap !important; + width:1px !important; +} + +hr{ + width:33%; + border:var(--2-px) var(--solid) var(--gray-darkest); + border-radius:var(--1-px); +} + +.toc{ + padding:var(--none); + list-style:var(--none); +} +.toc li{ + border-bottom:var(--1-px) var(--solid) var(--gray-darker); +} +.toc li:last-child{ + border-bottom:var(--none); +} +.toc h3{ + margin:var(--xs-spacer); + text-align:var(--left); + font-size:var(--l-font); +} +.toc h3 a{ + display:var(--block); + padding:var(--m-spacer); +} +.toc h3 small{ + font-size:var(--s-font); + display:var(--block); + color:var(--gray-darker); + font-weight:var(--light-font); +} + +main, article{ + padding:var(--0-spacer) var(--m-spacer); + padding-top:var(--m-spacer); +} +main img, +main iframe[src*="https://jsfiddle.net"], article img, +article iframe[src*="https://jsfiddle.net"]{ + display:var(--block); + margin:var(--margin-centered); + width:80%; + border:var(--3-px) var(--solid) var(--gray-darker); +} +main iframe[src*="https://jsfiddle.net"], article iframe[src*="https://jsfiddle.net"]{ + min-height:300px; +} +main abbr, article abbr{ + -webkit-text-decoration:var(--none); + text-decoration:var(--none); + border-bottom:var(--1-px) var(--dashed) var(--gray-darker); +} +main dl > dt, article dl > dt{ + margin-top:var(--m-spacer); +} +main dl > dd, article dl > dd{ + margin-bottom:var(--s-spacer); +} +main details, article details{ + border:var(--1-px) var(--solid) var(--key); + border-radius:var(--3-px); + margin-top:var(--m-spacer); + padding:0.5em 0.5em 0; +} +main details summary, article details summary{ + font-weight:var(--bold-font); + color:var(--key); + cursor:var(--pointer); + margin:-0.5em -0.5em 0; + padding:0.5em; +} +main details + [is=heading-wrapper], article details + [is=heading-wrapper]{ + margin-top:var(--xl-spacer); +} +ul[is=data-list]{ + margin:0; + padding:0; + list-style:none; +} +ul[is=data-list] > li{ + margin-bottom:var(--m-spacer); + border-radius:var(--3-px); + border-style:var(--solid); + border-width:var(--1-px); + border-color:var(--key); + padding:var(--xs-spacer); + color:var(--key); + text-align:var(--center); +} +ul[is=data-list] > li span:nth-of-type(1){ + font-weight:var(--bold-font); + font-size:var(--s-font); +} +ul[is=data-list] > li span:nth-of-type(2){ + position:absolute; + left:-9999px; +} +ul[is=data-list] > li > ul{ + margin:0; + padding:0; + list-style:none; + text-align:left; + display:grid; + grid-template-areas:"c c" "min max" "meter meter"; +} +ul[is=data-list] > li > ul > li:nth-of-type(1){ + margin:var(--m-spacer); + grid-area:c; + font-weight:var(--bold-font); + font-size:var(--l-font); + text-align:var(--center); +} +ul[is=data-list] > li > ul > li:nth-of-type(1):after{ + display:var(--inline-block); + position:var(--relative); + top:var(--icon-lift-spacer-2); + margin-left:var(--s-spacer); +} +ul[is=data-list] > li > ul > li:nth-of-type(1) > b{ + position:absolute; + left:-9999px; +} +ul[is=data-list] > li > ul > li:nth-of-type(2), ul[is=data-list] > li > ul > li:nth-of-type(3){ + text-align:var(--center); + font-size:var(--xs-font); +} +ul[is=data-list] > li > ul > li:nth-of-type(2){ + grid-area:min; +} +ul[is=data-list] > li > ul > li:nth-of-type(3){ + grid-area:max; +} +ul[is=data-list] > li > ul > li:nth-of-type(4){ + grid-area:meter; +} +ul[is=data-list] > li > ul > li:nth-of-type(4) meter{ + display:block; + width:100%; + -webkit-appearance:none; + -moz-appearance:none; +} +ul[is=data-list] > li[data-icon=hold] > ul > li:nth-of-type(1):after{ + content:var(--icon-hold); +} +ul[is=data-list] > li[data-icon=increase]{ + color:var(--green); + border-color:var(--green); +} +ul[is=data-list] > li[data-icon=increase] > ul > li:nth-of-type(1):after{ + content:var(--icon-increase); +} +ul[is=data-list] > li[data-icon=decrease]{ + color:var(--red); + border-color:var(--red); +} +ul[is=data-list] > li[data-icon=decrease] > ul > li:nth-of-type(1):after{ + content:var(--icon-decrease); +} + +@media (prefers-reduced-motion: no-preference){ + html{ + scroll-behavior:var(--smooth); + } +} +@media (prefers-color-scheme: dark){ + body{ + background:var(--gray-darkest); + color:var(--gray-lightest); + font-weight:var(--medium-font); + } + hr{ + border:1px solid var(--gray-lightest); + } + a{ + color:var(--key-light); + text-decoration-color:var(--key-light); + font-weight:var(--x-bold-font); + } + a:hover{ + color:var(--gray-lightest); + } + [is=dateblock] p > time, b, strong{ + font-weight:var(--x-bold-font); + } + nav > ul a:after{ + border-top:var(--1-px) var(--solid) var(--gray-lightest); + } + main img, + main iframe[src*="https://jsfiddle.net"], article img, + article iframe[src*="https://jsfiddle.net"]{ + border:3px solid var(--gray-lightest); + } + main details summary, article details summary{ + color:var(--key-light); + } + ul[is=data-list] > li[data-icon=hold]{ + border-color:var(--key-light); + color:var(--key-light); + } + ul[is=data-list] > li[data-icon=increase]{ + color:var(--green-light); + border-color:var(--green-light); + } + ul[is=data-list] > li[data-icon=decrease]{ + color:var(--red-light); + border-color:var(--red-light); + } + kbd > kbd{ + border:var(--1-px) var(--solid) var(--gray-lightest); + } +} +div[is=heading-wrapper] > a{ + text-decoration:none; +} + +@media only screen and (min-width: 600px){ + ul[is=data-list]{ + display:grid; + gap:var(--m-spacer); + grid-template-columns:repeat(3, 1fr); + } + ul[is=data-list] > li{ + margin-bottom:var(--0-spacer); + } + ul[is=data-list] > li:nth-of-type(3), ul[is=data-list] > li:nth-of-type(5){ + grid-column-start:1; + } +} +.heading-permalink{ + display:var(--inline-block); + margin-right:var(--2xs-spacer); +} + +.notice{ + font-size:var(--xs-font); +} \ No newline at end of file diff --git a/site-root/public/css/styles.min.css b/site-root/public/css/styles.min.css new file mode 100644 index 0000000..8232cac --- /dev/null +++ b/site-root/public/css/styles.min.css @@ -0,0 +1,2 @@ +@charset "UTF-8";:root{--header-font:"Gill Sans", "Gill Sans MT", Calibri, sans-serif;--body-font:"Open Sans", "Helvetica Neue", Verdana, sans-serif;--code-font:Consolas, monaco, monospace;--max-width:1100px;--x-bold-font:600;--bold-font:500;--medium-font:300;--light-font:250;--2xl-font:clamp(30pt, 9.375vw, 35pt);--xl-font:clamp(25pt, 7.8125vw, 30pt);--l-font:clamp(20pt, 6.25vw, 25pt);--m-font:clamp(16pt, 5vw, 18pt);--s-font:clamp(13pt, 4.0625vw, 15pt);--xs-font:clamp(10pt, 3.125vw, 14pt);--2xs-font:clamp(8pt, 3.125vw, 12pt);--l-line-height:calc(var(--2xl-font) * 1);--m-line-height:calc(var(--s-font) * 1.75);--s-line-height:calc(var(--s-font) * 1.25);--line-length:70ch;--key:#0A6276;--key-light:#5FCAF2;--gray-darkest:#030303;--gray-darker:#0F2124;--gray-lightest:#FCFDFD;--red:#B91C00;--red-light:#F77E68;--green:#0D7220;--green-light:#83F598;--background-color:var(--gray-lightest);--vw-0:0vw;--0-spacer:0;--xl-spacer:4rem;--l-spacer:2rem;--m-spacer:1rem;--s-spacer:0.75rem;--xs-spacer:0.5rem;--2xs-spacer:0.25rem;--3xs-spacer:0.1rem;--1-px:1px;--2-px:2px;--3-px:3px;--400-px:400px;--icon-new-window:"⧉";--icon-increase:"◭";--icon-decrease:"⧩";--icon-hold:"≅";--icon-lift-spacer:-0.5rem;--icon-lift-spacer-2:-0.15rem;--margin-centered:var(--0-spacer) var(--auto);--smooth:smooth;--auto:auto;--pointer:pointer;--none:none;--transition-color:color 0.25s;--center:center;--left:left;--solid:solid;--dashed:dashed;--transparent:transparent;--relative:relative;--absolute:absolute;--italic:italic;--inline-block:inline-block;--block:block;--both:both;--hidden:hidden;--scroll:scroll;--wavy:wavy}h1,h2,h3,h4,h5,h6{margin-bottom:var(--xs-spacer);font-family:var(--head-font);font-size:clamp(30pt,9.375vw,35pt);line-height:var(--l-line-height)}h2,h3,h4,h5,h6{margin-top:var(--l-spacer)}h1+ol,h1+p,h1+ul,h2+ol,h2+p,h2+ul,h3+ol,h3+p,h3+ul,h4+ol,h4+p,h4+ul,h5+ol,h5+p,h5+ul,h6+ol,h6+p,h6+ul{margin-top:var(--0-spacer);padding-top:var(--0-spacer)}article dl>dt,h1,main dl>dt{margin-top:var(--m-spacer)}h2{font-size:var(--xl-font)}h3,h4,h5,h6{font-size:var(--l-font);text-align:var(--center)}code{font-family:var(--code-font);font-size:var(--xs-font)}pre{overflow-y:var(--scroll);-ms-overflow-style:var(--none);scrollbar-width:var(--none)}pre::-webkit-scrollbar{display:var(--none)}blockquote{margin:var(--m-spacer);font-style:var(--italic)}a:hover{cursor:var(--pointer);color:var(--gray-darker)}a{font-weight:var(--bold-font);text-decoration-color:var(--key);text-decoration-thickness:var(--2-px);text-underline-offset:var(--2-px);color:var(--key);transition:var(--transition-color)}a[rel~=noreferrer]:after,kbd.single,kbd>kbd{font-size:var(--xs-font);display:var(--inline-block)}a[rel~=noreferrer]:after{content:var(--icon-new-window);margin-left:var(--2xs-spacer);position:var(--relative);top:var(--icon-lift-spacer)}kbd{font-size:var(--2xs-font)}kbd.single,kbd>kbd{padding:var(--0-spacer) var(--3-px);font-weight:var(--light-font);font-family:var(--code-font);border-radius:var(--3-px);border:var(--1-px) var(--solid) var(--gray-darkest)}a#skip-nav{display:block;position:absolute;top:-10rem}nav[is=main-nav]{background-color:var(--background-color)}nav[is=main-nav]>ul{max-width:1100px;margin:var(--margin-centered);padding:0;display:grid;list-style:none}nav[is=main-nav]>ul.col-5{grid-template-columns:6ch auto auto auto auto}nav[is=main-nav]>ul>li{margin:0;padding:0}nav[is=main-nav]>ul>li>a{text-decoration:none;display:flex;justify-content:center;align-items:center;height:100%;min-height:44pt;color:#000;background-position:center center;background-size:auto 20pt;background-repeat:no-repeat;transition:transform .2s ease-in-out;font-family:var(--font-header);font-size:var(--xs-font)}nav[is=main-nav]>ul>li>a>span:nth-of-type(1){display:none}nav[is=main-nav]>ul>li>a>span:nth-of-type(2){display:inline}@media screen and (min-width:800px){nav[is=main-nav]>ul>li>a>span{position:relative;left:0;right:0}nav[is=main-nav]>ul>li>a>span:nth-of-type(1){display:inline}nav[is=main-nav]>ul>li>a>span:nth-of-type(2){display:none}}nav[is=main-nav]>ul>li>a:hover:not(.current){transform:scale(1.1,1.1)}nav[is=main-nav]>ul>li>a.current{background-color:var(--key);color:var(--gray-lightest)}@media (prefers-color-scheme:dark){nav[is=main-nav]>ul>li>a{color:var(--gray-lightest)}nav[is=main-nav]{background-color:var(--gray-darkest)}}a#back-to-top{display:flex;height:44pt;width:50vw;justify-content:center;align-items:center;background-color:var(--background-color);position:fixed;top:calc(100vh - 44pt);left:49.5vw;text-decoration:none}@media screen and (min-width:800px){a#back-to-top{width:100vw;left:0}}a#back-to-top>span{display:block;max-width:var(--max-width)}a#back-to-top>span:after,a#back-to-top>span:before{display:var(--inline-block);content:var(--icon-increase);position:var(--relative)}a#back-to-top>span:before{right:var(--xs-spacer)}a#back-to-top>span:after{left:var(--xs-spacer)}@media (prefers-color-scheme:dark){a#back-to-top{background-color:var(--gray-darkest)}}footer{padding-top:40pt;padding-bottom:60pt;text-align:center;font-size:var(--xs-font);line-height:1.5rem}footer>ul{display:block;margin:var(--m-spacer) auto;padding:var(--0-spacer);list-style:none}footer>ul>li{display:inline-block}footer>ul>li>a{margin-right:1rem;text-decoration:none}footer>ul>li>a:last-of-type{margin-left:1rem}footer>ul>li:after{content:"|"}footer>ul>li:last-of-type:after{content:""}footer>p{margin:0}.shiki{padding:1rem;border-radius:.5rem}.shiki.focus .line:not(.focus){transition:all .3s ease-in;filter:saturate(0) blur(1px)}.shiki.focus:hover .line{transition:all .3 ease-out;filter:saturate(.7) blur(0)}html{scroll-padding-top:44pt}@media screen and (min-width:800px){html{scroll-padding-top:55pt}}body{min-height:var(--vw-0);max-width:var(--line-length);margin:var(--margin-centered);background:var(--gray-lightest);color:var(--gray-darkest);font-family:var(--body-font);font-size:var(--m-font);line-height:var(--m-line-height);font-weight:var(--light-font);margin-bottom:66pt}[is=dateblock]{margin-bottom:var(--l-spacer)}[is=dateblock] p{margin:var(--0-spacer);font-size:var(--xs-font)}[is=dateblock] p>time{font-weight:var(--bold-font)}div[is=heading-wrapper]{display:flex;flex-direction:column-reverse}div[is=heading-wrapper]>a{display:block;text-align:center}div[is=heading-wrapper]>a>span:nth-of-type(1):after,div[is=heading-wrapper]>a>span:nth-of-type(1):before{display:inline-block;margin:var(--0-spacer) var(--m-spacer);content:"#";font-size:var(--2xs-font);position:relative;top:var(--3-px)}div[is=heading-wrapper]>a>span:nth-of-type(2){clip:rect(1px,1px,1px,1px)!important;border-width:0!important;height:1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;white-space:nowrap!important;width:1px!important}hr{width:33%;border:var(--2-px) var(--solid) var(--gray-darkest);border-radius:var(--1-px)}.toc{padding:var(--none);list-style:var(--none)}.toc li{border-bottom:var(--1-px) var(--solid) var(--gray-darker)}.toc li:last-child{border-bottom:var(--none)}.toc h3{margin:var(--xs-spacer);text-align:var(--left);font-size:var(--l-font)}.toc h3 a{display:var(--block);padding:var(--m-spacer)}.toc h3 small{font-size:var(--s-font);display:var(--block);color:var(--gray-darker);font-weight:var(--light-font)}article,main{padding:var(--0-spacer) var(--m-spacer);padding-top:var(--m-spacer)}article iframe[src*="https://jsfiddle.net"],article img,main iframe[src*="https://jsfiddle.net"],main img{display:var(--block);margin:var(--margin-centered);width:80%;border:var(--3-px) var(--solid) var(--gray-darker)}article iframe[src*="https://jsfiddle.net"],main iframe[src*="https://jsfiddle.net"]{min-height:300px}article abbr,main abbr{-webkit-text-decoration:var(--none);text-decoration:var(--none);border-bottom:var(--1-px) var(--dashed) var(--gray-darker)}article dl>dd,main dl>dd{margin-bottom:var(--s-spacer)}article details,main details{border:var(--1-px) var(--solid) var(--key);border-radius:var(--3-px);margin-top:var(--m-spacer);padding:.5em .5em 0}article details summary,main details summary{font-weight:var(--bold-font);color:var(--key);cursor:var(--pointer);margin:-.5em -.5em 0;padding:.5em}article details+[is=heading-wrapper],main details+[is=heading-wrapper]{margin-top:var(--xl-spacer)}ul[is=data-list]{margin:0;padding:0;list-style:none}ul[is=data-list]>li{margin-bottom:var(--m-spacer);border-radius:var(--3-px);border-style:var(--solid);border-width:var(--1-px);border-color:var(--key);padding:var(--xs-spacer);color:var(--key);text-align:var(--center)}ul[is=data-list]>li span:nth-of-type(1){font-weight:var(--bold-font);font-size:var(--s-font)}ul[is=data-list]>li span:nth-of-type(2),ul[is=data-list]>li>ul>li:nth-of-type(1)>b{position:absolute;left:-9999px}ul[is=data-list]>li>ul{margin:0;padding:0;list-style:none;text-align:left;display:grid;grid-template-areas:"c c""min max""meter meter"}ul[is=data-list]>li>ul>li:nth-of-type(1){margin:var(--m-spacer);grid-area:c;font-weight:var(--bold-font);font-size:var(--l-font);text-align:var(--center)}ul[is=data-list]>li>ul>li:nth-of-type(1):after{display:var(--inline-block);position:var(--relative);top:var(--icon-lift-spacer-2);margin-left:var(--s-spacer)}ul[is=data-list]>li>ul>li:nth-of-type(2),ul[is=data-list]>li>ul>li:nth-of-type(3){text-align:var(--center);font-size:var(--xs-font)}ul[is=data-list]>li>ul>li:nth-of-type(2){grid-area:min}ul[is=data-list]>li>ul>li:nth-of-type(3){grid-area:max}ul[is=data-list]>li>ul>li:nth-of-type(4){grid-area:meter}ul[is=data-list]>li>ul>li:nth-of-type(4) meter{display:block;width:100%;-webkit-appearance:none;-moz-appearance:none}ul[is=data-list]>li[data-icon=hold]>ul>li:nth-of-type(1):after{content:var(--icon-hold)}ul[is=data-list]>li[data-icon=increase]{color:var(--green);border-color:var(--green)}ul[is=data-list]>li[data-icon=increase]>ul>li:nth-of-type(1):after{content:var(--icon-increase)}ul[is=data-list]>li[data-icon=decrease]{color:var(--red);border-color:var(--red)}ul[is=data-list]>li[data-icon=decrease]>ul>li:nth-of-type(1):after{content:var(--icon-decrease)}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:var(--smooth)}}@media (prefers-color-scheme:dark){body{background:var(--gray-darkest);font-weight:var(--medium-font)}hr{border:1px solid var(--gray-lightest)}a{text-decoration-color:var(--key-light)}a:hover,body{color:var(--gray-lightest)}[is=dateblock] p>time,a,b,strong{font-weight:var(--x-bold-font)}nav>ul a:after{border-top:var(--1-px) var(--solid) var(--gray-lightest)}article iframe[src*="https://jsfiddle.net"],article img,main iframe[src*="https://jsfiddle.net"],main img{border:3px solid var(--gray-lightest)}a,article details summary,main details summary{color:var(--key-light)}ul[is=data-list]>li[data-icon=hold]{border-color:var(--key-light);color:var(--key-light)}ul[is=data-list]>li[data-icon=increase]{color:var(--green-light);border-color:var(--green-light)}ul[is=data-list]>li[data-icon=decrease]{color:var(--red-light);border-color:var(--red-light)}kbd>kbd{border:var(--1-px) var(--solid) var(--gray-lightest)}}div[is=heading-wrapper]>a{text-decoration:none}@media only screen and (min-width:600px){ul[is=data-list]{display:grid;gap:var(--m-spacer);grid-template-columns:repeat(3,1fr)}ul[is=data-list]>li{margin-bottom:var(--0-spacer)}ul[is=data-list]>li:nth-of-type(3),ul[is=data-list]>li:nth-of-type(5){grid-column-start:1}}.heading-permalink{display:var(--inline-block);margin-right:var(--2xs-spacer)}.notice{font-size:var(--xs-font)} +/*# sourceMappingURL=styles.min.css.map */ diff --git a/site-root/public/css/styles.min.css.map b/site-root/public/css/styles.min.css.map new file mode 100644 index 0000000..7ac3729 --- /dev/null +++ b/site-root/public/css/styles.min.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["styles.css","../../../_variables.scss","../../../_typography.scss","","../../../_main-nav.scss","../../../_mixins.scss","../../../_back-to-top.scss","../../../_footer.scss","../../../_code-blocks.scss","../../../styles.scss"],"names":[],"mappings":"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","file":"styles.min.css","sourcesContent":["@charset \"UTF-8\";\n:root {\n --header-font: \"Gill Sans\", \"Gill Sans MT\", Calibri, sans-serif;\n --body-font: \"Open Sans\", \"Helvetica Neue\", Verdana, sans-serif;\n --code-font: Consolas, monaco, monospace;\n --max-width: 1100px;\n --x-bold-font: 600;\n --bold-font: 500;\n --medium-font: 300;\n --light-font: 250;\n --2xl-font: clamp(30pt, 9.375vw, 35pt);\n --xl-font: clamp(25pt, 7.8125vw, 30pt);\n --l-font: clamp(20pt, 6.25vw, 25pt);\n --m-font: clamp(16pt, 5vw, 18pt);\n --s-font: clamp(13pt, 4.0625vw, 15pt);\n --xs-font: clamp(10pt, 3.125vw, 14pt);\n --2xs-font: clamp(8pt, 3.125vw, 12pt);\n --l-line-height: calc(var(--2xl-font) * 1);\n --m-line-height: calc(var(--s-font) * 1.75);\n --s-line-height: calc(var(--s-font) * 1.25);\n --line-length: 70ch;\n --key: #0A6276;\n --key-light: #5FCAF2;\n --gray-darkest: #030303;\n --gray-darker: #0F2124;\n --gray-lightest: #FCFDFD;\n --red: #B91C00;\n --red-light: #F77E68;\n --green: #0D7220;\n --green-light: #83F598;\n --background-color: var(--gray-lightest);\n --vw-0: 0vw;\n --0-spacer: 0;\n --xl-spacer: 4rem;\n --l-spacer: 2rem;\n --m-spacer: 1rem;\n --s-spacer: 0.75rem;\n --xs-spacer: 0.5rem;\n --2xs-spacer: 0.25rem;\n --3xs-spacer: 0.1rem;\n --1-px: 1px;\n --2-px: 2px;\n --3-px: 3px;\n --400-px: 400px;\n --icon-new-window: \"⧉\";\n --icon-increase: \"◭\";\n --icon-decrease: \"⧩\";\n --icon-hold: \"≅\";\n --icon-lift-spacer: -0.5rem;\n --icon-lift-spacer-2: -0.15rem;\n --margin-centered: var(--0-spacer) var(--auto);\n --smooth: smooth;\n --auto: auto;\n --pointer: pointer;\n --none: none;\n --transition-color: color 0.25s;\n --center: center;\n --left: left;\n --solid: solid;\n --dashed: dashed;\n --transparent: transparent;\n --relative: relative;\n --absolute: absolute;\n --italic: italic;\n --inline-block: inline-block;\n --block: block;\n --both: both;\n --hidden: hidden;\n --scroll: scroll;\n --wavy: wavy;\n}\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6 {\n margin-top: var(--l-spacer);\n margin-bottom: var(--xs-spacer);\n font-family: var(--head-font);\n font-size: clamp(30pt, 9.375vw, 35pt);\n line-height: var(--l-line-height);\n}\nh1 + ol, h1 + ul, h1 + p,\nh2 + ol,\nh2 + ul,\nh2 + p,\nh3 + ol,\nh3 + ul,\nh3 + p,\nh4 + ol,\nh4 + ul,\nh4 + p,\nh5 + ol,\nh5 + ul,\nh5 + p,\nh6 + ol,\nh6 + ul,\nh6 + p {\n margin-top: var(--0-spacer);\n padding-top: var(--0-spacer);\n}\n\nh1 {\n margin-top: var(--m-spacer);\n}\n\nh2 {\n font-size: var(--xl-font);\n}\n\nh3,\nh4,\nh5,\nh6 {\n font-size: var(--l-font);\n text-align: var(--center);\n}\n\ncode {\n font-family: var(--code-font);\n font-size: var(--xs-font);\n}\n\npre {\n overflow-y: var(--scroll);\n -ms-overflow-style: var(--none); /* IE and Edge */\n scrollbar-width: var(--none); /* Firefox */\n}\npre::-webkit-scrollbar {\n display: var(--none);\n}\n\nblockquote {\n margin: var(--m-spacer);\n font-style: var(--italic);\n}\n\na:hover {\n cursor: var(--pointer);\n}\n\na {\n font-weight: var(--bold-font);\n text-decoration-color: var(--key);\n text-decoration-thickness: var(--2-px);\n text-underline-offset: var(--2-px);\n color: var(--key);\n transition: var(--transition-color);\n}\na:hover {\n color: var(--gray-darker);\n}\n\na[rel~=noreferrer]:after {\n content: var(--icon-new-window);\n display: var(--inline-block);\n margin-left: var(--2xs-spacer);\n position: var(--relative);\n top: var(--icon-lift-spacer);\n font-size: var(--xs-font);\n}\n\nkbd {\n font-size: var(--2xs-font);\n}\n\nkbd.single,\nkbd > kbd {\n padding: var(--0-spacer) var(--3-px);\n font-weight: var(--light-font);\n font-family: var(--code-font);\n font-size: var(--xs-font);\n display: var(--inline-block);\n border-radius: var(--3-px);\n border: var(--1-px) var(--solid) var(--gray-darkest);\n}\n\na#skip-nav {\n display: block;\n position: absolute;\n top: -10rem;\n}\n\nnav[is=main-nav] {\n background-color: var(--background-color);\n}\nnav[is=main-nav] > ul {\n max-width: 1100px;\n margin: var(--margin-centered);\n padding: 0;\n display: grid;\n list-style: none;\n}\nnav[is=main-nav] > ul.col-5 {\n grid-template-columns: 6ch auto auto auto auto;\n}\nnav[is=main-nav] > ul > li {\n margin: 0;\n padding: 0;\n}\nnav[is=main-nav] > ul > li > a {\n text-decoration: none;\n display: flex;\n justify-content: center;\n align-items: center;\n height: 100%;\n min-height: 44pt;\n color: #000000;\n background-position: center center;\n background-size: auto 20pt;\n background-repeat: no-repeat;\n transition: transform 0.2s ease-in-out;\n font-family: var(--font-header);\n font-size: var(--xs-font);\n}\nnav[is=main-nav] > ul > li > a > span:nth-of-type(1) {\n display: none;\n}\nnav[is=main-nav] > ul > li > a > span:nth-of-type(2) {\n display: inline;\n}\n@media screen and (min-width: 800px) {\n nav[is=main-nav] > ul > li > a > span {\n position: relative;\n left: 0;\n right: 0;\n }\n nav[is=main-nav] > ul > li > a > span:nth-of-type(1) {\n display: inline;\n }\n nav[is=main-nav] > ul > li > a > span:nth-of-type(2) {\n display: none;\n }\n}\nnav[is=main-nav] > ul > li > a:hover:not(.current) {\n transform: scale(1.1, 1.1);\n}\nnav[is=main-nav] > ul > li > a.current {\n background-color: var(--key);\n color: var(--gray-lightest);\n}\n\n@media (prefers-color-scheme: dark) {\n nav[is=main-nav] > ul > li > a {\n color: var(--gray-lightest);\n }\n nav[is=main-nav] {\n background-color: var(--gray-darkest);\n }\n}\na#back-to-top {\n display: flex;\n height: 44pt;\n width: 50vw;\n justify-content: center;\n align-items: center;\n background-color: var(--background-color);\n position: fixed;\n top: calc(100vh - 44pt);\n left: 49.5vw;\n text-decoration: none;\n}\n@media screen and (min-width: 800px) {\n a#back-to-top {\n width: 100vw;\n left: 0;\n }\n}\na#back-to-top > span {\n display: block;\n max-width: var(--max-width);\n}\na#back-to-top > span:before {\n display: var(--inline-block);\n content: var(--icon-increase);\n position: var(--relative);\n right: var(--xs-spacer);\n}\na#back-to-top > span:after {\n display: var(--inline-block);\n content: var(--icon-increase);\n position: var(--relative);\n left: var(--xs-spacer);\n}\n\n@media (prefers-color-scheme: dark) {\n a#back-to-top {\n background-color: var(--gray-darkest);\n }\n}\nfooter {\n padding-top: 40pt;\n padding-bottom: 60pt;\n text-align: center;\n font-size: var(--xs-font);\n line-height: 1.5rem;\n}\nfooter > ul {\n display: block;\n margin: var(--m-spacer) auto;\n padding: var(--0-spacer);\n list-style: none;\n}\nfooter > ul > li {\n display: inline-block;\n}\nfooter > ul > li > a {\n margin-right: 1rem;\n text-decoration: none;\n}\nfooter > ul > li > a:last-of-type {\n margin-left: 1rem;\n}\nfooter > ul > li:after {\n content: \"|\";\n}\nfooter > ul > li:last-of-type:after {\n content: \"\";\n}\nfooter > p {\n margin: 0;\n}\n\n.shiki {\n padding: 1rem;\n border-radius: 0.5rem;\n}\n\n.shiki.focus .line:not(.focus) {\n transition: all 0.3s ease-in;\n filter: saturate(0) blur(1px);\n}\n\n.shiki.focus:hover .line {\n transition: all 0.3 ease-out;\n filter: saturate(0.7) blur(0);\n}\n\nhtml {\n scroll-padding-top: 44pt;\n}\n@media screen and (min-width: 800px) {\n html {\n scroll-padding-top: 55pt;\n }\n}\n\nbody {\n min-height: var(--vw-0);\n max-width: var(--line-length);\n margin: var(--margin-centered);\n background: var(--gray-lightest);\n color: var(--gray-darkest);\n font-family: var(--body-font);\n font-size: var(--m-font);\n line-height: var(--m-line-height);\n font-weight: var(--light-font);\n margin-bottom: 66pt;\n}\n\n[is=dateblock] {\n margin-bottom: var(--l-spacer);\n}\n[is=dateblock] p {\n margin: var(--0-spacer);\n font-size: var(--xs-font);\n}\n[is=dateblock] p > time {\n font-weight: var(--bold-font);\n}\n\ndiv[is=heading-wrapper] {\n display: flex;\n flex-direction: column-reverse;\n}\ndiv[is=heading-wrapper] > a {\n display: block;\n text-align: center;\n}\ndiv[is=heading-wrapper] > a > span:nth-of-type(1):before, div[is=heading-wrapper] > a > span:nth-of-type(1):after {\n display: inline-block;\n margin: var(--0-spacer) var(--m-spacer);\n content: \"#\";\n font-size: var(--2xs-font);\n position: relative;\n top: var(--3-px);\n}\ndiv[is=heading-wrapper] > a > span:nth-of-type(2) {\n clip: rect(1px, 1px, 1px, 1px) !important;\n border-width: 0 !important;\n height: 1px !important;\n overflow: hidden !important;\n padding: 0 !important;\n position: absolute !important;\n white-space: nowrap !important;\n width: 1px !important;\n}\n\nhr {\n width: 33%;\n border: var(--2-px) var(--solid) var(--gray-darkest);\n border-radius: var(--1-px);\n}\n\n.toc {\n padding: var(--none);\n list-style: var(--none);\n}\n.toc li {\n border-bottom: var(--1-px) var(--solid) var(--gray-darker);\n}\n.toc li:last-child {\n border-bottom: var(--none);\n}\n.toc h3 {\n margin: var(--xs-spacer);\n text-align: var(--left);\n font-size: var(--l-font);\n}\n.toc h3 a {\n display: var(--block);\n padding: var(--m-spacer);\n}\n.toc h3 small {\n font-size: var(--s-font);\n display: var(--block);\n color: var(--gray-darker);\n font-weight: var(--light-font);\n}\n\nmain, article {\n padding: var(--0-spacer) var(--m-spacer);\n padding-top: var(--m-spacer);\n}\nmain img,\nmain iframe[src*=\"https://jsfiddle.net\"], article img,\narticle iframe[src*=\"https://jsfiddle.net\"] {\n display: var(--block);\n margin: var(--margin-centered);\n width: 80%;\n border: var(--3-px) var(--solid) var(--gray-darker);\n}\nmain iframe[src*=\"https://jsfiddle.net\"], article iframe[src*=\"https://jsfiddle.net\"] {\n min-height: 300px;\n}\nmain abbr, article abbr {\n text-decoration: var(--none);\n border-bottom: var(--1-px) var(--dashed) var(--gray-darker);\n}\nmain dl > dt, article dl > dt {\n margin-top: var(--m-spacer);\n}\nmain dl > dd, article dl > dd {\n margin-bottom: var(--s-spacer);\n}\nmain details, article details {\n border: var(--1-px) var(--solid) var(--key);\n border-radius: var(--3-px);\n margin-top: var(--m-spacer);\n padding: 0.5em 0.5em 0;\n}\nmain details summary, article details summary {\n font-weight: var(--bold-font);\n color: var(--key);\n cursor: var(--pointer);\n margin: -0.5em -0.5em 0;\n padding: 0.5em;\n}\nmain details + [is=heading-wrapper], article details + [is=heading-wrapper] {\n margin-top: var(--xl-spacer);\n}\n\n/*\nnav > ul {\n margin: var(--0-spacer);\n padding: var(--0-spacer);\n list-style: var(--none);\n\n > li {\n margin-top: var(--m-spacer);\n }\n\n > li:first-of-type {\n margin-bottom: var(--m-spacer);\n }\n\n & ul {\n list-style: var(--none);\n margin: var(--0-spacer) var(--0-spacer);\n padding: var(--0-spacer) var(--0-spacer);\n & a {\n font-size: var(--s-font);\n }\n\n li:last-of-type a {\n padding-bottom: var(--s-spacer);\n }\n }\n\n & a {\n display: var(--block);\n overflow: var(--hidden);\n text-align: var(--center);\n position: var(--relative);\n }\n\n abbr {\n border-color: var(--gray-lightest);\n }\n}\n*/\nul[is=data-list] {\n margin: 0;\n padding: 0;\n list-style: none;\n}\nul[is=data-list] > li {\n margin-bottom: var(--m-spacer);\n border-radius: var(--3-px);\n border-style: var(--solid);\n border-width: var(--1-px);\n border-color: var(--key);\n padding: var(--xs-spacer);\n color: var(--key);\n text-align: var(--center);\n}\nul[is=data-list] > li span:nth-of-type(1) {\n font-weight: var(--bold-font);\n font-size: var(--s-font);\n}\nul[is=data-list] > li span:nth-of-type(2) {\n position: absolute;\n left: -9999px;\n}\nul[is=data-list] > li > ul {\n margin: 0;\n padding: 0;\n list-style: none;\n text-align: left;\n display: grid;\n grid-template-areas: \"c c\" \"min max\" \"meter meter\";\n}\nul[is=data-list] > li > ul > li:nth-of-type(1) {\n margin: var(--m-spacer);\n grid-area: c;\n font-weight: var(--bold-font);\n font-size: var(--l-font);\n text-align: var(--center);\n}\nul[is=data-list] > li > ul > li:nth-of-type(1):after {\n display: var(--inline-block);\n position: var(--relative);\n top: var(--icon-lift-spacer-2);\n margin-left: var(--s-spacer);\n}\nul[is=data-list] > li > ul > li:nth-of-type(1) > b {\n position: absolute;\n left: -9999px;\n}\nul[is=data-list] > li > ul > li:nth-of-type(2), ul[is=data-list] > li > ul > li:nth-of-type(3) {\n text-align: var(--center);\n font-size: var(--xs-font);\n}\nul[is=data-list] > li > ul > li:nth-of-type(2) {\n grid-area: min;\n}\nul[is=data-list] > li > ul > li:nth-of-type(3) {\n grid-area: max;\n}\nul[is=data-list] > li > ul > li:nth-of-type(4) {\n grid-area: meter;\n}\nul[is=data-list] > li > ul > li:nth-of-type(4) meter {\n display: block;\n width: 100%;\n -webkit-appearance: none;\n -moz-appearance: none;\n}\nul[is=data-list] > li[data-icon=hold] > ul > li:nth-of-type(1):after {\n content: var(--icon-hold);\n}\nul[is=data-list] > li[data-icon=increase] {\n color: var(--green);\n border-color: var(--green);\n}\nul[is=data-list] > li[data-icon=increase] > ul > li:nth-of-type(1):after {\n content: var(--icon-increase);\n}\nul[is=data-list] > li[data-icon=decrease] {\n color: var(--red);\n border-color: var(--red);\n}\nul[is=data-list] > li[data-icon=decrease] > ul > li:nth-of-type(1):after {\n content: var(--icon-decrease);\n}\n\n@media (prefers-reduced-motion: no-preference) {\n html {\n scroll-behavior: var(--smooth);\n }\n}\n@media (prefers-color-scheme: dark) {\n body {\n background: var(--gray-darkest);\n color: var(--gray-lightest);\n font-weight: var(--medium-font);\n }\n hr {\n border: 1px solid var(--gray-lightest);\n }\n a {\n color: var(--key-light);\n text-decoration-color: var(--key-light);\n font-weight: var(--x-bold-font);\n }\n a:hover {\n color: var(--gray-lightest);\n }\n [is=dateblock] p > time, b, strong {\n font-weight: var(--x-bold-font);\n }\n nav > ul a:after {\n border-top: var(--1-px) var(--solid) var(--gray-lightest);\n }\n main img,\n main iframe[src*=\"https://jsfiddle.net\"], article img,\n article iframe[src*=\"https://jsfiddle.net\"] {\n border: 3px solid var(--gray-lightest);\n }\n main details summary, article details summary {\n color: var(--key-light);\n }\n ul[is=data-list] > li[data-icon=hold] {\n border-color: var(--key-light);\n color: var(--key-light);\n }\n ul[is=data-list] > li[data-icon=increase] {\n color: var(--green-light);\n border-color: var(--green-light);\n }\n ul[is=data-list] > li[data-icon=decrease] {\n color: var(--red-light);\n border-color: var(--red-light);\n }\n kbd > kbd {\n border: var(--1-px) var(--solid) var(--gray-lightest);\n }\n}\ndiv[is=heading-wrapper] > a {\n text-decoration: none;\n}\n\n@media only screen and (min-width: 600px) {\n ul[is=data-list] {\n display: grid;\n gap: var(--m-spacer);\n grid-template-columns: repeat(3, 1fr);\n }\n ul[is=data-list] > li {\n margin-bottom: var(--0-spacer);\n }\n ul[is=data-list] > li:nth-of-type(3), ul[is=data-list] > li:nth-of-type(5) {\n grid-column-start: 1;\n }\n}\n.heading-permalink {\n display: var(--inline-block);\n margin-right: var(--2xs-spacer);\n}\n\n.notice {\n font-size: var(--xs-font);\n}\n\n/*# sourceMappingURL=file:///Users/alex/Public/joshbruce/site-joshbruce.com/src/assets/sass/styles.scss */",null,null,null,null,null,null,null,null,null]} \ No newline at end of file diff --git a/site-root/public/error-404.html b/site-root/public/error-404.html new file mode 100644 index 0000000..f14af10 --- /dev/null +++ b/site-root/public/error-404.html @@ -0,0 +1,104 @@ + + + + Page not found error + + + + + + +

404 : Page not found

+

Woh!

+

Not sure how to find that. Maybe start on the main page.

+

If this error persists, please contact Josh Bruce. + + + diff --git a/site-root/public/error-405.html b/site-root/public/error-405.html new file mode 100644 index 0000000..27b667c --- /dev/null +++ b/site-root/public/error-405.html @@ -0,0 +1,104 @@ + + + + Page not found error + + + + + + +

405 : Unsupported method

+

Woh!

+

Donʼt know how to handle that type of request, please try something else.

+

If this error persists, please contact Josh Bruce. + + + diff --git a/site-root/public/error-500.html b/site-root/public/error-500.html new file mode 100644 index 0000000..b8b6da1 --- /dev/null +++ b/site-root/public/error-500.html @@ -0,0 +1,104 @@ + + + + Server error + + + + + + +

500 : Internal server error

+

Not sure what happened here but weʼre pretty sure itʼs on us.

+

Please try again later.

+

If this error persists, please contact Josh Bruce. + + + diff --git a/site-root/public/index.html b/site-root/public/index.html new file mode 100644 index 0000000..65ab189 --- /dev/null +++ b/site-root/public/index.html @@ -0,0 +1,45 @@ + + + + Calling card for Josh Bruce + + + + + + + +

Josh Bruceʼs calling card site

+

Hi! Iʼm me. You are you.

+ +

Note: If itʼs not on this list, chances arenʼt it isnʼt me. If you find something you think is me, let me know via GitHub Discussions for this site or at one of the (active) accounts above. Iʼve been online for a while and might have lost track; itʼs like a treasure hunt!

+ + diff --git a/site-root/public/robots.txt b/site-root/public/robots.txt new file mode 100644 index 0000000..2b77c89 --- /dev/null +++ b/site-root/public/robots.txt @@ -0,0 +1,25 @@ +User-agent: * +Disallow: / + +User-agent: Bingbot +Disallow: + +User-agent: DuckDuckBot +Disallow: + +User-agent: Exabot +Disallow: + +User-agent: Googlebot +Disallow: + +User-agent: Googlebot-Image +Disallow: + +User-agent: ia_archiver +Disallow: + +User-agent: archive.org_bot +Disallow: + +Sitemap: https://joshbruce.com/sitemap.xml