@import "tailwindcss";
@plugin "@tailwindcss/typography";

@font-face {
  font-family: "NerdFontsSymbols Nerd Font";
  src: url("/fonts/SymbolsNerdFont-Regular.ttf") format("truetype");
}

@theme {
  /* base */
  --color-ctp-base:       var(--ctp-base);
  --color-ctp-mantle:     var(--ctp-mantle);
  --color-ctp-crust:      var(--ctp-crust);
  /* text */
  --color-ctp-text:       var(--ctp-text);
  --color-ctp-subtext1:   var(--ctp-subtext1);
  --color-ctp-subtext0:   var(--ctp-subtext0);
  --color-ctp-subtext:    var(--ctp-subtext);
  /* surface */
  --color-ctp-surface2:   var(--ctp-surface2);
  --color-ctp-surface1:   var(--ctp-surface1);
  --color-ctp-surface0:   var(--ctp-surface0);
  --color-ctp-surface:    var(--ctp-surface);
  /* overlay */
  --color-ctp-overlay2:   var(--ctp-overlay2);
  --color-ctp-overlay1:   var(--ctp-overlay1);
  --color-ctp-overlay0:   var(--ctp-overlay0);
  --color-ctp-overlay:    var(--ctp-overlay);
  /* colors */
  --color-ctp-rosewater:  var(--ctp-rosewater);
  --color-ctp-flamingo:   var(--ctp-flamingo);
  --color-ctp-pink:       var(--ctp-pink);
  --color-ctp-mauve:      var(--ctp-mauve);
  --color-ctp-red:        var(--ctp-red);
  --color-ctp-maroon:     var(--ctp-maroon);
  --color-ctp-peach:      var(--ctp-peach);
  --color-ctp-yellow:     var(--ctp-yellow);
  --color-ctp-green:      var(--ctp-green);
  --color-ctp-teal:       var(--ctp-teal);
  --color-ctp-sky:        var(--ctp-sky);
  --color-ctp-sapphire:   var(--ctp-sapphire);
  --color-ctp-blue:       var(--ctp-blue);
  --color-ctp-lavender:   var(--ctp-lavender);
  /* semantic */
  --color-ctp-accent:     var(--ctp-accent);
}

[data-theme="mocha"] {
  /* base */
  --ctp-base:     #1e1e2e;
  --ctp-mantle:   #181825;
  --ctp-crust:    #11111b;
  /* text */
  --ctp-text:     #cdd6f4;
  --ctp-subtext1: #bac2de;
  --ctp-subtext0: #a6adc8;
  /* surface */
  --ctp-surface2: #585b70;
  --ctp-surface1: #45475a;
  --ctp-surface0: #313244;
  /* overlay */
  --ctp-overlay2: #7f849c;
  --ctp-overlay1: #6c7086;
  --ctp-overlay0: #6c7086;
  /* colors */
  --ctp-rosewater: #f5e0dc;
  --ctp-flamingo:  #f2cdcd;
  --ctp-pink:      #f38ba8;
  --ctp-mauve:     #cba6f7;
  --ctp-red:       #f38ba8;
  --ctp-maroon:    #eba0ac;
  --ctp-peach:     #fab387;
  --ctp-yellow:    #f9e2af;
  --ctp-green:     #a6e3a1;
  --ctp-teal:      #94e2d5;
  --ctp-sky:       #89dceb;
  --ctp-sapphire:  #74c7ec;
  --ctp-blue:      #89b4fa;
  --ctp-lavender:  #b4befe;
  /* semantic */
  --ctp-subtext:  var(--ctp-subtext0);
  --ctp-surface:  var(--ctp-surface0);
  --ctp-overlay:  var(--ctp-overlay1);
  --ctp-accent:   var(--ctp-mauve);
}

