/*! Neo's Normalize https://neos21.net */

/* 
 * - サンセリフ (ゴシック体)
 *      1. 英字   … Mac     iOS         … -apple-system, BlinkMacSystemFont,
 *      2. 英字   … Mac     iOS         … "Helvetica Neue",
 *      3. 英字   … Mac Win iOS Android … Helvetica, Arial,
 *      4. 和英   … Mac     iOS         … "Hiragino Sans", "Hiragino Kaku Gothic ProN",
 *      5. 和英   … Mac Win     [Linux] … "Noto Sans JP", "Noto Sans CJK JP",
 *      6. 和英   …     Win             … Meiryo,
 *      7. 全般   …                     … sans-serif,
 *      8. 絵文字 … Mac     iOS         … "Apple Color Emoji",
 *      9. 絵文字 …     Win             … "Segoe UI Emoji", "Segoe UI Symbol",
 *     10. 絵文字 …             Android … "Noto Color Emoji"
 * - セリフ (明朝体)
 *      1. 英字   … Mac Win iOS Android … Georgia, (= Noto Serif on Android)
 *      2. 和英   … Mac Win             … YuMincho, "Yu Mincho",
 *      3. 和英   … Mac Win     [Linux] … "Noto Serif JP", "Noto Serif CJK JP", 
 *      4. 和英   … Mac     iOS         … "Hiragino Mincho ProN",
 *      5. 和英   …     Win             … "HGS明朝E",
 *      6. 全般   …                     … serif
 * - モノスペース (等幅)
 *      1. 和英   … Mac Win     [Linux] … "Noto Sans CJK JP",
 *      2. 和英   … Mac                 … Osaka-mono,
 *      3. 和英   …     Win             … "MS Gothic",
 *      4. 英字   … Mac     iOS         … Menlo,
 *      5. 英字   …     Win             … Consolas,
 *      6. 英字   … Mac Win iOS Android … Courier, "Courier New",
 *      7. 全般   …                     … monospace
 */

/* Yu Gothic : Windows Full Name → Windows PostScript Name */
@font-face {
  font-family: "Yu Gothic";
  src: local("Yu Gothic Medium"), local("YuGothic-Medium");
}

@font-face {
  font-family: "Yu Gothic";
  src: local("Yu Gothic Bold"), local("YuGothic-Bold");
  font-weight: bold;
}

