html
{
  /* Background of website, surrounding blocks with actual content */
  --website-background: skyblue;

  /* Foreground and background for normal text areas, based on Angular material */
  --mat-sys-surface: white;
  --mat-sys-on-surface: #24292f;

  /* Hyperlinks (not all used) */
  --hyperlink-color: #0B57D0;
  --hyperlink-hover-color: #062b68;
  --hyperlink-visited-color: #220bd0;

  /* Popup messages, not used in eleventy project */
  --message-background: #FFFACD;
  --message-foreground: black;
  --message-border: darkgrey;

  /* Border around header, footers and content blocks */
  --frame-border: #0969da ;

  /* See-also block. (Note: Hyperlinks use standard colours.) */
  --seealso-footer: aliceblue ;

  /* Border of tiles in word ladder and chordle */
  --tile-border: #D3D6DA;

  /* On-Screen keyboard, not used in eleventy project  */
  --key-background: #D3D6DA;
  --key-background-hover: #E1E3E6;
  --key-text: black ;

  /* Markdown tables */
  --markdown-table-bg: white ;
  --markdown-table-alt-bg: #f6f8fa ;
  --markdown-table-border: gray ;

  --chord-table-title-bg: #e7f5fb ;

  /* Underline for h1 and h2 */
  --markdown-h1-border-bottom: gray;
  --markdown-h2-border-bottom: gray;

  /* Markdown block-quotes */
  --markdown-blockquote-text: #57606a;
  --markdown-blockquote-border: #b1bcc2;
  --markdown-blockquote-background: #e9edf0;

  /* note block */
  --markdown-note-text: #57606a;
  --markdown-note-border: #b1bcc2;
  --markdown-note-background: var(--mat-sys-surface);

  /* Definition block */
  --markdown-definition-text: #57606a;
  --markdown-definition-border: #cf7506;
  --markdown-definition-background: #faf3d3;

  /* Markdown preformat. It is not obvious where this might be used. */
  --markdown-preformat: #f6f8fa;

  /* Neighbours SVG diagram. Not used in eleventy project. */
  --neighbours-bg: white ;
  --neighbours-main-word-bg: lightcyan ;
  --neighbours-neighbour-bg: beige ;
  --neighbours-border: gray ;
  --neighbours-text: black ;

  /* Colours for tiles in word-ladder anc chordle */
  --green-correct: #6aaa64;
  --green-correct-border: DimGray;
  /* Not used at present. Inconsistent between word ladder and chordle. */
  --green-correct-fg: White;

  --yellow-close: #c9b458;
  --yellow-close-border: DimGray;
  --yellow-close-fg: White;

  --grey-incorrect: Gray;
  --grey-incorrect-border: DimGray;
  --grey-incorrect-fg: White;

  --red-unknown-word-text: crimson;
  --red-modified-on-help-page: red;

  /* Fretboard colors */
  --fretboard-string: var(--mat-sys-on-surface);
  --fretboard-fret: var(--mat-sys-on-surface);
  --fretboard-nut: #AAAAAA;
  --fretboard-marker-dot: lightgrey;
  --fretboard-mute: var(--mat-sys-on-surface);
  --fretboard-degree-background: var(--mat-sys-surface);
  --fretboard-degree: var(--mat-sys-on-surface);
  --fretboard-barre: #666666;

  /* Piano keyboard colors */
  --piano-degree: var(--mat-sys-on-surface);
  --piano-topline: var(--mat-sys-on-surface);
}

html.dark-theme
{
  --website-background: #1a789f;
  --mat-sys-surface: #0E1419;
  --mat-sys-on-surface: #DDE3E9;

  --hyperlink-color: #d3e3fc;
  --hyperlink-hover-color: #d3e3fc;
  --hyperlink-visited-color: #b2a8fa;

  --message-background: #800000;
  --message-foreground: white;
  --message-border: darkgrey;

  --frame-border: skyblue ;
  --seealso-footer: #121254 ;

  --tile-border: darkgrey;

  --key-background: #D3D6DA;
  --key-background-hover: #E1E3E6;
  --key-text: black ;

  --markdown-table-bg: #1e1e1e ;
  --markdown-table-alt-bg: #3a3a3a ;
  --markdown-table-border: #d0d7de ;
  --markdown-h1-border-bottom: #d7dde3 ;
  --markdown-h2-border-bottom: #d7dde3 ;
  --markdown-preformat: #3a3a3a;

  --chord-table-title-bg: #10485f ;

  /* Markdown block-quotes */
  /* I'm not sure about this. I think I might like it to jump out a bit more. */
  --markdown-blockquote-text: #e0e6eb;
  --markdown-blockquote-border: #7a8792;
  --markdown-blockquote-background: #1a1f23;

  /* note block */
  --markdown-note-text: #e0e6eb;
  --markdown-note-border: #7a8792;
  --markdown-note-background: var(--mat-sys-surface);

  /* Definition block – dark mode */
  --markdown-definition-text: #d6d6d6;
  --markdown-definition-border: #d28b36;
  --markdown-definition-background: #2b2418;

  --neighbours-bg: black ;
  --neighbours-main-word-bg: steelblue ;
  --neighbours-neighbour-bg: seagreen ;
  --neighbours-border: white ;
  --neighbours-text: white ;

  --green-correct: #6aaa64;
  --green-correct-border: darkgrey;
  --green-correct-fg: White;

  --yellow-close: #c9b458;
  --yellow-close-border: darkgrey;
  --yellow-close-fg: White;

  --grey-incorrect: Gray;
  --grey-incorrect-border: darkgrey;
  --grey-incorrect-fg: White;

  --red-unknown-word-text: crimson;
  --red-modified-on-help-page: red;

  /* Fretboard colors */
  --fretboard-string: var(--mat-sys-on-surface);
  --fretboard-fret: var(--mat-sys-on-surface);
  --fretboard-nut: #666666;
  --fretboard-marker-dot: #585858;
  --fretboard-mute: var(--mat-sys-on-surface);
  --fretboard-degree-background: var(--mat-sys-surface);
  --fretboard-degree: var(--mat-sys-on-surface);
  --fretboard-barre: #AAAAAA;

  /* Piano keyboard colors */
  --piano-degree: var(--mat-sys-on-surface);
  --piano-topline: var(--mat-sys-on-surface);
}