[data-theme="macchiato"] {
  /* base */
  --ctp-base:     #24273a;
  --ctp-mantle:   #1e2030;
  --ctp-crust:    #181926;
  /* text */
  --ctp-text:     #cad3f5;
  --ctp-subtext1: #b8c0e0;
  --ctp-subtext0: #a5adcb;
  /* surface */
  --ctp-surface2: #5b6078;
  --ctp-surface1: #494d64;
  --ctp-surface0: #363a4f;
  /* overlay */
  --ctp-overlay2: #939ab7;
  --ctp-overlay1: #8087a2;
  --ctp-overlay0: #6e738d;
  /* colors */
  --ctp-rosewater: #f4dbd6;
  --ctp-flamingo:  #f0c6c6;
  --ctp-pink:      #f5bde6;
  --ctp-mauve:     #c6a0f6;
  --ctp-red:       #ed8796;
  --ctp-maroon:    #ee99a0;
  --ctp-peach:     #f5a97f;
  --ctp-yellow:    #eed49f;
  --ctp-green:     #a6da95;
  --ctp-teal:      #8bd5ca;
  --ctp-sky:       #91d7e3;
  --ctp-sapphire:  #7dc4e4;
  --ctp-blue:      #8aadf4;
  --ctp-lavender:  #b7bdf8;
  /* semantic */
  --ctp-subtext:  var(--ctp-subtext0);
  --ctp-surface:  var(--ctp-surface0);
  --ctp-overlay:  var(--ctp-overlay1);
  --ctp-accent:   var(--ctp-mauve);
}

[data-theme="frappe"] {
  /* base */
  --ctp-base:     #303446;
  --ctp-mantle:   #292c3c;
  --ctp-crust:    #232634;
  /* text */
  --ctp-text:     #c6d0f5;
  --ctp-subtext1: #b5bfe2;
  --ctp-subtext0: #a5adce;
  /* surface */
  --ctp-surface2: #626880;
  --ctp-surface1: #51576d;
  --ctp-surface0: #414559;
  /* overlay */
  --ctp-overlay2: #949cbb;
  --ctp-overlay1: #838ba7;
  --ctp-overlay0: #737994;
  /* colors */
  --ctp-rosewater: #f2d5cf;
  --ctp-flamingo:  #eebebe;
  --ctp-pink:      #f4b8e4;
  --ctp-mauve:     #ca9ee6;
  --ctp-red:       #e78284;
  --ctp-maroon:    #ea999c;
  --ctp-peach:     #ef9f76;
  --ctp-yellow:    #e5c890;
  --ctp-green:     #a6d189;
  --ctp-teal:      #81c8be;
  --ctp-sky:       #99d1db;
  --ctp-sapphire:  #85c1dc;
  --ctp-blue:      #8caaee;
  --ctp-lavender:  #babbf1;
  /* semantic */
  --ctp-subtext:  var(--ctp-subtext0);
  --ctp-surface:  var(--ctp-surface0);
  --ctp-overlay:  var(--ctp-overlay1);
  --ctp-accent:   var(--ctp-mauve);
}

[data-theme="latte"] {
  /* base */
  --ctp-base:     #eff1f5;
  --ctp-mantle:   #e6e9ef;
  --ctp-crust:    #dce0e8;
  /* text */
  --ctp-text:     #4c4f69;
  --ctp-subtext1: #5c5f77;
  --ctp-subtext0: #6c6f85;
  /* surface */
  --ctp-surface2: #acb0be;
  --ctp-surface1: #bcc0cc;
  --ctp-surface0: #ccd0da;
  /* overlay */
  --ctp-overlay2: #7c7f93;
  --ctp-overlay1: #8c8fa1;
  --ctp-overlay0: #9ca0b0;
  /* colors */
  --ctp-rosewater: #dc8a78;
  --ctp-flamingo:  #dd7878;
  --ctp-pink:      #ea76cb;
  --ctp-mauve:     #8839ef;
  --ctp-red:       #d20f39;
  --ctp-maroon:    #e64553;
  --ctp-peach:     #fe640b;
  --ctp-yellow:    #df8e1d;
  --ctp-green:     #40a02b;
  --ctp-teal:      #179299;
  --ctp-sky:       #04a5e5;
  --ctp-sapphire:  #209fb5;
  --ctp-blue:      #1e66f5;
  --ctp-lavender:  #7287fd;
  /* semantic */
  --ctp-subtext:  var(--ctp-subtext0);
  --ctp-surface:  var(--ctp-surface0);
  --ctp-overlay:  var(--ctp-overlay1);
  --ctp-accent:   var(--ctp-mauve);
}