:root {
  --nn-ratio-1: 1.35;
  --nn-ratio-2: calc(var(--nn-ratio-1) * var(--nn-ratio-1));
  --nn-ratio-4: calc(var(--nn-ratio-2) * var(--nn-ratio-2));
  --nn-ratio-8: calc(var(--nn-ratio-4) * var(--nn-ratio-4));
  
  --nn-space-default: calc(1rem * var(--nn-ratio-2));
  --nn-space-small  : calc(var(--nn-space-default) / var(--nn-ratio-2));
  --nn-space-large  : calc(var(--nn-space-default) * var(--nn-ratio-4));
  --nn-space-tiny   : calc(var(--nn-space-small) / var(--nn-ratio-2));
  --nn-space-huge   : calc(var(--nn-space-large) * var(--nn-ratio-4));
  
  --nn-space-indent-default: 1.85rem;
  
  --nn-font-family-sans-serif: -apple-system, BlinkMacSystemFont, "Helvetica Neue", Helvetica, Arial, "Hiragino Sans", "Hiragino Kaku Gothic ProN", "Noto Sans JP", "Noto Sans CJK JP", Meiryo, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  --nn-font-family-monospace: "Noto Sans Mono CJK JP", Osaka-mono, "MS Gothic", Menlo, Consolas, Courier, "Courier New", monospace, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  --nn-font-family-serif: Georgia, YuMincho, "Yu Mincho", "Noto Serif JP", "Noto Serif CJK JP", "Hiragino Mincho ProN", "HGS明朝E", serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";
  
  --nn-border-radius-default: 4px;
  
  --nn-font-size-small: .86rem;
}
:root, :root[data-theme="light"] {
  --nn-colour-grey-100             : #f6f7f8;
  --nn-colour-grey-200             : #e9ecef;
  --nn-colour-grey-300             : #dee2e6;
  --nn-colour-grey-400             : #ced4da;
  --nn-colour-grey-500             : #adb5bd;
  --nn-colour-grey-600             : #6c757d;
  --nn-colour-grey-700             : #495057;
  --nn-colour-grey-800             : #343a40;
  --nn-colour-grey-900             : #212529;
  --nn-colour-black                : #000000;
  --nn-colour-grey                 : #808080;
  --nn-colour-white                : #ffffff;
  --nn-colour-blue                 : #0070ff;
  --nn-colour-purple               : #6610f3;
  --nn-colour-pink                 : #ff0099;
  --nn-colour-red                  : #f90010;
  --nn-colour-orange               : #fd6f00;
  --nn-colour-yellow               : #f6a300;
  --nn-colour-green                : #009940;
  --nn-colour-teal                 : #009088;
  --nn-colour-cyan                 : #00d0f0;
  --nn-colour-base                 : #222324;
  --nn-colour-background           : #ffffff;
  --nn-colour-blockquote-border    : #66ddaa;
  --nn-colour-blockquote-background: #ddffee;
  --nn-colour-pre-background               : var(--nn-colour-grey-100);
  --nn-colour-th-background                : var(--nn-colour-grey-100);
  --nn-colour-td-background                : var(--nn-colour-white);
  --nn-colour-code-span-border             : var(--nn-colour-grey-400);
  --nn-colour-code-span-background         : var(--nn-colour-grey-100);
  --nn-colour-form-control-background      : var(--nn-colour-grey-100);
  --nn-colour-form-control-background-hover: var(--nn-colour-grey-200);
  --nn-colour-form-control-background-focus: var(--nn-colour-grey-300);
}
:root[data-theme="dark"] {
  --nn-colour-blue                 : #40a6ff;
  --nn-colour-green                : #00bb50;
  --nn-colour-base                 : #ffffff;
  --nn-colour-background           : #001020;
  --nn-colour-blockquote-background: #003c10;
  --nn-colour-pre-background               : var(--nn-colour-black);
  --nn-colour-th-background                : var(--nn-colour-black);
  --nn-colour-td-background                : var(--nn-colour-grey-800);
  --nn-colour-code-span-border             : var(--nn-colour-grey-600);
  --nn-colour-code-span-background         : var(--nn-colour-grey-800);
  --nn-colour-form-control-background      : var(--nn-colour-grey-800);
  --nn-colour-form-control-background-hover: var(--nn-colour-grey-700);
  --nn-colour-form-control-background-focus: var(--nn-colour-grey-600);
}
@media (prefers-color-scheme: dark) {
  :root {
    --nn-colour-blue                 : #40a6ff;
    --nn-colour-green                : #00bb50;
    --nn-colour-base                 : #ffffff;
    --nn-colour-background           : #001020;
    --nn-colour-blockquote-background: #003c10;
    --nn-colour-pre-background               : var(--nn-colour-black);
    --nn-colour-th-background                : var(--nn-colour-black);
    --nn-colour-td-background                : var(--nn-colour-grey-800);
    --nn-colour-code-span-border             : var(--nn-colour-grey-600);
    --nn-colour-code-span-background         : var(--nn-colour-grey-800);
    --nn-colour-form-control-background      : var(--nn-colour-grey-800);
    --nn-colour-form-control-background-hover: var(--nn-colour-grey-700);
    --nn-colour-form-control-background-focus: var(--nn-colour-grey-600);
  }
}

*,
::before,
::after {
  box-sizing: border-box;
}

html {
  overflow: hidden scroll;
  color: var(--nn-colour-base);
  font-family: var(--nn-font-family-sans-serif);
  text-decoration-skip-ink: none;
  text-underline-offset: .1em;
  -webkit-text-decoration-skip: objects;
  -webkit-text-size-adjust: 100%;
  overflow-wrap: break-word;
  line-height: 1.75;
  background: var(--nn-colour-background);
  cursor: default;
  scrollbar-gutter: stable;
}
  @media (max-width: 600px) {
    html {
      word-break: break-all;
    }
  }

body {
  margin: 0;
}

pre, code, kbd, samp, var, time, textarea {
  font-family: var(--nn-font-family-monospace);
  font-style: normal;
}

header,
main,
section,
article,
aside,
footer {
  margin: var(--nn-space-large) 0;
}

h1, h2, h3, h4, h5, h6 {
  margin: var(--nn-space-large) 0 var(--nn-space-default);
}
h1         { font-size: 1.7rem; }
h2         { font-size: 1.5rem; }
h3         { font-size: 1.3rem; }
h4, h5, h6 { font-size: 1.1rem; }

p, dl, ol, ul,
blockquote, pre, table, form,
details, summary, nav {
  margin: var(--nn-space-default) 0;
}

ol, ul {
  padding-left: var(--nn-space-indent-default);
}

dd ol, dd ul {
  padding-left: var(--nn-space-default);
}

ol ol, ol ul,
ul ol, ul ul {
  margin: 0;
}

dt {
  margin: var(--nn-space-default) 0 var(--nn-space-tiny);
  font-weight: bold;
}