/* Logic for toggling between light and dark themed images (see also image-plugin) */
.theme-image .dark
{
  display: none;
}

/* This is not strictly necessary, but add some clarity */
.theme-image .light
{
  display: inline;
}

html.dark-theme .theme-image .light
{
  display: none;
}

html.dark-theme .theme-image .dark
{
  display: inline;
}

.bordered-image img,
img.bordered-image
{
  border: 1px solid var(--markdown-h1-border-bottom);
}

body
{
  -ms-text-size-adjust: 100%;
  -webkit-text-size-adjust: 100%;
  color: var(--mat-sys-on-surface);
  background-color: var(--website-background);
  font-family: Montserrat, Roboto, "Helvetica Neue", sans-serif;
  font-size: 16px;
  line-height: 1.5;
  word-wrap: break-word;
  /* border-width: 1px;
  border-style: solid;
  border-color: rgb(225, 228, 232); */
  min-width: 330px;
  /* max-width: 830px; */
  max-width: 1100px;
  width: 100%;
  box-sizing: border-box;
  /* padding: 32px; */
  margin: 0 auto;
  padding: 20px;
}

/* override the max-width for the home area (no longer true !) */
body.home
{
  max-width: 1100px;
  /* text-align: center; */
}

.bodyframe
{
  background-color: var(--mat-sys-surface);
  border: solid 1px var(--frame-border) ;
  /* border-width: 1px;
  border-style: solid;
  border-color: rgb(225, 228, 232); */
  padding: 0 32px 32px 32px;
}

@media screen and (max-width: 700px)
{
  body
  {
    padding: 10px;
  }

  .bodyframe
  {
    padding: 0 16px 32px 16px;
  }
}

.topbodyframe
{
  border: solid 1px var(--frame-border) ;
  padding: 0 32px;
  background-color: var(--mat-sys-surface);
  margin: 0 0 1rem;
}

/* body.home .bodyframe */
.bodyframe:has(.fluid-container),
.bodyframe:has(.topbodyframe)
{
  border-width: 0;
  padding: 0;
  background-color: inherit;
}

details, figcaption, figure
{
  display: block;
}

summary
{
  display: list-item;
}

[hidden]
{
  display: none !important;
}

a
{
  color: var(--hyperlink-color);
  text-decoration: none;
}

a:has(svg)
{
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}

abbr[title]
{
  border-bottom: none;
  text-decoration: underline dotted;
}

b, strong
{
  font-weight: 600;
}

dfn
{
  font-style: italic;
}

/* Special header at the top of the page, so that I can use # for section headings. */
h1.page-header
{
  margin: 0.67em 0;
  font-weight: 600;
  padding-bottom: 0.3em;
  font-size: 2.5em;
  border-bottom: 5px double var(--markdown-h1-border-bottom);
}

h1
{
  margin: 0.67em 0;
  font-weight: 600;
  padding-bottom: 0.3em;
  font-size: 2em;
  border-bottom: 1px solid var(--markdown-h1-border-bottom);
}

mark
{
  background-color: #fff8c5;
  color: #24292f;
}

small
{
  font-size: 90%;
}

sub, sup
{
  font-size: 75%;
  line-height: 0;
  position: relative;
  vertical-align: baseline;
}

sub
{
  bottom: -0.25em;
}

sup
{
  top: -0.5em;
}

img
{
  border-style: none;
  max-width: 100%;
  box-sizing: content-box;
  background-color: #fff;
}

code, kbd, pre, samp
{
  font-family: monospace;
  font-size: 1em;
}

figure
{
  margin: 1em 40px;
}

hr
{
  box-sizing: content-box;
  overflow: hidden;
  background: 0 0;
  border-bottom: 1px solid #d7dde3;
  height: 0.25em;
  padding: 0;
  margin: 24px 0;
  background-color: var(--markdown-h1-border-bottom);
  border: 0;
}

input
{
  font: inherit;
  margin: 0;
  overflow: visible;
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}

[type=button], [type=reset], [type=submit]
{
  -webkit-appearance: button;
}

[type=checkbox], [type=radio]
{
  box-sizing: border-box;
  padding: 0;
}

[type=number]::-webkit-inner-spin-button, [type=number]::-webkit-outer-spin-button
{
  height: auto;
}

[type=search]::-webkit-search-cancel-button, [type=search]::-webkit-search-decoration
{
  -webkit-appearance: none;
}

::-webkit-input-placeholder
{
  color: inherit;
  opacity: 0.54;
}

::-webkit-file-upload-button
{
  -webkit-appearance: button;
  font: inherit;
}

a:hover
{
  text-decoration: underline;
}

::placeholder
{
  color: #6e7781;
  opacity: 1;
}

hr::before
{
  display: table;
  content: "";
}

hr::after
{
  display: table;
  clear: both;
  content: "";
}

table
{
  border-spacing: 0;
  border-collapse: collapse;
  display: block;
  width: max-content;
  max-width: 100%;
  overflow: auto;
}

td, th
{
  padding: 0;
}

details summary
{
  cursor: pointer;
}

details:not([open]) > :not(summary)
{
  display: none !important;
}

[role=button]:focus, a:focus, input[type=checkbox]:focus, input[type=radio]:focus
{
  outline: 2px solid #0969da;
  outline-offset: -2px;
  box-shadow: none;
}

[role=button]:focus:not(:focus-visible), a:focus:not(:focus-visible), input[type=checkbox]:focus:not(:focus-visible), input[type=radio]:focus:not(:focus-visible)
{
  outline: solid 1px transparent;
}

[role=button]:focus-visible, a:focus-visible, input[type=checkbox]:focus-visible, input[type=radio]:focus-visible
{
  outline: 2px solid #0969da;
  outline-offset: -2px;
  box-shadow: none;
}

a:not([class]):focus, a:not([class]):focus-visible, input[type=checkbox]:focus, input[type=checkbox]:focus-visible, input[type=radio]:focus, input[type=radio]:focus-visible
{
  outline-offset: 0;
}