.icon-mono {
  filter: invert(1);
}

[data-theme="latte"] .icon-mono {
  filter: none;
}

body {
  background-color: var(--ctp-base);
  color: var(--ctp-text);
}


/* Markdown */
article {
  --tw-prose-body: var(--ctp-text);
  --tw-prose-headings: var(--ctp-text);
  --tw-prose-links: var(--ctp-accent);
  --tw-prose-bold: var(--ctp-text);
  --tw-prose-code: var(--ctp-accent);
  --tw-prose-quotes: var(--ctp-subtext);
  --tw-prose-counters: var(--ctp-subtext);
  --tw-prose-bullets: var(--ctp-subtext);
  --tw-prose-hr: var(--ctp-surface);
}


/* Headings */
article h1 {
  background-color: color-mix(in srgb, var(--ctp-red) 30%, transparent);
  color: var(--ctp-text);
  padding: 0.25rem 0.75rem;
  text-align: center;
  border-radius: 0.5rem;
}

article h2,
article h3,
article h4,
article h5,
article h6 {
  text-align: left;
  margin-left: 1rem;
  scroll-margin-top: 4rem;
}

article h2 { color: var(--ctp-peach); }
article h3 { color: var(--ctp-yellow); }
article h4 { color: var(--ctp-green); }
article h5 { color: var(--ctp-blue); }
article h6 { color: var(--ctp-mauve); }

article h2::after {
  content: "";
  display: block;
  height: 1px;
  margin-top: 0.25rem;
  background: linear-gradient(
    to right,
    var(--ctp-red),
    var(--ctp-peach),
    var(--ctp-yellow),
    var(--ctp-green),
    var(--ctp-teal),
    var(--ctp-blue),
    var(--ctp-mauve)
  );
}

/* Links */
article a {
  color: var(--ctp-accent);
}

article a:visited {
  color: var(--ctp-red);
}

article a:hover {
  color: var(--ctp-peach);
}

/* Images */ 
article img {
  max-width: 100%;
  max-height: 500px;
  object-fit: contain;
  border-radius: 0.5rem;
  display: block;
  margin: 1rem auto;
  padding: 2px;
  background: linear-gradient(to right, var(--ctp-red), var(--ctp-peach), var(--ctp-yellow), var(--ctp-green), var(--ctp-teal), var(--ctp-blue), var(--ctp-mauve));
}

/* Horizontal Line */
article hr {
  border: none;
  height: 2px;
  background: linear-gradient(
    to right,
    var(--ctp-red),
    var(--ctp-peach),
    var(--ctp-yellow),
    var(--ctp-green),
    var(--ctp-teal),
    var(--ctp-blue),
    var(--ctp-mauve)
  );
}


/* Code Block*/
article pre code {
  background-color: transparent;
  padding: 0}

article code {
  background-color: var(--ctp-surface);
  color: var(--ctp-accent);
  padding: 0.1rem 0.3rem;
  border-radius: 4px;
}

article code::before,
article code::after {
  content: none;
}

article pre {
  padding-top: 0.75rem;
}

.copy-button {
  position: absolute;
  top: 0.5rem;
  right: 0.5rem;
  background-color: var(--ctp-surface);
  color: var(--ctp-subtext);
  border: none;
  border-radius: 0.25rem;
  padding: 0.25rem 0.4rem;
  cursor: pointer;
  font-size: 1rem;
  line-height: 1;
  z-index: 1;
  opacity: 0.5;
}

.copy-button:hover {
  opacity: 1;
  color: var(--ctp-accent);
  background-color: var(--ctp-overlay);
}

article blockquote {
  border-left: 3px solid var(--ctp-accent);
  color: var(--ctp-subtext);
}

/* Table */ 
article table {
  width: 100%;
  border-collapse: collapse;
}

article th {
  background-color: var(--ctp-surface);
  color: var(--ctp-accent);
  text-align: left;
  padding: 0.5rem 1rem;
}