dd {
  margin: 0 0 0 var(--nn-space-indent-default);
}

dd         > :first-child,
blockquote > :first-child {
  margin-top: 0;
}

blockquote > :last-child {
  margin-bottom: 0;
}

address {
  font-style: normal;
}

blockquote {
  border: 1px solid var(--nn-colour-blockquote-border);
  border-radius: var(--nn-border-radius-default);
  padding: var(--nn-space-default) var(--nn-space-small);
  background: var(--nn-colour-blockquote-background);
}

pre {
  border: 1px solid var(--nn-colour-grey-400);
  border-radius: var(--nn-border-radius-default);
  padding: var(--nn-space-small);
  font-size: 1em;
  line-height: 1.5;
  background: var(--nn-colour-pre-background);
  overflow: auto;
  overflow-wrap: normal;
  word-break: keep-all;
  white-space: pre;
}

table {
  border-collapse: collapse;
}

caption {
  margin: 0 0 calc(var(--nn-space-tiny) / var(--nn-ratio-2));
  font-weight: bold;
}

th, td {
  border: 1px solid var(--nn-colour-grey-400);
  padding: calc(var(--nn-space-tiny) / var(--nn-ratio-2)) var(--nn-space-tiny);
}

th {
  font-weight: bold;
  text-align: center;
  background: var(--nn-colour-th-background);
}

td {
  vertical-align: top;
  background: var(--nn-colour-td-background);
}

summary {
  font-weight: bold;
  cursor: pointer;
}
  summary:hover {
    color: var(--nn-colour-pink);
  }

hr {
  margin: var(--nn-space-large) 0;
  border: 0;
  border-bottom: 1px solid var(--nn-colour-grey-400);
}

a,
:not(pre) a code,
:not(pre) a kbd,
:not(pre) a samp,
:not(pre) a var {
  color: var(--nn-colour-blue);
  text-decoration: underline;
}
  a * {
    text-decoration: underline;
  }
  a:hover,
  a:active,
  a:hover *,
  a:active * {
    color: var(--nn-colour-pink);
  }

em,
em *,
:not(pre) em code,
:not(pre) em kbd,
:not(pre) em samp,
:not(pre) em var {
  color: var(--nn-colour-green);
  font-style: normal;
  font-weight: bold;
}

strong,
strong *,
:not(pre) strong code,
:not(pre) strong kbd,
:not(pre) strong samp,
:not(pre) strong var {
  color: var(--nn-colour-red);
}

b,
b *,
:not(pre) b code,
:not(pre) b kbd,
:not(pre) b samp,
:not(pre) b var {
  color: var(--nn-colour-yellow);
}

i,
i *,
:not(pre) i code,
:not(pre) i kbd,
:not(pre) i samp,
:not(pre) i var {
  color: var(--nn-colour-teal);
  font-weight: bold;
  font-style: normal;
}

u,
u *,
:not(pre) u code,
:not(pre) u kbd,
:not(pre) u samp,
:not(pre) u var {
  color: var(--nn-colour-cyan);
  font-weight: bold;
}

s,
s *,
:not(pre) s code,
:not(pre) s kbd,
:not(pre) s samp,
:not(pre) s var {
  color: var(--nn-colour-purple);
  font-weight: bold;
}

code, kbd, samp, var {
  font-size: 1em;
}

:not(pre) > code,
:not(pre) > kbd,
:not(pre) > samp,
:not(pre) > var {
  margin: 0 calc(var(--nn-space-tiny) / var(--nn-ratio-4));
  border: 1px solid var(--nn-colour-code-span-border);
  border-radius: var(--nn-border-radius-default);
  padding: calc(var(--nn-space-tiny) / var(--nn-ratio-8)) calc(var(--nn-space-tiny) / var(--nn-ratio-2));
  font-size: .94em;
  background: var(--nn-colour-code-span-background);
}

:not(pre) > code,
:not(pre) > code :hover,
:not(pre) > code:hover {
  color: var(--nn-colour-pink);
}

:not(pre) > kbd,
:not(pre) > kbd :hover,
:not(pre) > kbd:hover {
  color: var(--nn-colour-orange);
}

:not(pre) > samp,
:not(pre) > samp :hover,
:not(pre) > samp:hover {
  color: var(--nn-colour-purple);
}

:not(pre) > var,
:not(pre) > var :hover,
:not(pre) > var:hover {
  color: var(--nn-colour-cyan);
}

q, q::before, q::after {
  color: var(--nn-colour-green);
  text-decoration: underline dotted;
}
q {
  quotes: "“" "”" "‘" "’";
  cursor: help;
}
  q::before { content: open-quote; }
  q::after  { content: close-quote; }