kbd
{
  display: inline-block;
  padding: 3px 5px;
  font: 11px ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
  line-height: 10px;
  color: #24292f;
  vertical-align: middle;
  background-color: #f6f8fa;
  border: solid 1px rgba(175, 184, 193, 0.2);
  border-bottom-color: rgba(175, 184, 193, 0.2);
  border-radius: 6px;
  box-shadow: inset 0 -1px 0 rgba(175, 184, 193, 0.2);
}

h1, h2, h3, h4, h5, h6
{
  margin-top: 24px;
  margin-bottom: 16px;
  font-weight: 600;
  line-height: 1.25;
}

h2
{
  font-weight: 600;
  padding-bottom: 0.3em;
  font-size: 1.5em;
  border-bottom: 1px solid var(--markdown-h2-border-bottom);
}

h3
{
  font-weight: 600;
  font-size: 1.25em;
}

/* Special rules at top of page */
header h1
{
  margin-top: 0px;
}

header h3
{
  margin-top: 0px;
}

h4
{
  font-weight: 600;
  font-size: 1em;
}

h5
{
  font-weight: 600;
  font-size: 0.875em;
}

h6
{
  font-weight: 600;
  font-size: 0.85em;
  color: #57606a;
}

p
{
  margin-top: 0;
  margin-bottom: 10px;
}

/* blockquote {
  margin: 0;
  padding: 0 1em;
  color: var(--markdown-blockquote-text);
  border-left: 0.25em solid var(--markdown-blockquote-border);
} */

blockquote
{
  /* width: 90%; */
  display: block;
  margin-top: 0;
  margin-bottom: 1rem;
  margin-left: 0;
  margin-right: 0;
  padding: 10px;
  border: 1px solid;
  border-left: 5px solid;
  border-radius: 2px;
  word-wrap: break-word;
  box-shadow: 3px 3px 7px 0 rgba(0,0,0,0.3) ;

  color: var(--markdown-blockquote-text);
  background-color: var(--markdown-blockquote-background);
  border-color: var(--markdown-blockquote-border);
}

ol, ul
{
  margin-top: 0;
  margin-bottom: 0;
  padding-left: 2em;
}

ol ol, ul ol
{
  list-style-type: lower-roman;
}

ol ol ol, ol ul ol, ul ol ol, ul ul ol
{
  list-style-type: lower-alpha;
}

dd
{
  margin-left: 0;
}

code, samp, tt
{
  font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
  font-size: 12px;
}

pre
{
  margin-top: 0;
  margin-bottom: 0;
  font-family: ui-monospace, SFMono-Regular, SF Mono, Menlo, Consolas, Liberation Mono, monospace;
  font-size: 12px;
  word-wrap: normal;
}

input::-webkit-inner-spin-button, input::-webkit-outer-spin-button
{
  margin: 0;
  -webkit-appearance: none;
  appearance: none;
}

markdown::before
{
  display: table;
  content: "";
}
markdown::after
{
  display: table;
  clear: both;
  content: "";
}
markdown > :first-child
{
  margin-top: 0 !important;
}
markdown > :last-child
{
  margin-bottom: 0 !important;
}

a:not([href])
{
  color: inherit;
  text-decoration: none;
}

.absent
{
  color: #cf222e;
}

.anchor
{
  float: left;
  padding-right: 4px;
  margin-left: -20px;
  line-height: 1;
}

.anchor:focus
{
  outline: 0;
}

blockquote, details, dl, ol, p, pre, table, ul, svg.piano-keyboard
{
  margin-top: 0;
  margin-bottom: 1rem;
}

blockquote > :first-child
{
  margin-top: 0;
}

blockquote > :last-child
{
  margin-bottom: 0;
}

h1:hover .anchor, h2:hover .anchor, h3:hover .anchor, h4:hover .anchor, h5:hover .anchor, h6:hover .anchor
{
  text-decoration: none;
}

h1 code, h1 tt, h2 code, h2 tt, h3 code, h3 tt, h4 code, h4 tt, h5 code, h5 tt, h6 code, h6 tt
{
  padding: 0 0.2em;
  font-size: inherit;
}

summary h1, summary h2, summary h3, summary h4, summary h5, summary h6
{
  display: inline-block;
}

summary h1 .anchor, summary h2 .anchor, summary h3 .anchor, summary h4 .anchor, summary h5 .anchor, summary h6 .anchor
{
  margin-left: -40px;
}

summary h1, summary h2
{
  padding-bottom: 0;
  border-bottom: 0;
}

ol.no-list, ul.no-list
{
  padding: 0;
  list-style-type: none;
}

ol[type=a]
{
  list-style-type: lower-alpha;
}

ol[type=A]
{
  list-style-type: upper-alpha;
}

ol[type=i]
{
  list-style-type: lower-roman;
}

ol[type=I]
{
  list-style-type: upper-roman;
}

ol[type="1"]
{
  list-style-type: decimal;
}

div > ol:not([type])
{
  list-style-type: decimal;
}

ol ol, ol ul, ul ol, ul ul
{
  margin-top: 0;
  margin-bottom: 0;
}

li > p
{
  margin-top: 16px;
}

li + li
{
  margin-top: 0.25em;
}

dl
{
  padding: 0;
}

dl dt
{
  padding: 0;
  margin-top: 16px;
  font-size: 1em;
  font-style: italic;
  font-weight: 600;
}

dl dd
{
  padding: 0 16px;
  margin-bottom: 16px;
}

table th
{
  font-weight: 600;
}

table td, table th
{
  padding: 6px 13px;
  border: 1px solid var(--markdown-table-border);
}

table tr
{
  background-color: var(--markdown-table-bg);
  /* border-top: 1px solid #d7dde3; */
}

table tr:nth-child(2n)
{
  background-color: var(--markdown-table-alt-bg);
}

table img
{
  background-color: transparent;
}

img[align=right]
{
  padding-left: 20px;
}

img[align=left]
{
  padding-right: 20px;
}

.emoji
{
  max-width: none;
  vertical-align: text-top;
  background-color: transparent;
}