article td {
  padding: 0.5rem 1rem;
  color: var(--ctp-text);
  border-bottom: 1px solid var(--ctp-surface);
}

article tr:nth-child(even) {
  background-color: var(--ctp-mantle);
}

article tr:hover {
  background-color: var(--ctp-surface);
}

/* Lists */ 
article ul {
  list-style: none;
  padding-left: 1rem;
}

article ul li::before {
  content: "󰧞 ";
  font-family: "NerdFontsSymbols Nerd Font";
  color: var(--ctp-accent);
}

article ol {
  padding-left: 1.5rem;
}

article ol li::marker {
  color: var(--ctp-accent);
}

article li {
  color: var(--ctp-text);
  margin-bottom: 0.25rem;
}

article li:has(input[type="checkbox"]:checked) {
  color: var(--ctp-subtext);
  text-decoration: line-through;
  text-decoration-color: var(--ctp-accent);
}

article li:has(input[type="checkbox"]:checked) input[type="checkbox"] {
  text-decoration: none;
  position: relative;
  z-index: 1;
}

/* Blockquote */
article blockquote {
  border-left: none;
  padding-left: 1rem;
  position: relative;
  color: var(--ctp-subtext);
}

article blockquote::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  bottom: 0;
  width: 3px;
  background: linear-gradient(
    to bottom,
    var(--ctp-red),
    var(--ctp-peach),
    var(--ctp-yellow),
    var(--ctp-green),
    var(--ctp-teal),
    var(--ctp-blue),
    var(--ctp-mauve)
  );
}

/* Callout Boxes */
.markdown-alert {
  padding: 0.5rem 1rem;
  border-radius: 0.5rem;
  margin: 1rem 0;
}

.markdown-alert {
  padding: 0.75rem 1rem;
  border-radius: 0.5rem;
  margin: 1rem 0;
}

.markdown-alert-title {
  font-weight: bold;
  margin-bottom: 0.25rem;
}

.markdown-alert-note {
  background-color: color-mix(in srgb, var(--ctp-blue) 20%, transparent);
  border-left: 3px solid var(--ctp-blue);
}

.markdown-alert-note .markdown-alert-title {
  color: var(--ctp-blue);
}

.markdown-alert-note .markdown-alert-title::before {
  content: "󰋽 ";
  font-family: "NerdFontsSymbols Nerd Font";
}

.markdown-alert-tip {
  background-color: color-mix(in srgb, var(--ctp-green) 20%, transparent);
  border-left: 3px solid var(--ctp-green);
}

.markdown-alert-tip .markdown-alert-title {
  color: var(--ctp-green);
}

.markdown-alert-tip .markdown-alert-title::before {
  content: "󰌶 ";
  font-family: "NerdFontsSymbols Nerd Font";
}

.markdown-alert-warning {
  background-color: color-mix(in srgb, var(--ctp-yellow) 20%, transparent);
  border-left: 3px solid var(--ctp-yellow);
}

.markdown-alert-warning .markdown-alert-title {
  color: var(--ctp-yellow);
}

.markdown-alert-warning .markdown-alert-title::before {
  content: "󰀦 ";
  font-family: "NerdFontsSymbols Nerd Font";
}

.markdown-alert-important {
  background-color: color-mix(in srgb, var(--ctp-mauve) 20%, transparent);
  border-left: 3px solid var(--ctp-mauve);
}

.markdown-alert-important .markdown-alert-title {
  color: var(--ctp-mauve);
}

.markdown-alert-important .markdown-alert-title::before {
  content: "󰅺 ";
  font-family: "NerdFontsSymbols Nerd Font";
}

.markdown-alert-caution {
  background-color: color-mix(in srgb, var(--ctp-red) 20%, transparent);
  border-left: 3px solid var(--ctp-red);
}

.markdown-alert-caution .markdown-alert-title {
  color: var(--ctp-red);
}

.markdown-alert-caution .markdown-alert-title::before {
  content: "󱧼 ";
  font-family: "NerdFontsSymbols Nerd Font";
}