abbr[title], dfn[title] {
  font-style: normal;
  font-weight: bold;
  text-decoration: underline dotted;
  cursor: help;
}
  abbr[title]::after, dfn[title]::after {
    content: " (" attr(title) ") ";
    font-size: var(--nn-font-size-small);
  }

img[height] {
  height: auto;
}

/* 等幅フォントは別途指定済 */
textarea {
  margin: 0;
  border: 1px solid var(--nn-colour-grey-400);
  border-radius: var(--nn-border-radius-default);
  padding: calc(var(--nn-space-tiny) / var(--nn-ratio-2)) var(--nn-space-tiny);
  color: inherit;
  font-size: inherit;
  vertical-align: top;
}

/* フォントを親要素から継承させる */
button, input, select {
  margin: 0;
  color: inherit;
  font-family: inherit;
  font-size: inherit;
  vertical-align: top;
}

button, [type="button"], [type="reset"], [type="submit"], [type="text"], [type="password"] {
  /* iOS・Mac でのボタン類の表示仕様を揃える */
  -webkit-appearance: none;
  border: 1px solid var(--nn-colour-grey-400);
  border-radius: var(--nn-border-radius-default);
  padding: calc(var(--nn-space-tiny) / var(--nn-ratio-2)) var(--nn-space-tiny);
}

button, [type="button"], [type="reset"], [type="submit"] {
  font-weight: normal;  /* For iOS Submit */
  cursor: pointer;
}

/* チェックボックスとラジオボタンは隣接するテキストを垂直中央揃えにする */
[type="checkbox"], [type="radio"] {
  vertical-align: middle;
  cursor: pointer;
}
select,
[type="search"], [type="tel"], [type="url"], [type="email"], [type="datetime"], [type="date"], [type="month"], [type="week"], [type="time"], [type="datetime-local"], [type="number"] {
  border: 1px solid var(--nn-colour-grey-400);
  border-radius: var(--nn-border-radius-default);
}

button, [type="button"], [type="reset"], [type="submit"],
[type="text"], [type="password"], textarea, select,
[type="search"], [type="tel"], [type="url"], [type="email"], [type="datetime"], [type="date"], [type="month"], [type="week"], [type="time"], [type="datetime-local"], [type="number"] {
  background: var(--nn-colour-form-control-background);
}
button:hover, [type="button"]:hover, [type="reset"]:hover, [type="submit"]:hover {
  background: var(--nn-colour-form-control-background-hover);
}
button:focus, [type="button"]:focus, [type="reset"]:focus, [type="submit"]:focus {
  background: var(--nn-colour-form-control-background-focus);
}

::file-selector-button       { border: 1px solid var(--nn-colour-grey-400); border-radius: var(--nn-border-radius-default); color: inherit; background: var(--nn-colour-form-control-background); cursor: pointer; }
::-webkit-file-upload-button { border: 1px solid var(--nn-colour-grey-400); border-radius: var(--nn-border-radius-default); color: inherit; background: var(--nn-colour-form-control-background); cursor: pointer; }  /* For iOS Safari File Upload Buton */
::file-selector-button:hover       { background: var(--nn-colour-form-control-background-hover); }
::-webkit-file-upload-button:hover { background: var(--nn-colour-form-control-background-hover); }
::file-selector-button:focus       { background: var(--nn-colour-form-control-background-focus); }
::-webkit-file-upload-button:focus { background: var(--nn-colour-form-control-background-focus); }

/* Utilities */

.min-width-full { min-width: 100%; }

.font-size-small { font-size: var(--nn-font-size-small); }

.font-family-sans-serif { font-family: var(--nn-font-family-sans-serif); }
.font-family-monospace  { font-family: var(--nn-font-family-monospace) ; }
.font-family-serif      { font-family: var(--nn-font-family-serif)     ; }

.font-bold   { font-weight: bold; }
.font-italic { font-style: italic; }

.text-left   { text-align: left  ; }
.text-center { text-align: center; }
.text-right  { text-align: right ; }

.white-space-nowrap   { white-space: nowrap  ; }
.white-space-pre-wrap { white-space: pre-wrap; }

/* Utility Components */

.table-wrapper {  /* テーブルを横スクロール可能にするラッパー・div 要素 */
  overflow-x: auto;
}
  .table-wrapper > table {
    margin-top: 0;
    margin-bottom: 0;
  }
  .table-wrapper.min-width-full > table {
    min-width: 100%;
  }

.note {
  font-size: var(--nn-font-size-small);
}

.help {
  text-decoration: underline dotted var(--nn-colour-grey-500);
  cursor: help;
}