span.frame
{
  display: block;
  overflow: hidden;
}

span.frame > span
{
  display: block;
  float: left;
  width: auto;
  padding: 7px;
  margin: 13px 0 0;
  overflow: hidden;
  border: 1px solid #d0d7de;
}

span.frame span img
{
  display: block;
  float: left;
}

span.frame span span
{
  display: block;
  padding: 5px 0 0;
  clear: both;
  color: #24292f;
}

span.align-center
{
  display: block;
  overflow: hidden;
  clear: both;
}

span.align-center > span
{
  display: block;
  margin: 13px auto 0;
  overflow: hidden;
  text-align: center;
}

span.align-center span img
{
  margin: 0 auto;
  text-align: center;
}

span.align-right
{
  display: block;
  overflow: hidden;
  clear: both;
}

span.align-right > span
{
  display: block;
  margin: 13px 0 0;
  overflow: hidden;
  text-align: right;
}

span.align-right span img
{
  margin: 0;
  text-align: right;
}

span.float-left
{
  display: block;
  float: left;
  margin-right: 13px;
  overflow: hidden;
}

span.float-left span
{
  margin: 13px 0 0;
}

span.float-right
{
  display: block;
  float: right;
  margin-left: 13px;
  overflow: hidden;
}

span.float-right > span
{
  display: block;
  margin: 13px auto 0;
  overflow: hidden;
  text-align: right;
}

code, tt
{
  padding: 0.2em 0.4em;
  margin: 0;
  font-size: 85%;
  white-space: break-spaces;
  background-color: rgba(175, 184, 193, 0.2);
  border-radius: 6px;
}

code br, tt br
{
  display: none;
}

del code
{
  text-decoration: inherit;
}

samp
{
  font-size: 85%;
}

pre code
{
  font-size: 100%;
}

pre > code
{
  padding: 0;
  margin: 0;
  word-break: normal;
  white-space: pre;
  background: 0 0;
  border: 0;
}

.highlight
{
  margin-bottom: 16px;
}

.highlight pre
{
  margin-bottom: 0;
  word-break: normal;
}

.highlight pre, pre
{
  padding: 16px;
  overflow: auto;
  font-size: 85%;
  line-height: 1.45;
  background-color: var(--markdown-preformat);
  border-radius: 6px;
}

pre code, pre tt
{
  display: inline;
  max-width: auto;
  padding: 0;
  margin: 0;
  overflow: visible;
  line-height: inherit;
  word-wrap: normal;
  background-color: transparent;
  border: 0;
}

.csv-data td, .csv-data th
{
  padding: 5px;
  overflow: hidden;
  font-size: 12px;
  line-height: 1;
  text-align: left;
  white-space: nowrap;
}

.csv-data .blob-num
{
  padding: 10px 8px 9px;
  text-align: right;
  background: #fff;
  border: 0;
}

.csv-data tr
{
  border-top: 0;
}

.csv-data th
{
  font-weight: 600;
  background: #f6f8fa;
  border-top: 0;
}

[data-footnote-ref]::before
{
  content: "[";
}

[data-footnote-ref]::after
{
  content: "]";
}

.footnotes
{
  font-size: 12px;
  color: #57606a;
  border-top: 1px solid #d0d7de;
}

.footnotes ol
{
  padding-left: 16px;
}

.footnotes ol ul
{
  display: inline-block;
  padding-left: 16px;
  margin-top: 16px;
}

.footnotes li
{
  position: relative;
}

.footnotes li:target::before
{
  position: absolute;
  top: -8px;
  right: -8px;
  bottom: -8px;
  left: -24px;
  pointer-events: none;
  content: "";
  border: 2px solid var(--frame-border);
  border-radius: 6px;
}

.footnotes li:target
{
  color: #24292f;
}

.footnotes .data-footnote-backref g-emoji
{
  font-family: monospace;
}

.pl-c
{
  color: #6e7781;
}

.pl-c1, .pl-s .pl-v
{
  color: #0550ae;
}

.pl-e, .pl-en
{
  color: #8250df;
}

.pl-s .pl-s1, .pl-smi
{
  color: #24292f;
}

.pl-ent
{
  color: #116329;
}

.pl-k
{
  color: #cf222e;
}

.pl-pds, .pl-s, .pl-s .pl-pse .pl-s1, .pl-sr, .pl-sr .pl-cce, .pl-sr .pl-sra, .pl-sr .pl-sre
{
  color: #0a3069;
}

.pl-smw, .pl-v
{
  color: #953800;
}

.pl-bu
{
  color: #82071e;
}

.pl-ii
{
  color: #f6f8fa;
  background-color: #82071e;
}

.pl-c2
{
  color: #f6f8fa;
  background-color: #cf222e;
}

.pl-sr .pl-cce
{
  font-weight: 700;
  color: #116329;
}

.pl-ml
{
  color: #3b2300;
}

.pl-mh, .pl-mh .pl-en, .pl-ms
{
  font-weight: 700;
  color: #0550ae;
}

.pl-mi
{
  font-style: italic;
  color: #24292f;
}

.pl-mb
{
  font-weight: 700;
  color: #24292f;
}

.pl-md
{
  color: #82071e;
  background-color: #ffebe9;
}

.pl-mi1
{
  color: #116329;
  background-color: #dafbe1;
}

.pl-mc
{
  color: #953800;
  background-color: #ffd8b5;
}

.pl-mi2
{
  color: #eaeef2;
  background-color: #0550ae;
}

.pl-mdr
{
  font-weight: 700;
  color: #8250df;
}

.pl-ba
{
  color: #57606a;
}

.pl-sg
{
  color: #8c959f;
}

.pl-corl
{
  text-decoration: underline;
  color: #0a3069;
}

g-emoji
{
  display: inline-block;
  min-width: 1ch;
  font-family: "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol";
  font-size: 1em;
  font-style: normal !important;
  font-weight: 400;
  line-height: 1;
  vertical-align: -0.075em;
}

g-emoji img
{
  width: 1em;
  height: 1em;
}

.task-list-item
{
  list-style-type: none;
}

.task-list-item label
{
  font-weight: 400;
}

.task-list-item.enabled label
{
  cursor: pointer;
}

.task-list-item + .task-list-item
{
  margin-top: 4px;
}

.task-list-item .handle
{
  display: none;
}

.task-list-item-checkbox
{
  margin: 0 0.2em 0.25em -1.4em;
  vertical-align: middle;
}

.contains-task-list:dir(rtl) .task-list-item-checkbox
{
  margin: 0 -1.6em 0.25em 0.2em;
}

.contains-task-list
{
  position: relative;
}

.contains-task-list:focus-within .task-list-item-convert-container, .contains-task-list:hover .task-list-item-convert-container
{
  display: block;
  width: auto;
  height: 24px;
  overflow: visible;
  clip: auto;
}

::-webkit-calendar-picker-indicator
{
  filter: invert(50%);
}

.ladder
{
  margin-bottom: 10px;
}

.row
{
  display: flex;
  flex-direction: row;
}

.tile
{
  display: flex;
  justify-content: center;
  align-items: center;
  border: 2px solid var(--tile-border);
  border-radius: 5px;
  height: 40px;
  width: 40px;
  margin: 4px;
  color: var(--mat-sys-on-surface);
  font-weight: 700;
  font-size: 2rem;
}

.chord-tile
{
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  border: 2px solid var(--tile-border);
  border-radius: 5px;
  height: 60px;
  width: 60px;
  margin: 4px;
  color: var(--mat-sys-on-surface);
  font-weight: 700;
  font-size: 1.5rem;
  padding: 4px;
}

.correct-in-game
{
  background-color: var(--green-correct);
  border: 2px solid var(--green-correct-border);
}

.line
{
  border-top: 2px solid var(--mat-sys-on-surface);
  width: 100%;
}

.correct
{
  background-color: var(--green-correct);
  border: 2px solid var(--green-correct-border);
  color: White;
}

.tile.correct
{
  background-color: var(--green-correct);
  border: 2px solid var(--green-correct-border);
  color: black;
}

.chord-tile.correct
{
  background-color: var(--green-correct);
  border: 2px solid var(--green-correct-border);
  color: White;
}

.close
{
  background-color: var(--yellow-close);
  border: 2px solid var(--yellow-close-border);
  color: var(--yellow-close-fg);
}

.incorrect
{
  background-color: var(--grey-incorrect);
  border: 2px solid var(--grey-incorrect-border);
  color: var(--grey-incorrect-fg);
}

.changed,
.changed.correct,
.tile.changed
{
  color: var(--red-modified-on-help-page);
}

.invalid-word
{
  color: var(--red-unknown-word-text);
}

.vowel
{
  /* compromise color, which I don't change between dark and light mode */
  background-color: goldenrod;
}

.explanation
{
  display: flex;
  margin-left: 5px;
  align-items: center;
}

.start-page-buttons
{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem;

  margin-top: 0px;
  margin-bottom: 1rem;
}

@media screen and (max-width: 500px)
{
  .start-page-buttons
  {
    grid-template-columns: repeat(1, 1fr);
  }
}

.four-buttons
{
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1rem;

  margin-top: 1rem;
  margin-bottom: 1rem;
}

.three-buttons
{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;

  margin-top: 1rem;
  margin-bottom: 1rem;
}

@media screen and (max-width: 500px)
{
  .three-buttons
  {
    grid-template-columns: repeat(1, 1fr);
  }
}

.two-buttons
{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem;

  margin-top: 1rem;
  margin-bottom: 1rem;
}

.one-button
{
  display: grid;
  grid-template-columns: repeat(1, 1fr);
  gap: 1rem;

  margin-top: 1rem;
  margin-bottom: 1rem;
}

.button-column
{
  display: flex;
  flex-direction: column;
  gap: 1rem;
  margin: 0 1rem 1rem;
  /* align-items: center; */
}

.three-in-a-row,
.three-in-a-row-v2
{
  display: grid;
  /* grid-template-columns: repeat(1, 1fr); */
  gap: 1rem;
  margin: 0;
  justify-items: center;
}

.three-in-a-row
{
  grid-template-columns: repeat(1, 1fr);
}

.three-in-a-row-v2
{
  grid-template-columns: repeat(3, 1fr);
}

.start-page-buttons .start-page-button,
.four-buttons .start-page-button,
.three-buttons .start-page-button,
.two-buttons .start-page-button,
.one-button .start-page-button,
.button-column .start-page-button,
.three-in-a-row .start-page-button,
.three-in-a-row-v2 .start-page-button,
.start-page-button.homepage-button
{
  flex-grow: 1;
  min-width: 0;
  height: auto;
  padding: 1rem;
  background-color: #6aaa64;
  color: white;
  font-weight: 500;
  font-size: 1.2rem;
  border-radius: 4px;
  border: none;
  display: inline-flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  line-height: inherit;
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
  user-select: none;
  text-decoration: none;

  transition: background-color 0.3s, color 0.3s;
  &:hover
  {
    background-color: #2980b9; /* New background color on hover */
    color: #eee; /* New text color on hover */
  }
}

.start-page-buttons button[mat-raised-button][disabled]
{
  background-color: #cccccc;
  color: #888888;
  cursor: not-allowed;
}

.start-page-button.homepage-button
{
  width: 13rem;
  align-self: center;
  margin-bottom: 1rem;
}

.start-page-button.homepage-button > :last-child
{
  margin-bottom: 0;
}

.start-page-button.homepage-button.abc-button
{
  width: 100%;
  max-width: 13rem;
  height: 8rem;
  box-sizing: border-box;
}

/* Is this used??? */
.header
{
  text-align: center;
  border: solid 1px var(--frame-border) ;
  margin-bottom: 1rem;
  padding: 1.5rem 0;
  background-color: white;
}

header.website
{
  background-color: var(--mat-sys-surface);
  display: flex;
  flex-direction: column;
  position: relative;
  text-align: center;
  border: solid 1px var(--frame-border) ;
  margin-bottom: 1rem;
  padding: 1.5rem 0;
}

header.website a
{
  flex: 1;
  display: block;
  margin: 0;
  font-weight: 600;
  font-size: 2rem;
  color: inherit;
  text-decoration: none;
}

header.website p
{
  display: block;
  margin: 0;
  font-weight: 400;
  font-size: 4rem;
  color: inherit;
  text-decoration: none;
}

h1 a,
h1 a:hover
{
  color: inherit;
  text-decoration: none;
}

@media screen and (max-width: 500px)
{
  header.website a
  {
    font-size: 1.5rem;
  }

  header.website p
  {
    font-size: 3rem;
  }
}

/* Light/Dark toggle button */
#theme-toggle
{
  position: absolute;
  width: 4rem;
  height: 4rem;
  left: 0rem;
  top: 0rem;

  /* vertically center the button */
  /*
  top: 50%;
  transform: translateY(-50%);
  */
  background: transparent;
  color: var(--mat-sys-on-surface);
  border: none;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  padding: 0;
}

.footer
{
  display: flex;
  justify-content: space-between;
  background-color: #333333;
  color: #ffffff;
  padding: 10px;
  margin-top: 1rem;
}

.footer-link
{
  text-decoration: none;
  color: #ffffff;
}

.footer2
{
  display: flex;
  justify-content: space-between;
  padding: 10px;
  border: solid 1px var(--frame-border) ;
  background-color: var(--mat-sys-surface);
}

.footer2-link
{
  text-decoration: none;
}

/* For word list */
.outer-box
{
  border-width:2px;
  border-style:solid;
  border-color:black;
  font-family: "Gill Sans", sans-serif;
}

.outer-box h1
{
  margin: 0.5rem 0;
  border: 0;
  padding: 0;
}

.title-box
{
  padding: 1rem;
}

.inner-box
{
  padding: 1rem;
  border-width: 0px;
  border-top-width: 2px;
  border-style:solid;
  border-color:black;
}

.inner-box h3
{
  margin-block-end: 0 ;
}

.inner-box h2
{
  margin-block-end: 0 ;
  margin: 0;
  border: 0;
  padding: 0;
  line-height: 1.5;
}

.mat-grid-list
{
    display: block;
    position: relative;
}

.mat-grid-tile
{
    display: block;
    position: absolute;
    overflow: hidden;
}

.mat-grid-tile-content
{
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    position: absolute;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    padding: 0;
    margin: 0;
}

/* see-also-footer is the frame around the "see also" footers */
.see-also-footer
{
  background-color: var(--seealso-footer) ;
  padding: 10px;
  margin-top: 2rem;
  border: solid 1px var(--frame-border) ;
}

.see-also-footer h3
{
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
  /* margin-top: 0;
  margin-bottom: 0; */
}

.see-also-footer mat-grid-tile a
{
  width: 100% ;
  display: flex ;
  align-items: center ;
  gap: 0.5rem;
}

.see-also-footer mat-grid-tile button
{
  width: 100% ;
  display: flex ;
  align-items: center ;
  gap: 0.5rem;
  margin-right: 0.5rem;
}

/* link-grid is for the links in the "see also" footers */
.link-grid
{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem 1rem; /* row gap / column gap */
  margin-top: 8px;
}

@media screen and (max-width: 500px)
{
  .link-grid
  {
    grid-template-columns: repeat(1, 1fr);
  }
}

.link-grid a
{
  display: flex;
  align-items: center;
  gap: 0.5rem;
}

.link-columns
{
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1rem 1rem; /* row gap / column gap */
}

@media screen and (max-width: 500px)
{
  .link-columns
  {
    grid-template-columns: repeat(1, 1fr);
  }
}

.link-column
{
  display: flex;
  flex-direction: column;
  gap: 0.5rem;
}

.link-column a
{
  display: flex;
  align-items: center;
  gap: 0.5rem;
}



/* Experimental, based on solved-dialog.component.scss in the chordle project */
.fluid-container
{
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;

  /* margin: 0 1rem 0.5rem; */
  margin: 0 0 1rem;
}

.fluid-container .fluid-box
{
  flex-grow: 1;
  min-width: 0;
  height: auto;
  padding: 0;
  font-weight: 500;
  font-size: 1.2rem;

  text-align: center;
  border: solid 1px var(--frame-border) ;
  background-color: var(--mat-sys-surface);
}

@media screen and (max-width: 900px)
{
  .fluid-container
  {
    grid-template-columns: repeat(2, 1fr);
  }

  .fluid-container .fluid-box:nth-child(3n)
  {
    grid-column: span 2;
  }

  .three-in-a-row
  {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media screen and (max-width: 600px)
{
  .fluid-container
  {
    grid-template-columns: repeat(1, 1fr);
  }
  .fluid-container .fluid-box:nth-child(3n)
  {
    grid-column: span 1;
  }

  .three-in-a-row,
  .three-in-a-row-v2
  {
    grid-template-columns: repeat(1, 1fr);
  }
}

.fluid-container .fluid-box .ladder,
.fluid-container .fluid-box .chordle
{
  margin: 0 auto;
  display: inline-block;
}

/* .fluid-container .fluid-box .ladder .row
{
  margin: 0 auto;
  display: inline-block;
} */

.eight-button-toolbar
{
  display: grid;
  grid-template-columns: repeat(8, 1fr);
  /* gap: 0.2em;
  margin-top: 0.5em;
  margin-bottom: 0.5em; */
  margin-bottom: 1rem;
}

/* Determiend experimentally, so that the "Word Ladder" doesn't wrap around */
@media screen and (max-width: 1050px)
{
  .eight-button-toolbar
  {
    grid-template-columns: repeat(4, 1fr);
  }
}

/* Determiend experimentally, so that the "Word Ladder" doesn't wrap around */
@media screen and (max-width: 600px)
{
  .eight-button-toolbar
  {
    grid-template-columns: repeat(2, 1fr);
  }
}

.eight-button-toolbar a
{
  display: flex;
  height: 6em;
  flex-direction: column;
  justify-content: center; /* horizontal centering */
  align-items: center;     /* vertical centering */
  text-decoration: none;   /* optional, keeps links looking like buttons */
  border: solid 1px var(--frame-border) ;
  /* border-radius: 0.5em; */
  margin: 0;
  background-color: var(--mat-sys-surface);
  color: var(--mat-sys-on-surface);
}

.play-text
{
  font-size: 1.4em;
  margin: 0 ;
}

/* .eight-button-toolbar a svg
{
  transform-origin: center center !important;
  padding: 0.3em;
} */


svg
{
  max-width: 100%;
  /* Override height specified in piano-plugin. If the height is spedified, the piano-plugin calculates the width as well, so this works quite well. */
  height: auto;
}

.play-chordle-container
{
  display: flex;
  flex-direction: column;
  height: 100%;
}

.play-chordle-top-bottom
{
  font-size: 1em;
  margin: 0 ;
  text-align: center;
}

.play-chordle-middle
{
  flex: 1 1 auto;       /* expand to fill remaining space */
  min-height: 0;        /* CRITICAL: allow flex item to shrink */
  overflow: hidden;     /* optional: prevents SVG from overflowing */
}

.play-chordle-middle svg
{
  max-width: 100%;
  height: 100%;
}


.fluid-table-2-column,
.fluid-table-3-column,
.fluid-table-2-3-column,
.fluid-table-n-3-column
{
  display: grid;

  /* Use gap to create the border effect */
  gap: 1px;
  background-color: var(--markdown-table-border);
  border: 1px solid var(--markdown-table-border);

  margin: 0 0 1rem;
}

.fluid-table-2-column
{
  grid-template-columns: 1fr 3fr;
}

.fluid-table-2-column.ratio-1-2
{
  grid-template-columns: 1fr 2fr;
}

.fluid-table-3-column,
.fluid-table-2-3-column,
.fluid-table-n-3-column
{
  grid-template-columns: 1fr 1.5fr 1.5fr;
}

.fluid-table-cell
{
  background-color: var(--markdown-table-bg);
  padding: 6px 13px;
}

.span-2
{
  grid-column: span 2;
}

.span-3
{
  grid-column: span 3;
}

@media screen and (max-width: 600px)
{
  .fluid-table-2-column,
  .fluid-table-2-column.ratio-1-2
  {
    grid-template-columns: 1fr;
  }
}

@media screen and (max-width: 900px)
{
  .fluid-table-3-column
  {
    grid-template-columns: 1fr;
  }
}

.fluid-table-2-column .fluid-table-cell:nth-child(4n+3),
.fluid-table-2-column .fluid-table-cell:nth-child(4n+4)
{
  background-color: var(--markdown-table-alt-bg);
}

/* Give alternate rows a different background colour.
   This fails if you use the "span-2" class in one of the cells.
   I this case, use the class "fluid-table-n-3-column" instead of "fluid-table-3-column" to
   suppress this logic.
   Alternatively, use "fluid-table-2-3-column", see below.
*/
.fluid-table-3-column .fluid-table-cell:nth-child(6n+4),
.fluid-table-3-column .fluid-table-cell:nth-child(6n+5),
.fluid-table-3-column .fluid-table-cell:nth-child(6n+6)
{
  background-color: var(--markdown-table-alt-bg);
}

/* Give alternate rows a different background colour.
   Use the class "fluid-table-2-3-column" only in the special case that the
   first row has 2 columns and the remaining rows have three.
*/
.fluid-table-2-3-column .fluid-table-cell:nth-child(6n+3),
.fluid-table-2-3-column .fluid-table-cell:nth-child(6n+4),
.fluid-table-2-3-column .fluid-table-cell:nth-child(6n+5)
{
  background-color: var(--markdown-table-alt-bg);
}

/* .fluid-table-cell .chord-tile */
.fluid-table-3-column .chord-tile
{
  width: 40px;
  height: 40px;
}

.chord-table-4-column
{
  display: grid;
  grid-template-columns: 3fr 2fr 3fr 5fr ;

  /* Use gap to create the border effect */
  gap: 1px;
  background-color: var(--markdown-table-border);
  border: 1px solid var(--markdown-table-border);

  margin: 0 0 1rem;
}

.chord-table-4-column .chord-table-cell:nth-child(8n+5),
.chord-table-4-column .chord-table-cell:nth-child(8n+6),
.chord-table-4-column .chord-table-cell:nth-child(8n+7),
.chord-table-4-column .chord-table-cell:nth-child(8n+8)
{
  background-color: var(--markdown-table-alt-bg);
}

.chord-table-cell
{
  background-color: var(--markdown-table-bg);
  padding: 6px 13px;
}

.chord-table-cell.title-cell
{
  font-weight: 600;
  background-color: var(--chord-table-title-bg);
}

.chord-table-cell ul,
.chord-table-cell ol
{
  padding-left: 1em;
}

@media screen and (max-width: 700px)
{
  .chord-table-4-column
  {
    grid-template-columns: 3fr 5fr;
  }

  .chord-table-cell
  {
    padding: 6px 6px;
  }
}

.logo-box,
.logo-box-2
{
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
}

.logo-box
{
  zoom: 0.18;
}

.logo-box-2
{
  zoom: 0.36;
  margin: 4rem 0;
}

.logo-box-2 a
{
  text-decoration: none;
}

.logo-box-2 .ladder,
.logo-box-2 .chordle
{
  margin: 0 auto;
  display: inline-block;
}


.logo-title
{
  font-size: 6rem ;
  font-weight: 700 ;
  line-height: 8rem ;
  text-align: center;
  color: var(--mat-sys-on-surface);
}

.logo-box .chord-tile,
.logo-box .tile,
.logo-box-2 .chord-tile,
.logo-box-2 .tile
{
  height: 60px;
  width: 60px;
  padding: 4px;
}

.startpage-chordle-grid
{
  display: flex;
  flex-direction: column;
  width: 200px;
  margin-bottom: 1rem;
}

.startpage-chordle-grid .chord-tile,
.startpage-chordle-grid2 .chord-tile
{
  aspect-ratio: 1 / 1;
  /* flex: 1 1 0;
  width: 100%;
  min-width: 0; */
  height: auto !important;
}

.startpage-chordle-grid .piano-keyboard
{
  /* margin: 0px 4px 0px 4px;
  display: block;
  width: calc(100% - 8px); */

  flex: 0 0 auto;
  margin: 0 4px;
  width: auto;
  max-width: 100%;
}

.startpage-chordle-grid2
{
  display: flex;
  flex-direction: row;
  margin-bottom: 1rem;
}

.startpage-chordle-grid2 .chordle
{
  width: 200px;
  /* flex: 1 1 200px; */
}

/* .startpage-chordle-grid2 .fretboard
{
  flex: 1 1 170px;
} */

@media screen and (max-width: 500px)
{
  .startpage-chordle-grid2 .chordle
  {
    width: 150px;
  }
}

.definition-box,
.note
{
  /* width: 90%; */
  display: block;
  margin-top: 1rem;
  margin-bottom: 2rem;
  padding: 10px;
  border: 1px solid;
  border-left: 5px solid;
  border-radius: 2px;
  word-wrap: break-word;
  box-shadow: 3px 3px 7px 0 rgba(0,0,0,0.3) ;
}

.definition-box
{
  color: var(--markdown-definition-text);
  background-color: var(--markdown-definition-background);
  border-color: var(--markdown-definition-border);
}

.note
{
  color: var(--markdown-note-text);
  background-color: var(--markdown-note-background);
  border-color: var(--markdown-note-border);
}

.definition-term
{
  font-weight: 600;
  font-size: 1.3rem;
  color: var(--accent-color);
  margin-bottom: 0.25rem;
}

.definition-content
{
  font-style: italic;
  /* color: var(--markdown-text-color); */
}

.definition-content > :first-child
{
  margin-top: 0;
}

.definition-content > :last-child
{
  margin-bottom: 0;
}

/* Navigation bar styles */
.topnav
{
  border-bottom: 1px solid var(--markdown-table-border);
  background: var(--mat-sys-surface);
}

.topnav-menu
{
  display: flex;
  /* gap: 1.5rem; */
  list-style: none;
  margin: 0;
  padding: 0;
}

.topnav-menu li + li,
.topnav-menu li
{
  border: solid 1px var(--frame-border) ;
  /* outline: 1px dashed red; */
  flex: 1;
  margin: 0;
  padding: 0;
}

.topnav-item
{
  position: relative;
}

.topnav-button
{
  width: 100%;             /* fill its li */
  padding: 0.75rem 0.25rem;
  border: none;
  background: transparent;
  font-size: 1.5rem;
  font-weight: 500;
  cursor: pointer;
  color: inherit;
  white-space: nowrap;
}

@media screen and (max-width: 400px)
{
  .topnav-button .label
  {
    /* Effectively overrides white-space: nowrap; on the button */
    display: block;
  }
}

.dropdown
{
  position: absolute;
  top: 100%;
  left: -1px;
  min-width: 12rem;
  max-width: 60vw;
  width: max-content;
  background: var(--mat-sys-surface);
  border: 1px solid var(--frame-border);
  border-radius: 4px;
  /* padding: 0.5rem 0; */
  padding: 0;
  list-style: none;
  z-index: 1000;
}

.dropdown-right
{
  right: -1px;
  left: auto;
}

.dropdown li a
{
  display: block;
  padding: 0.4rem 1rem;
  text-decoration: none;
}

.dropdown li a:has(svg)
{
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  padding: 0.4rem 1rem;
  min-height: 2.4rem;
}

.dropdown li a:hover
{
  background: rgba(0,0,0,0.05);
}

/* Double sharp style for music notation. Without this, the symbol is tiny! */
.double-sharp
{
  font-size: 2em;
  vertical-align: -0.3em;
  /* line-height: 0.5em; */
  /* line-height: 1; */
  line-height: 0;
}



/* Copied from
   https://discourse.joplinapp.org/t/share-your-css/1730/93?page=5
   I probably won't use them diretly, but I make copy the ideas.
*/
b-gray, b-green, b-red, b-blue, b-orange, b-pink, b-purple
{
    /* width: 90%; */
    display: block;
    margin-left: 20px;
    padding: 10px;
    border: 1px solid;
    border-left: 5px solid;
    border-radius: 2px;
    word-wrap: break-word;
    box-shadow: 3px 3px 7px 0 rgba(0,0,0,0.3) ;
}


b-gray
{
    border-color: #b1bcc2;
    background-color: #e9edf0;
 }

b-green
{
    border-color: #5fa04e;
    background-color: #c5e5b4;
}


b-red
{
    border-color: #f65354;
    background-color: #fad3d4;
}

b-blue
{
    border-color: #229ade;
    background-color: #bbe5fb;
}

b-orange
{
    border-color: #cf7506;
    background-color: #faf3d3;
}


b-purple
{
    border-color: #af74e8;
    background-color: #ead9fb;
}

b-pink
{
    border-color: #ed5393;
    background-color: #fad3e5;
}

.ladder .row.animated
{
  display: none ;
}

.ladder .row.animated.show,
.ladder .row.animated.first-animated
{
  display: flex;
}

.row.animated .letter
{
  display: none ;
}

.row.animated .letter.show
{
  display: block ;
}

.animated-game .chord-tile
{
  padding: 0;
  width: 40px;
  height: 40px;
  font-size: 1.1rem;
  line-height: 1.2rem;
}

.chord-symbol
{
  display: none ;
}

.chord-symbol.show
{
  display: flex;
  align-items: center;
  padding-left: 1rem;
  font-size: 1.2rem;
  font-weight: 500;
}

.heros-panel
{
  min-height: 520px;
  position: relative;
  overflow: hidden;
  width: 100%;
}

.hero-panel
{
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  transition: transform 1s ease;
}

/* start with all panels to the right */
.hero-panel
{
  transform: translateX(100%);
}

/* the visible one */
.hero-panel.active
{
  transform: translateX(0%);
}

/* slide-out-left for previous panel */
.hero-panel.exit-left
{
  transform: translateX(-100%);
}

/* reset to the right hand side with no transition */
.hero-panel.reset-right
{
  transform: translateX(100%);
  transition: none;
}

.animated-game
{
  height: 310px;
}
