diff --git a/.gitignore b/.gitignore index 126a3ee..2708c5c 100644 --- a/.gitignore +++ b/.gitignore @@ -23,3 +23,6 @@ Cargo.lock # Image generator generated_images/ + +node_modules/ +package-lock.json diff --git a/.zellij/dev-layout.kdl b/.zellij/dev-layout.kdl index c261e89..27e370e 100644 --- a/.zellij/dev-layout.kdl +++ b/.zellij/dev-layout.kdl @@ -1,29 +1,26 @@ layout { - pane split_direction="vertical" focus=true { - pane edit="src/main.rs" - pane split_direction="horizontal" size=60 { - just { args "server_dev"; } - just { args "test"; } + default_tab_template { + children + pane size=2 borderless=true { + plugin location="zellij:status-bar" + } + pane size=1 borderless=true { + plugin location="zellij:tab-bar" } } pane_template name="just" { command "just" - start_suspended true } - floating_panes { - pane { - command "just" - args "tailwind" + + tab split_direction="vertical" focus=true { + pane { + just { args "server_dev"; } + just { args "test"; } } - pane { - command "just" - args "decap_server" + pane { + just { args "tailwind"; } + just { args "decap_server"; } } - } - pane size=2 borderless=true { - plugin location="zellij:status-bar" - } - pane size=1 borderless=true { - plugin location="zellij:tab-bar" } + tab } diff --git a/Cargo.toml b/Cargo.toml index 7a1597f..a336c82 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -6,8 +6,7 @@ edition = "2021" # See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html [dependencies] -askama = { version = "0.14", features = ["with-axum", "mime", "mime_guess"] } -askama_axum = "0.5.0" +askama = { version = "0.14" } axum = "0.8.0" chrono = { version = "0.4.31", features = ["serde"] } pulldown-cmark = { version = "0.13" } @@ -28,22 +27,5 @@ indoc = "2.0.5" askama_escape = "0.13.0" mime_guess = "2.0.5" -[build] -rustflags = ["-Z", "threads=8"] - -# [target.x86_64-unknown-linux-gnu] -# rustflags = [ -# "-C", "link-arg=-fuse-ld=lld" -# ] - -[profile.dev] -debug = true -opt-level = 0 -# codegen-units = 16 -# lto = "thin" -panic = "unwind" -strip = false -incremental = true - -[profile.dev.package.askama_derive] -opt-level = 3 +[dev-dependencies] +pretty_assertions = "1" diff --git a/justfile b/justfile index ceef702..f813b76 100644 --- a/justfile +++ b/justfile @@ -2,7 +2,7 @@ port := env_var_or_default('PORT', '3080') # Tailwind in watch mode tailwind: - npx tailwindcss -i ./styles/input.css -o ./styles/output.css --watch + npx @tailwindcss/cli -i ./styles/input.css -o ./styles/output.css --watch # svg sprite creation svgstore: diff --git a/package.json b/package.json new file mode 100644 index 0000000..9ef8691 --- /dev/null +++ b/package.json @@ -0,0 +1,6 @@ +{ + "dependencies": { + "@tailwindcss/cli": "^4.1.10", + "tailwindcss": "^4.1.10" + } +} diff --git a/src/feed.rs b/src/feed.rs index 7a573e5..5f2450c 100644 --- a/src/feed.rs +++ b/src/feed.rs @@ -1,3 +1,4 @@ +use askama::Values; use axum::http::{header, StatusCode}; use axum::response::IntoResponse; use chrono::Utc; @@ -7,6 +8,14 @@ use crate::blog_posts::blog_post_model::{BlogPostMetadata, BLOG_POST_PATH}; use crate::filters::{parse_markdown, truncate_md}; use crate::post_utils::post_listing::get_post_list; +struct EmptyValues; + +impl Values for EmptyValues { + fn get_value<'a>(&'a self, _key: &str) -> Option<&'a dyn std::any::Any> { + return None; + } +} + pub async fn render_rss_feed() -> Result { let mut post_list = get_post_list::(BLOG_POST_PATH) .await @@ -27,14 +36,14 @@ pub async fn render_rss_feed() -> Result { .title(Some(post.metadata.title)) .link(Some(format!("https://michalvanko.dev/blog/{}", post.slug))) .description({ - let truncated = - truncate_md(&post.body, 2).unwrap_or("Can't parse post body".to_string()); - let parsed_md = parse_markdown(&truncated) + let truncated = truncate_md(&post.body, &EmptyValues, 2) + .unwrap_or("Can't parse post body".to_string()); + let parsed_md = parse_markdown(&truncated, &EmptyValues) .unwrap_or("Can't process truncated post body".to_string()); Some(parsed_md) }) .content({ - let parsed_md = parse_markdown(&post.body) + let parsed_md = parse_markdown(&post.body, &EmptyValues) .unwrap_or("Can't process full post body".to_string()); Some(parsed_md) }) diff --git a/src/filters/markdown.rs b/src/filters/markdown.rs index 4c09600..5582038 100644 --- a/src/filters/markdown.rs +++ b/src/filters/markdown.rs @@ -1,3 +1,4 @@ +use core::fmt; use std::path::Path; use image::image_dimensions; @@ -19,7 +20,10 @@ enum TextKind { } // pub fn parse_markdown(markdown: &str) -> ::askama::Result -pub fn parse_markdown(markdown: &str) -> ::askama::Result { +pub fn parse_markdown( + markdown: T, + _: &dyn askama::Values, +) -> ::askama::Result { let mut options = Options::empty(); options.insert(Options::ENABLE_TABLES); options.insert(Options::ENABLE_FOOTNOTES); @@ -34,7 +38,8 @@ pub fn parse_markdown(markdown: &str) -> ::askama::Result { let theme = theme_set.themes.get("InspiredGitHub").unwrap(); let mut heading_ended: Option = None; - let parser = Parser::new_ext(markdown, options).map(|event| match event { + let mds = markdown.to_string(); + let parser = Parser::new_ext(&mds, options).map(|event| match event { /* Parsing images considers `alt` attribute as inner `Text` event Therefore the `[alt]` is rendered in html as subtitle diff --git a/src/filters/pretty_date.rs b/src/filters/pretty_date.rs index 73a16b6..8007913 100644 --- a/src/filters/pretty_date.rs +++ b/src/filters/pretty_date.rs @@ -1,7 +1,7 @@ use chrono::{DateTime, Utc}; // This filter does not have extra arguments -pub fn pretty_date(date_time: &DateTime) -> ::askama::Result { +pub fn pretty_date(date_time: &DateTime, _: &dyn askama::Values) -> ::askama::Result { let formatted = format!("{}", date_time.format("%e %B %Y")); Ok(formatted) } diff --git a/src/filters/truncate_md.rs b/src/filters/truncate_md.rs index d7f59cd..ecde5d5 100644 --- a/src/filters/truncate_md.rs +++ b/src/filters/truncate_md.rs @@ -2,7 +2,7 @@ const FORBIDDEN_LINES: [&str; 5] = [" ", "#", "-", "!", "<"]; -pub fn truncate_md(body: &str, rows: usize) -> ::askama::Result { +pub fn truncate_md(body: &str, _: &dyn askama::Values, rows: usize) -> ::askama::Result { let description = body .lines() .filter(|line| { diff --git a/src/pages/admin.rs b/src/pages/admin.rs index fd04e61..b617a14 100644 --- a/src/pages/admin.rs +++ b/src/pages/admin.rs @@ -1,9 +1,17 @@ use askama::Template; +use axum::{ + http::StatusCode, + response::{Html, IntoResponse}, +}; #[derive(Template)] #[template(path = "admin.html")] pub struct AdminPageTemplate {} -pub async fn render_admin() -> AdminPageTemplate { - AdminPageTemplate {} +pub async fn render_admin() -> Result { + Ok(Html( + AdminPageTemplate {} + .render() + .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR), + )) } diff --git a/src/pages/animated_logo.rs b/src/pages/animated_logo.rs index 2030333..fd65ac3 100644 --- a/src/pages/animated_logo.rs +++ b/src/pages/animated_logo.rs @@ -1,10 +1,13 @@ use askama::Template; -use axum::http::StatusCode; +use axum::{ + http::StatusCode, + response::{Html, IntoResponse}, +}; #[derive(Template)] #[template(path = "assets/animated_logo.html")] pub struct AnimatedLogoTemplate {} -pub async fn render_animated_logo() -> Result { - Ok(AnimatedLogoTemplate {}) +pub async fn render_animated_logo() -> Result { + Ok(Html(AnimatedLogoTemplate {}.render().unwrap())) } diff --git a/src/pages/blog_post_list.rs b/src/pages/blog_post_list.rs index 643bf4a..80beaf8 100644 --- a/src/pages/blog_post_list.rs +++ b/src/pages/blog_post_list.rs @@ -1,6 +1,8 @@ +use askama::Template; use axum::{ extract::{OriginalUri, Path}, http::StatusCode, + response::{Html, IntoResponse}, }; use tokio::try_join; use tracing::debug; @@ -22,7 +24,7 @@ use super::post_list::PostListTemplate; pub async fn render_blog_post_list( tag: Option>, OriginalUri(original_uri): OriginalUri, -) -> Result { +) -> Result { // I will forget what happens here in a week. But essentially it's pattern matching and shadowing let tag = tag.map(|Path(tag)| tag); @@ -50,14 +52,18 @@ pub async fn render_blog_post_list( ("Blog posts".to_string(), "Blog posts".to_string()) }; - Ok(PostListTemplate { - title, - og_title, - segment: Segment::Blog, - posts, - header_props, - tags: blog_tags, - featured_projects, - current_url: original_uri.to_string(), - }) + Ok(Html( + PostListTemplate { + title, + og_title, + segment: Segment::Blog, + posts, + header_props, + tags: blog_tags, + featured_projects, + current_url: original_uri.to_string(), + } + .render() + .unwrap(), + )) } diff --git a/src/pages/blog_post_page.rs b/src/pages/blog_post_page.rs index f425008..3968376 100644 --- a/src/pages/blog_post_page.rs +++ b/src/pages/blog_post_page.rs @@ -1,5 +1,6 @@ use askama::Template; use axum::extract::OriginalUri; +use axum::response::{Html, IntoResponse}; use axum::{extract::Path, http::StatusCode}; use chrono::{DateTime, Utc}; @@ -30,7 +31,7 @@ pub struct BlogPostTemplate { pub async fn render_blog_post( Path(post_id): Path, OriginalUri(original_uri): OriginalUri, -) -> Result { +) -> Result { let path = format!("{}/{}.md", BLOG_POST_PATH, post_id); let post = parse_post::(&path).await?; let segment = if original_uri.to_string().starts_with("/blog") { @@ -59,17 +60,21 @@ pub async fn render_blog_post( _ => HeaderProps::default(), }; - Ok(BlogPostTemplate { - title: post.metadata.title, - date: post.metadata.date, - tags: post.metadata.tags, - body: post.body, - slug: post.slug, - segment, - thumbnail: post.metadata.thumbnail, - header_props, - recommended_posts, - }) + Ok(Html( + BlogPostTemplate { + title: post.metadata.title, + date: post.metadata.date, + tags: post.metadata.tags, + body: post.body, + slug: post.slug, + segment, + thumbnail: post.metadata.thumbnail, + header_props, + recommended_posts, + } + .render() + .unwrap(), + )) } async fn get_recommended_posts( diff --git a/src/pages/broadcast_list.rs b/src/pages/broadcast_list.rs index cb24a82..df515c6 100644 --- a/src/pages/broadcast_list.rs +++ b/src/pages/broadcast_list.rs @@ -1,6 +1,8 @@ +use askama::Template; use axum::{ extract::{OriginalUri, Path}, http::StatusCode, + response::{Html, IntoResponse}, }; use tokio::try_join; use tracing::debug; @@ -21,7 +23,7 @@ use super::post_list::PostListTemplate; pub async fn render_broadcast_post_list( tag: Option>, OriginalUri(original_uri): OriginalUri, -) -> Result { +) -> Result { // I will forget what happens here in a week. But essentially it's pattern matching and shadowing let tag = tag.map(|Path(tag)| tag); @@ -50,14 +52,18 @@ pub async fn render_broadcast_post_list( "Broadcasts".to_string() }; - Ok(PostListTemplate { - title: title.clone(), - og_title: title, - segment: Segment::Broadcasts, - posts, - header_props, - tags: popular_tags, - featured_projects, - current_url: original_uri.to_string(), - }) + Ok(Html( + PostListTemplate { + title: title.clone(), + og_title: title, + segment: Segment::Broadcasts, + posts, + header_props, + tags: popular_tags, + featured_projects, + current_url: original_uri.to_string(), + } + .render() + .unwrap(), + )) } diff --git a/src/pages/contact.rs b/src/pages/contact.rs index 080d9cf..0fe2b83 100644 --- a/src/pages/contact.rs +++ b/src/pages/contact.rs @@ -1,5 +1,8 @@ use askama::Template; -use axum::http::StatusCode; +use axum::{ + http::StatusCode, + response::{Html, IntoResponse}, +}; use crate::components::site_header::HeaderProps; @@ -18,7 +21,7 @@ pub struct ContactPageTemplate { pub links: Vec, } -pub async fn render_contact() -> Result { +pub async fn render_contact() -> Result { let links = vec![ ContactLink { href: "mailto:michalvankosk@gmail.com".to_string(), @@ -76,9 +79,13 @@ pub async fn render_contact() -> Result { }, ]; - Ok(ContactPageTemplate { - title: "Contact".to_owned(), - header_props: HeaderProps::default(), - links, - }) + Ok(Html( + ContactPageTemplate { + title: "Contact".to_owned(), + header_props: HeaderProps::default(), + links, + } + .render() + .unwrap(), + )) } diff --git a/src/pages/index.rs b/src/pages/index.rs index 0e2f919..64e9704 100644 --- a/src/pages/index.rs +++ b/src/pages/index.rs @@ -1,7 +1,10 @@ use std::rc::Rc; use askama::Template; -use axum::http::StatusCode; +use axum::{ + http::StatusCode, + response::{Html, IntoResponse}, +}; use tokio::try_join; use crate::{ @@ -26,7 +29,7 @@ pub struct IndexTemplate { featured_broadcasts: Vec>>, } -pub async fn render_index() -> Result { +pub async fn render_index() -> Result { let (blog_tags, broadcasts_tags, all_posts, featured_projects) = try_join!( get_popular_tags(Some(Segment::Blog)), get_popular_tags(Some(Segment::Broadcasts)), @@ -44,12 +47,16 @@ pub async fn render_index() -> Result { let featured_broadcasts = ref_get_posts_by_segment(&all_posts_rc, &[Segment::Broadcasts, Segment::Featured]); - Ok(IndexTemplate { - header_props: HeaderProps::default(), - blog_tags, - broadcasts_tags, - featured_blog_posts, - featured_projects, - featured_broadcasts, - }) + Ok(Html( + IndexTemplate { + header_props: HeaderProps::default(), + blog_tags, + broadcasts_tags, + featured_blog_posts, + featured_projects, + featured_broadcasts, + } + .render() + .unwrap(), + )) } diff --git a/src/pages/not_found.rs b/src/pages/not_found.rs index 17df806..367e0a6 100644 --- a/src/pages/not_found.rs +++ b/src/pages/not_found.rs @@ -1,5 +1,9 @@ use askama::Template; -use axum::{extract::OriginalUri, http::StatusCode}; +use axum::{ + extract::OriginalUri, + http::StatusCode, + response::{Html, IntoResponse}, +}; use tracing::info; use crate::components::site_header::HeaderProps; @@ -13,13 +17,17 @@ pub struct NotFoundPage { pub async fn render_not_found( OriginalUri(original_uri): OriginalUri, -) -> Result<(StatusCode, NotFoundPage), StatusCode> { +) -> Result<(StatusCode, impl IntoResponse), StatusCode> { info!("{original_uri} not found"); Ok(( StatusCode::NOT_FOUND, - NotFoundPage { - title: "This page does not exists".to_owned(), - header_props: HeaderProps::default(), - }, + Html( + NotFoundPage { + title: "This page does not exists".to_owned(), + header_props: HeaderProps::default(), + } + .render() + .unwrap(), + ), )) } diff --git a/src/pages/portfolio.rs b/src/pages/portfolio.rs index e7675f6..6517186 100644 --- a/src/pages/portfolio.rs +++ b/src/pages/portfolio.rs @@ -1,5 +1,8 @@ use askama::Template; -use axum::http::StatusCode; +use axum::{ + http::StatusCode, + response::{Html, IntoResponse}, +}; use serde::Deserialize; use crate::{ @@ -50,7 +53,7 @@ pub struct PortfolioTemplate { pub technology_list: Vec, } -pub async fn render_portfolio() -> Result { +pub async fn render_portfolio() -> Result { let portfolio = parse_post::("_pages/portfolio.md").await?; let mut project_list = get_post_list::("_projects").await?; @@ -126,14 +129,18 @@ pub async fn render_portfolio() -> Result { .map(|str| str.to_owned()) .collect(); - Ok(PortfolioTemplate { - title: "Portfolio".to_owned(), - body: portfolio.body, - header_props: HeaderProps::default(), - project_list, - workplace_list, - education_list, - contact_links, - technology_list, - }) + Ok(Html( + PortfolioTemplate { + title: "Portfolio".to_owned(), + body: portfolio.body, + header_props: HeaderProps::default(), + project_list, + workplace_list, + education_list, + contact_links, + technology_list, + } + .render() + .unwrap(), + )) } diff --git a/src/pages/project_list.rs b/src/pages/project_list.rs index e4d0477..e1cba5e 100644 --- a/src/pages/project_list.rs +++ b/src/pages/project_list.rs @@ -1,5 +1,8 @@ use askama::Template; -use axum::http::StatusCode; +use axum::{ + http::StatusCode, + response::{Html, IntoResponse}, +}; use crate::{ components::site_header::HeaderProps, @@ -16,16 +19,20 @@ pub struct ProjectListTemplate { pub header_props: HeaderProps, } -pub async fn render_projects_list() -> Result { +pub async fn render_projects_list() -> Result { let mut project_list = get_post_list::("_projects").await?; project_list.sort_by_key(|post| post.slug.to_string()); project_list.retain(|project| project.metadata.displayed); project_list.reverse(); - Ok(ProjectListTemplate { - title: "Showcase".to_owned(), - header_props: HeaderProps::default(), - project_list, - }) + Ok(Html( + ProjectListTemplate { + title: "Showcase".to_owned(), + header_props: HeaderProps::default(), + project_list, + } + .render() + .unwrap(), + )) } diff --git a/src/pages/showcase/egg_fetcher.rs b/src/pages/showcase/egg_fetcher.rs index 369ad25..147e94a 100644 --- a/src/pages/showcase/egg_fetcher.rs +++ b/src/pages/showcase/egg_fetcher.rs @@ -1,5 +1,8 @@ use askama::Template; -use axum::http::StatusCode; +use axum::{ + http::StatusCode, + response::{Html, IntoResponse}, +}; use crate::components::site_header::HeaderProps; @@ -9,8 +12,12 @@ pub struct EggFetcherShowcaseTemplate { header_props: HeaderProps, } -pub async fn render_egg_fetcher() -> Result { - Ok(EggFetcherShowcaseTemplate { - header_props: HeaderProps::default(), - }) +pub async fn render_egg_fetcher() -> Result { + Ok(Html( + EggFetcherShowcaseTemplate { + header_props: HeaderProps::default(), + } + .render() + .map_err(|_| StatusCode::INTERNAL_SERVER_ERROR), + )) } diff --git a/src/picture_generator/picture_markup_generator.rs b/src/picture_generator/picture_markup_generator.rs index e49f0bf..0c96c68 100644 --- a/src/picture_generator/picture_markup_generator.rs +++ b/src/picture_generator/picture_markup_generator.rs @@ -262,7 +262,8 @@ pub fn get_export_formats(orig_img_path: &str) -> Vec { fn test_get_export_formats() { assert_eq!( get_export_formats("/images/uploads/img_name.jpg"), - vec![ExportFormat::Avif, ExportFormat::Jpeg] + // vec![ExportFormat::Avif, ExportFormat::Jpeg] + vec![ExportFormat::Jpeg] ) } #[test] @@ -292,24 +293,21 @@ fn test_generate_picture_markup() { let height = 200; let orig_img_path = "/images/uploads/2020-03-23_20-24-06_393.jpg"; let result = indoc! { - r#" - - - Testing image alt - "#, +r#" + + Testing image alt +"#, }; - assert_eq!( + pretty_assertions::assert_eq!( generate_picture_markup(orig_img_path, width, height, "Testing image alt", None,) .expect("picture markup has to be generated"), result diff --git a/src/router.rs b/src/router.rs index 92b893c..ab330a8 100644 --- a/src/router.rs +++ b/src/router.rs @@ -8,7 +8,14 @@ use crate::{ project_list::render_projects_list, showcase::egg_fetcher::render_egg_fetcher, }, }; -use axum::{extract::MatchedPath, http::Request, routing::get, Router}; +use askama::Template; +use axum::{ + extract::MatchedPath, + http::{Request, StatusCode}, + response::IntoResponse, + routing::get, + Router, +}; use tower_http::trace::TraceLayer; use tracing::info_span; @@ -16,15 +23,15 @@ pub fn get_router() -> Router { Router::new() .route("/", get(render_index)) .route("/blog", get(render_blog_post_list)) - .route("/blog/tags/:tag", get(render_blog_post_list)) - .route("/blog/:post_id", get(render_blog_post)) + .route("/blog/tags/{tag}", get(render_blog_post_list)) + .route("/blog/{post_id}", get(render_blog_post)) .route("/broadcasts", get(render_broadcast_post_list)) - .route("/broadcasts/tags/:tag", get(render_broadcast_post_list)) - .route("/broadcasts/:post_id", get(render_blog_post)) + .route("/broadcasts/tags/{tag}", get(render_broadcast_post_list)) + .route("/broadcasts/{post_id}", get(render_blog_post)) .route("/contact", get(render_contact)) .route("/showcase", get(render_projects_list)) .route("/showcase/m-logo-svg", get(render_animated_logo)) - .route("/showcase/:project_slug", get(render_egg_fetcher)) + .route("/showcase/{project_slug}", get(render_egg_fetcher)) .route("/portfolio", get(render_portfolio)) .route("/admin", get(render_admin)) .route("/feed.xml", get(render_rss_feed)) diff --git a/styles/input.css b/styles/input.css index 21e09c6..abe8874 100644 --- a/styles/input.css +++ b/styles/input.css @@ -1,63 +1,113 @@ -@tailwind base; -@tailwind components; -@tailwind utilities; +@import "tailwindcss"; + +@theme { + --font-sans: "Baloo2", "Baloo2 Noto Fallback", "Baloo2 Fallback", "ui-sans-serif", "system-ui", "sans-serif", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + + --text-readxl: 1.75rem; + --text-readxl--line-height: 2.25rem; + --text-readxl--letter-spacing: -0.015rem; + --text-readxl--font-weight: 400; + + --spacing-note: 60rem; + --spacing-read: 64rem; + --spacing-image: min(70rem, 95vw); + --spacing-maxindex: 100rem; + + --color-blue-50: #f1f7fe; + --color-blue-100: #e1effd; + --color-blue-200: #bddefa; + --color-blue-300: #82c3f7; + --color-blue-400: #42a6f0; + --color-blue-500: #1789e0; + --color-blue-600: #0a6cbf; + --color-blue-700: #0a569a; + --color-blue-800: #0c4980; + --color-blue-900: #103e6a; + --color-blue-950: #0b2746; + + --color-pink-50: #fff4fd; + --color-pink-100: #ffe7fb; + --color-pink-200: #ffcff7; + --color-pink-300: #fea6eb; + --color-pink-400: #fc76dd; + --color-pink-500: #f342ca; + --color-pink-600: #d722a9; + --color-pink-700: #b31889; + --color-pink-800: #92166e; + --color-pink-900: #771859; + --color-pink-950: #500238; + + --color-purple-50: #F8F5FC; + --color-purple-100: #D5C2ED; + --color-purple-200: #B28EDE; + --color-purple-300: #8F5BCF; + --color-purple-400: #6D30B9; + --color-purple-500: #5F2AA2; + --color-purple-600: #52248A; + --color-purple-700: #441E73; + --color-purple-800: #36185C; + --color-purple-900: #281244; + --color-purple-950: #1A0C2D; +} + +@font-face { + font-family: 'Baloo2'; + font-style: normal; + font-display: swap; + src: + local('Baloo2'), + url(/fonts/baloo2/Baloo2-Latin-Variable-wght.woff2) format('woff2'); +} + +/* latin-ext */ +@font-face { + font-family: 'Baloo 2'; + font-style: normal; + font-weight: 400 800; + font-display: swap; + src: url(/fonts/baloo2/Baloo2-Latin-Variable-ext-wght.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, + U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} + +@font-face { + font-family: 'Baloo2 Fallback'; + font-style: normal; + font-weight: 400; + src: local('BlinkMacSystemFont'), local('Segoe UI'), local('Helvetica Neue'), + local('Arial'); + ascent-override: 111.2%; + descent-override: 54.05%; + line-gap-override: 0%; + size-adjust: 96.95%; +} + +@font-face { + font-family: 'Baloo2 Noto Fallback'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'); + ascent-override: 88%; + descent-override: none; + line-gap-override: 0%; + size-adjust: 92%; +} @layer base { - @font-face { - font-family: 'Baloo2'; - font-style: normal; - font-display: swap; - src: - local('Baloo2'), - url(/fonts/baloo2/Baloo2-Latin-Variable-wght.woff2) format('woff2'); - } - /* latin-ext */ - @font-face { - font-family: 'Baloo 2'; - font-style: normal; - font-weight: 400 800; - font-display: swap; - src: url(/fonts/baloo2/Baloo2-Latin-Variable-ext-wght.woff2) format('woff2'); - unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, - U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; + a { + @apply text-pink-800 underline underline-offset-2 hover:transition hover:text-blue-500; } - @font-face { - font-family: 'Baloo2 Fallback'; - font-style: normal; - font-weight: 400; - src: local('BlinkMacSystemFont'), local('Segoe UI'), local('Helvetica Neue'), - local('Arial'); - ascent-override: 111.2%; - descent-override: 54.05%; - line-gap-override: 0%; - size-adjust: 96.95%; + strong { + @apply font-medium; } - - @font-face { - font-family: 'Baloo2 Noto Fallback'; - font-style: normal; - font-weight: 400; - src: local('Noto Sans'); - ascent-override: 88%; - descent-override: none; - line-gap-override: 0%; - size-adjust: 92%; - } -} - -a { - @apply text-pink-800 underline underline-offset-2 hover:transition hover:text-blue-500; -} - -strong { - @apply font-medium; } .article-body { h1 { @apply px-4 text-2xl font-semibold text-blue-900 mb-3 mt-4 max-w-read mx-auto md:text-4xl lg:text-5xl; } + h2 { @apply px-4 text-xl font-semibold text-blue-900 mb-3 mt-4 max-w-read mx-auto md:text-2xl md:mb-6 md:mt-8 lg:mb-8 lg:mt-12 lg:text-4xl; } @@ -82,15 +132,16 @@ strong { @apply p-4; img { - @apply rounded shadow-md mx-auto lg:max-w-image; + @apply rounded-sm shadow-md mx-auto lg:max-w-image; } } + figcaption { @apply mt-2 text-center text-sm italic text-blue-800 md:text-base lg:text-lg; } table { - @apply text-sm mx-auto my-4 max-w-image table-auto border-collapse border-spacing-12 border border-slate-200 rounded md:text-base lg:text-xl lg:my-8; + @apply text-sm mx-auto my-4 max-w-image table-auto border-collapse border-spacing-12 border border-slate-200 rounded-sm md:text-base lg:text-xl lg:my-8; } thead { @@ -119,11 +170,11 @@ strong { } :not(pre) code { - @apply text-pink-900 rounded border border-blue-300 px-1 py-0.5 bg-blue-100 text-sm md:text-base lg:text-xl; + @apply text-pink-900 rounded-sm border border-blue-300 px-1 py-0.5 bg-blue-100 text-sm md:text-base lg:text-xl; } pre code pre { - @apply mx-2 rounded lg:mx-auto lg:text-lg shadow-sm lg:max-w-note; + @apply mx-2 rounded-sm lg:mx-auto lg:text-lg shadow-xs lg:max-w-note; } ul, @@ -138,12 +189,13 @@ strong { ul { @apply list-disc; } + ol { @apply list-decimal; } iframe { - @apply rounded shadow-md mx-auto lg:max-w-image; + @apply rounded-sm shadow-md mx-auto lg:max-w-image; } } @@ -280,4 +332,4 @@ article a { /* animation-duration: 5.5s; */ /* transition: transform 5.4s ease-in-out; */ /* opacity: 1; */ -/* } */ +/* } */ \ No newline at end of file diff --git a/styles/output.css b/styles/output.css index 66e23b5..fa64377 100644 --- a/styles/output.css +++ b/styles/output.css @@ -1,1847 +1,1503 @@ -*, ::before, ::after { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(23 137 224 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; -} - -::backdrop { - --tw-border-spacing-x: 0; - --tw-border-spacing-y: 0; - --tw-translate-x: 0; - --tw-translate-y: 0; - --tw-rotate: 0; - --tw-skew-x: 0; - --tw-skew-y: 0; - --tw-scale-x: 1; - --tw-scale-y: 1; - --tw-pan-x: ; - --tw-pan-y: ; - --tw-pinch-zoom: ; - --tw-scroll-snap-strictness: proximity; - --tw-gradient-from-position: ; - --tw-gradient-via-position: ; - --tw-gradient-to-position: ; - --tw-ordinal: ; - --tw-slashed-zero: ; - --tw-numeric-figure: ; - --tw-numeric-spacing: ; - --tw-numeric-fraction: ; - --tw-ring-inset: ; - --tw-ring-offset-width: 0px; - --tw-ring-offset-color: #fff; - --tw-ring-color: rgb(23 137 224 / 0.5); - --tw-ring-offset-shadow: 0 0 #0000; - --tw-ring-shadow: 0 0 #0000; - --tw-shadow: 0 0 #0000; - --tw-shadow-colored: 0 0 #0000; - --tw-blur: ; - --tw-brightness: ; - --tw-contrast: ; - --tw-grayscale: ; - --tw-hue-rotate: ; - --tw-invert: ; - --tw-saturate: ; - --tw-sepia: ; - --tw-drop-shadow: ; - --tw-backdrop-blur: ; - --tw-backdrop-brightness: ; - --tw-backdrop-contrast: ; - --tw-backdrop-grayscale: ; - --tw-backdrop-hue-rotate: ; - --tw-backdrop-invert: ; - --tw-backdrop-opacity: ; - --tw-backdrop-saturate: ; - --tw-backdrop-sepia: ; - --tw-contain-size: ; - --tw-contain-layout: ; - --tw-contain-paint: ; - --tw-contain-style: ; -} - -/* -! tailwindcss v3.4.15 | MIT License | https://tailwindcss.com -*/ - -/* -1. Prevent padding and border from affecting element width. (https://github.com/mozdevs/cssremedy/issues/4) -2. Allow adding a border to an element by just adding a border-width. (https://github.com/tailwindcss/tailwindcss/pull/116) -*/ - -*, -::before, -::after { - box-sizing: border-box; - /* 1 */ - border-width: 0; - /* 2 */ - border-style: solid; - /* 2 */ - border-color: #e5e7eb; - /* 2 */ -} - -::before, -::after { - --tw-content: ''; -} - -/* -1. Use a consistent sensible line-height in all browsers. -2. Prevent adjustments of font size after orientation changes in iOS. -3. Use a more readable tab size. -4. Use the user's configured `sans` font-family by default. -5. Use the user's configured `sans` font-feature-settings by default. -6. Use the user's configured `sans` font-variation-settings by default. -7. Disable tap highlights on iOS -*/ - -html, -:host { - line-height: 1.5; - /* 1 */ - -webkit-text-size-adjust: 100%; - /* 2 */ - -moz-tab-size: 4; - /* 3 */ - -o-tab-size: 4; - tab-size: 4; - /* 3 */ - font-family: Baloo2, Baloo2 Noto Fallback, Baloo2 Fallback, ui-sans-serif, system-ui, sans-serif, Apple Color Emoji, Segoe UI Emoji, Segoe UI Symbol, Noto Color Emoji; - /* 4 */ - font-feature-settings: normal; - /* 5 */ - font-variation-settings: normal; - /* 6 */ - -webkit-tap-highlight-color: transparent; - /* 7 */ -} - -/* -1. Remove the margin in all browsers. -2. Inherit line-height from `html` so users can set them as a class directly on the `html` element. -*/ - -body { - margin: 0; - /* 1 */ - line-height: inherit; - /* 2 */ -} - -/* -1. Add the correct height in Firefox. -2. Correct the inheritance of border color in Firefox. (https://bugzilla.mozilla.org/show_bug.cgi?id=190655) -3. Ensure horizontal rules are visible by default. -*/ - -hr { - height: 0; - /* 1 */ - color: inherit; - /* 2 */ - border-top-width: 1px; - /* 3 */ -} - -/* -Add the correct text decoration in Chrome, Edge, and Safari. -*/ - -abbr:where([title]) { - -webkit-text-decoration: underline dotted; - text-decoration: underline dotted; -} - -/* -Remove the default font size and weight for headings. -*/ - -h1, -h2, -h3, -h4, -h5, -h6 { - font-size: inherit; - font-weight: inherit; -} - -/* -Reset links to optimize for opt-in styling instead of opt-out. -*/ - -a { - color: inherit; - text-decoration: inherit; -} - -/* -Add the correct font weight in Edge and Safari. -*/ - -b, -strong { - font-weight: bolder; -} - -/* -1. Use the user's configured `mono` font-family by default. -2. Use the user's configured `mono` font-feature-settings by default. -3. Use the user's configured `mono` font-variation-settings by default. -4. Correct the odd `em` font sizing in all browsers. -*/ - -code, -kbd, -samp, -pre { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; - /* 1 */ - font-feature-settings: normal; - /* 2 */ - font-variation-settings: normal; - /* 3 */ - font-size: 1em; - /* 4 */ -} - -/* -Add the correct font size in all browsers. -*/ - -small { - font-size: 80%; -} - -/* -Prevent `sub` and `sup` elements from affecting the line height in all browsers. -*/ - -sub, -sup { - font-size: 75%; - line-height: 0; - position: relative; - vertical-align: baseline; -} - -sub { - bottom: -0.25em; -} - -sup { - top: -0.5em; -} - -/* -1. Remove text indentation from table contents in Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=999088, https://bugs.webkit.org/show_bug.cgi?id=201297) -2. Correct table border color inheritance in all Chrome and Safari. (https://bugs.chromium.org/p/chromium/issues/detail?id=935729, https://bugs.webkit.org/show_bug.cgi?id=195016) -3. Remove gaps between table borders by default. -*/ - -table { - text-indent: 0; - /* 1 */ - border-color: inherit; - /* 2 */ - border-collapse: collapse; - /* 3 */ -} - -/* -1. Change the font styles in all browsers. -2. Remove the margin in Firefox and Safari. -3. Remove default padding in all browsers. -*/ - -button, -input, -optgroup, -select, -textarea { - font-family: inherit; - /* 1 */ - font-feature-settings: inherit; - /* 1 */ - font-variation-settings: inherit; - /* 1 */ - font-size: 100%; - /* 1 */ - font-weight: inherit; - /* 1 */ - line-height: inherit; - /* 1 */ - letter-spacing: inherit; - /* 1 */ - color: inherit; - /* 1 */ - margin: 0; - /* 2 */ - padding: 0; - /* 3 */ -} - -/* -Remove the inheritance of text transform in Edge and Firefox. -*/ - -button, -select { - text-transform: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Remove default button styles. -*/ - -button, -input:where([type='button']), -input:where([type='reset']), -input:where([type='submit']) { - -webkit-appearance: button; - /* 1 */ - background-color: transparent; - /* 2 */ - background-image: none; - /* 2 */ -} - -/* -Use the modern Firefox focus style for all focusable elements. -*/ - -:-moz-focusring { - outline: auto; -} - -/* -Remove the additional `:invalid` styles in Firefox. (https://github.com/mozilla/gecko-dev/blob/2f9eacd9d3d995c937b4251a5557d95d494c9be1/layout/style/res/forms.css#L728-L737) -*/ - -:-moz-ui-invalid { - box-shadow: none; -} - -/* -Add the correct vertical alignment in Chrome and Firefox. -*/ - -progress { - vertical-align: baseline; -} - -/* -Correct the cursor style of increment and decrement buttons in Safari. -*/ - -::-webkit-inner-spin-button, -::-webkit-outer-spin-button { - height: auto; -} - -/* -1. Correct the odd appearance in Chrome and Safari. -2. Correct the outline style in Safari. -*/ - -[type='search'] { - -webkit-appearance: textfield; - /* 1 */ - outline-offset: -2px; - /* 2 */ -} - -/* -Remove the inner padding in Chrome and Safari on macOS. -*/ - -::-webkit-search-decoration { - -webkit-appearance: none; -} - -/* -1. Correct the inability to style clickable types in iOS and Safari. -2. Change font properties to `inherit` in Safari. -*/ - -::-webkit-file-upload-button { - -webkit-appearance: button; - /* 1 */ - font: inherit; - /* 2 */ -} - -/* -Add the correct display in Chrome and Safari. -*/ - -summary { - display: list-item; -} - -/* -Removes the default spacing and border for appropriate elements. -*/ - -blockquote, -dl, -dd, -h1, -h2, -h3, -h4, -h5, -h6, -hr, -figure, -p, -pre { - margin: 0; -} - -fieldset { - margin: 0; - padding: 0; -} - -legend { - padding: 0; -} - -ol, -ul, -menu { - list-style: none; - margin: 0; - padding: 0; -} - -/* -Reset default styling for dialogs. -*/ - -dialog { - padding: 0; -} - -/* -Prevent resizing textareas horizontally by default. -*/ - -textarea { - resize: vertical; -} - -/* -1. Reset the default placeholder opacity in Firefox. (https://github.com/tailwindlabs/tailwindcss/issues/3300) -2. Set the default placeholder color to the user's configured gray 400 color. -*/ - -input::-moz-placeholder, textarea::-moz-placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -input::placeholder, -textarea::placeholder { - opacity: 1; - /* 1 */ - color: #9ca3af; - /* 2 */ -} - -/* -Set the default cursor for buttons. -*/ - -button, -[role="button"] { - cursor: pointer; -} - -/* -Make sure disabled buttons don't get the pointer cursor. -*/ - -:disabled { - cursor: default; -} - -/* -1. Make replaced elements `display: block` by default. (https://github.com/mozdevs/cssremedy/issues/14) -2. Add `vertical-align: middle` to align replaced elements more sensibly by default. (https://github.com/jensimmons/cssremedy/issues/14#issuecomment-634934210) - This can trigger a poorly considered lint error in some tools but is included by design. -*/ - -img, -svg, -video, -canvas, -audio, -iframe, -embed, -object { - display: block; - /* 1 */ - vertical-align: middle; - /* 2 */ -} - -/* -Constrain images and videos to the parent width and preserve their intrinsic aspect ratio. (https://github.com/mozdevs/cssremedy/issues/14) -*/ - -img, -video { - max-width: 100%; - height: auto; -} - -/* Make elements with the HTML hidden attribute stay hidden by default */ - -[hidden]:where(:not([hidden="until-found"])) { - display: none; -} - -@font-face { - font-family: 'Baloo2'; - - font-style: normal; - - font-display: swap; - - src: - local('Baloo2'), - url(/fonts/baloo2/Baloo2-Latin-Variable-wght.woff2) format('woff2'); -} - -/* latin-ext */ - -@font-face { - font-family: 'Baloo 2'; - - font-style: normal; - - font-weight: 400 800; - - font-display: swap; - - src: url(/fonts/baloo2/Baloo2-Latin-Variable-ext-wght.woff2) format('woff2'); - - unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, - U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; -} - -@font-face { - font-family: 'Baloo2 Fallback'; - - font-style: normal; - - font-weight: 400; - - src: local('BlinkMacSystemFont'), local('Segoe UI'), local('Helvetica Neue'), - local('Arial'); - - ascent-override: 111.2%; - - descent-override: 54.05%; - - line-gap-override: 0%; - - size-adjust: 96.95%; -} - -@font-face { - font-family: 'Baloo2 Noto Fallback'; - - font-style: normal; - - font-weight: 400; - - src: local('Noto Sans'); - - ascent-override: 88%; - - descent-override: none; - - line-gap-override: 0%; - - size-adjust: 92%; -} - -.visible { - visibility: visible; -} - -.col-span-2 { - grid-column: span 2 / span 2; -} - -.row-span-3 { - grid-row: span 3 / span 3; -} - -.float-start { - float: inline-start; -} - -.clear-both { - clear: both; -} - -.m-1 { - margin: 0.25rem; -} - -.m-10 { - margin: 2.5rem; -} - -.m-4 { - margin: 1rem; -} - -.m-5 { - margin: 1.25rem; -} - -.m-6 { - margin: 1.5rem; -} - -.mx-0\.5 { - margin-left: 0.125rem; - margin-right: 0.125rem; -} - -.mx-2 { - margin-left: 0.5rem; - margin-right: 0.5rem; -} - -.mx-3 { - margin-left: 0.75rem; - margin-right: 0.75rem; -} - -.mx-4 { - margin-left: 1rem; - margin-right: 1rem; -} - -.mx-5 { - margin-left: 1.25rem; - margin-right: 1.25rem; -} - -.mx-6 { - margin-left: 1.5rem; - margin-right: 1.5rem; -} - -.mx-auto { - margin-left: auto; - margin-right: auto; -} - -.my-1 { - margin-top: 0.25rem; - margin-bottom: 0.25rem; -} - -.my-2 { - margin-top: 0.5rem; - margin-bottom: 0.5rem; -} - -.my-3 { - margin-top: 0.75rem; - margin-bottom: 0.75rem; -} - -.my-4 { - margin-top: 1rem; - margin-bottom: 1rem; -} - -.my-5 { - margin-top: 1.25rem; - margin-bottom: 1.25rem; -} - -.mb-1 { - margin-bottom: 0.25rem; -} - -.mb-2 { - margin-bottom: 0.5rem; -} - -.mb-3 { - margin-bottom: 0.75rem; -} - -.mb-4 { - margin-bottom: 1rem; -} - -.mb-5 { - margin-bottom: 1.25rem; -} - -.mb-6 { - margin-bottom: 1.5rem; -} - -.mr-3 { - margin-right: 0.75rem; -} - -.mt-3 { - margin-top: 0.75rem; -} - -.mt-4 { - margin-top: 1rem; -} - -.mb-10 { - margin-bottom: 2.5rem; -} - -.block { - display: block; -} - -.inline-block { - display: inline-block; -} - -.inline { - display: inline; -} - -.flex { - display: flex; -} - -.grid { - display: grid; -} - -.hidden { - display: none; -} - -.h-12 { - height: 3rem; -} - -.h-6 { - height: 1.5rem; -} - -.h-7 { - height: 1.75rem; -} - -.h-\[240px\] { - height: 240px; -} - -.h-\[320px\] { - height: 320px; -} - -.h-auto { - height: auto; -} - -.h-full { - height: 100%; -} - -.max-h-\[236px\] { - max-height: 236px; -} - -.min-h-full { - min-height: 100%; -} - -.w-12 { - width: 3rem; -} - -.w-6 { - width: 1.5rem; -} - -.w-7 { - width: 1.75rem; -} - -.w-\[180px\] { - width: 180px; -} - -.w-\[320px\] { - width: 320px; -} - -.w-0 { - width: 0px; -} - -.max-w-\[24rem\] { - max-width: 24rem; -} - -.max-w-\[32rem\] { - max-width: 32rem; -} - -.max-w-\[392px\] { - max-width: 392px; -} - -.max-w-maxindex { - max-width: 100rem; -} - -.max-w-read { - max-width: 64rem; -} - -.flex-1 { - flex: 1 1 0%; -} - -.shrink-0 { - flex-shrink: 0; -} - -.flex-grow { - flex-grow: 1; -} - -.-translate-y-1\.5 { - --tw-translate-y: -0.375rem; - transform: translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y)); -} - -.break-inside-avoid { - -moz-column-break-inside: avoid; - break-inside: avoid; -} - -.grid-flow-row { - grid-auto-flow: row; -} - -.flex-row { - flex-direction: row; -} - -.flex-col { - flex-direction: column; -} - -.flex-wrap { - flex-wrap: wrap; -} - -.place-content-center { - place-content: center; -} - -.content-end { - align-content: flex-end; -} - -.items-center { - align-items: center; -} - -.justify-end { - justify-content: flex-end; -} - -.justify-center { - justify-content: center; -} - -.justify-between { - justify-content: space-between; -} - -.justify-around { - justify-content: space-around; -} - -.gap-2 { - gap: 0.5rem; -} - -.gap-4 { - gap: 1rem; -} - -.gap-6 { - gap: 1.5rem; -} - -.self-start { - align-self: flex-start; -} - -.self-center { - align-self: center; -} - -.rounded { - border-radius: 0.25rem; -} - -.rounded-full { - border-radius: 9999px; -} - -.rounded-md { - border-radius: 0.375rem; -} - -.rounded-sm { - border-radius: 0.125rem; -} - -.border { - border-width: 1px; -} - -.border-2 { - border-width: 2px; -} - -.border-l { - border-left-width: 1px; -} - -.border-blue-300 { - --tw-border-opacity: 1; - border-color: rgb(130 195 247 / var(--tw-border-opacity, 1)); -} - -.border-blue-500 { - --tw-border-opacity: 1; - border-color: rgb(23 137 224 / var(--tw-border-opacity, 1)); -} - -.border-blue-950 { - --tw-border-opacity: 1; - border-color: rgb(11 39 70 / var(--tw-border-opacity, 1)); -} - -.border-slate-300 { - --tw-border-opacity: 1; - border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); -} - -.border-l-slate-300 { - --tw-border-opacity: 1; - border-left-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); -} - -.bg-blue-100 { - --tw-bg-opacity: 1; - background-color: rgb(225 239 253 / var(--tw-bg-opacity, 1)); -} - -.bg-blue-50 { - --tw-bg-opacity: 1; - background-color: rgb(241 247 254 / var(--tw-bg-opacity, 1)); -} - -.bg-pink-200 { - --tw-bg-opacity: 1; - background-color: rgb(255 207 247 / var(--tw-bg-opacity, 1)); -} - -.bg-white { - --tw-bg-opacity: 1; - background-color: rgb(255 255 255 / var(--tw-bg-opacity, 1)); -} - -.fill-blue-900 { - fill: #103e6a; -} - -.fill-blue-950 { - fill: #0b2746; -} - -.p-0\.5 { - padding: 0.125rem; -} - -.p-2 { - padding: 0.5rem; -} - -.p-3 { - padding: 0.75rem; -} - -.p-4 { - padding: 1rem; -} - -.px-3 { - padding-left: 0.75rem; - padding-right: 0.75rem; -} - -.px-4 { - padding-left: 1rem; - padding-right: 1rem; -} - -.py-2 { - padding-top: 0.5rem; - padding-bottom: 0.5rem; -} - -.pr-3 { - padding-right: 0.75rem; -} - -.text-center { - text-align: center; -} - -.text-right { - text-align: right; -} - -.text-justify { - text-align: justify; -} - -.font-mono { - font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; -} - -.text-2xl { - font-size: 1.5rem; - line-height: 2rem; -} - -.text-3xl { - font-size: 1.875rem; - line-height: 2.25rem; -} - -.text-4xl { - font-size: 2.25rem; - line-height: 2.5rem; -} - -.text-8xl { - font-size: 6rem; - line-height: 1; -} - -.text-9xl { - font-size: 8rem; - line-height: 1; -} - -.text-base { - font-size: 1rem; - line-height: 1.5rem; -} - -.text-lg { - font-size: 1.125rem; - line-height: 1.75rem; -} - -.text-sm { - font-size: 0.875rem; - line-height: 1.25rem; -} - -.text-xl { - font-size: 1.25rem; - line-height: 1.75rem; -} - -.font-bold { - font-weight: 700; -} - -.font-extrabold { - font-weight: 800; -} - -.font-medium { - font-weight: 500; -} - -.font-semibold { - font-weight: 600; -} - -.capitalize { - text-transform: capitalize; -} - -.italic { - font-style: italic; -} - -.leading-5 { - line-height: 1.25rem; -} - -.leading-tight { - line-height: 1.25; -} - -.text-blue-500 { - --tw-text-opacity: 1; - color: rgb(23 137 224 / var(--tw-text-opacity, 1)); -} - -.text-blue-700 { - --tw-text-opacity: 1; - color: rgb(10 86 154 / var(--tw-text-opacity, 1)); -} - -.text-blue-900 { - --tw-text-opacity: 1; - color: rgb(16 62 106 / var(--tw-text-opacity, 1)); -} - -.text-blue-950 { - --tw-text-opacity: 1; - color: rgb(11 39 70 / var(--tw-text-opacity, 1)); -} - -.text-pink-900 { - --tw-text-opacity: 1; - color: rgb(119 24 89 / var(--tw-text-opacity, 1)); -} - -.text-pink-950 { - --tw-text-opacity: 1; - color: rgb(80 2 56 / var(--tw-text-opacity, 1)); -} - -.text-slate-600 { - --tw-text-opacity: 1; - color: rgb(71 85 105 / var(--tw-text-opacity, 1)); -} - -.text-slate-800 { - --tw-text-opacity: 1; - color: rgb(30 41 59 / var(--tw-text-opacity, 1)); -} - -.no-underline { - text-decoration-line: none; -} - -.transition-colors { - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -a { - --tw-text-opacity: 1; - color: rgb(146 22 110 / var(--tw-text-opacity, 1)); - text-decoration-line: underline; - text-underline-offset: 2px; -} - -a:hover { - --tw-text-opacity: 1; - color: rgb(23 137 224 / var(--tw-text-opacity, 1)); - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, -webkit-backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter; - transition-property: color, background-color, border-color, text-decoration-color, fill, stroke, opacity, box-shadow, transform, filter, backdrop-filter, -webkit-backdrop-filter; - transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); - transition-duration: 150ms; -} - -strong { - font-weight: 500; -} - -.article-body { - h1 { - margin-left: auto; - margin-right: auto; +/*! tailwindcss v4.1.10 | MIT License | https://tailwindcss.com */ +@layer properties; +@layer theme, base, components, utilities; +@layer theme { + :root, :host { + --font-sans: "Baloo2", "Baloo2 Noto Fallback", "Baloo2 Fallback", "ui-sans-serif", "system-ui", "sans-serif", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --font-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", + "Courier New", monospace; + --color-blue-50: #f1f7fe; + --color-blue-100: #e1effd; + --color-blue-300: #82c3f7; + --color-blue-400: #42a6f0; + --color-blue-500: #1789e0; + --color-blue-700: #0a569a; + --color-blue-800: #0c4980; + --color-blue-900: #103e6a; + --color-blue-950: #0b2746; + --color-purple-700: #441E73; + --color-pink-50: #fff4fd; + --color-pink-200: #ffcff7; + --color-pink-600: #d722a9; + --color-pink-800: #92166e; + --color-pink-900: #771859; + --color-pink-950: #500238; + --color-slate-50: oklch(98.4% 0.003 247.858); + --color-slate-100: oklch(96.8% 0.007 247.896); + --color-slate-200: oklch(92.9% 0.013 255.508); + --color-slate-300: oklch(86.9% 0.022 252.894); + --color-slate-600: oklch(44.6% 0.043 257.281); + --color-slate-800: oklch(27.9% 0.041 260.031); + --color-slate-950: oklch(12.9% 0.042 264.695); + --color-white: #fff; + --spacing: 0.25rem; + --text-sm: 0.875rem; + --text-sm--line-height: calc(1.25 / 0.875); + --text-base: 1rem; + --text-base--line-height: calc(1.5 / 1); + --text-lg: 1.125rem; + --text-lg--line-height: calc(1.75 / 1.125); + --text-xl: 1.25rem; + --text-xl--line-height: calc(1.75 / 1.25); + --text-2xl: 1.5rem; + --text-2xl--line-height: calc(2 / 1.5); + --text-3xl: 1.875rem; + --text-3xl--line-height: calc(2.25 / 1.875); + --text-4xl: 2.25rem; + --text-4xl--line-height: calc(2.5 / 2.25); + --text-5xl: 3rem; + --text-5xl--line-height: 1; + --text-6xl: 3.75rem; + --text-6xl--line-height: 1; + --text-7xl: 4.5rem; + --text-7xl--line-height: 1; + --text-8xl: 6rem; + --text-8xl--line-height: 1; + --text-9xl: 8rem; + --text-9xl--line-height: 1; + --font-weight-medium: 500; + --font-weight-semibold: 600; + --font-weight-bold: 700; + --font-weight-extrabold: 800; + --leading-tight: 1.25; + --radius-xs: 0.125rem; + --radius-sm: 0.25rem; + --radius-md: 0.375rem; + --aspect-video: 16 / 9; + --default-transition-duration: 150ms; + --default-transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1); + --default-font-family: var(--font-sans); + --default-mono-font-family: var(--font-mono); + --text-readxl: 1.75rem; + --text-readxl--line-height: 2.25rem; + --text-readxl--letter-spacing: -0.015rem; + --text-readxl--font-weight: 400; + --spacing-note: 60rem; + --spacing-read: 64rem; + --spacing-image: min(70rem, 95vw); + --spacing-maxindex: 100rem; } - h1 { - margin-bottom: 0.75rem; +} +@layer base { + *, ::after, ::before, ::backdrop, ::file-selector-button { + box-sizing: border-box; + margin: 0; + padding: 0; + border: 0 solid; } - h1 { - margin-top: 1rem; + html, :host { + line-height: 1.5; + -webkit-text-size-adjust: 100%; + tab-size: 4; + font-family: var(--default-font-family, ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"); + font-feature-settings: var(--default-font-feature-settings, normal); + font-variation-settings: var(--default-font-variation-settings, normal); + -webkit-tap-highlight-color: transparent; } - h1 { - max-width: 64rem; + hr { + height: 0; + color: inherit; + border-top-width: 1px; } - h1 { - padding-left: 1rem; - padding-right: 1rem; + abbr:where([title]) { + -webkit-text-decoration: underline dotted; + text-decoration: underline dotted; } - h1 { - font-size: 1.5rem; - line-height: 2rem; + h1, h2, h3, h4, h5, h6 { + font-size: inherit; + font-weight: inherit; } - h1 { - font-weight: 600; + a { + color: inherit; + -webkit-text-decoration: inherit; + text-decoration: inherit; } - h1 { - --tw-text-opacity: 1; - color: rgb(16 62 106 / var(--tw-text-opacity, 1)); + b, strong { + font-weight: bolder; } - @media (min-width: 768px) { - h1 { - font-size: 2.25rem; - line-height: 2.5rem; + code, kbd, samp, pre { + font-family: var(--default-mono-font-family, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace); + font-feature-settings: var(--default-mono-font-feature-settings, normal); + font-variation-settings: var(--default-mono-font-variation-settings, normal); + font-size: 1em; + } + small { + font-size: 80%; + } + sub, sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; + } + sub { + bottom: -0.25em; + } + sup { + top: -0.5em; + } + table { + text-indent: 0; + border-color: inherit; + border-collapse: collapse; + } + :-moz-focusring { + outline: auto; + } + progress { + vertical-align: baseline; + } + summary { + display: list-item; + } + ol, ul, menu { + list-style: none; + } + img, svg, video, canvas, audio, iframe, embed, object { + display: block; + vertical-align: middle; + } + img, video { + max-width: 100%; + height: auto; + } + button, input, select, optgroup, textarea, ::file-selector-button { + font: inherit; + font-feature-settings: inherit; + font-variation-settings: inherit; + letter-spacing: inherit; + color: inherit; + border-radius: 0; + background-color: transparent; + opacity: 1; + } + :where(select:is([multiple], [size])) optgroup { + font-weight: bolder; + } + :where(select:is([multiple], [size])) optgroup option { + padding-inline-start: 20px; + } + ::file-selector-button { + margin-inline-end: 4px; + } + ::placeholder { + opacity: 1; + } + @supports (not (-webkit-appearance: -apple-pay-button)) or (contain-intrinsic-size: 1px) { + ::placeholder { + color: currentcolor; + @supports (color: color-mix(in lab, red, red)) { + color: color-mix(in oklab, currentcolor 50%, transparent); + } } } - @media (min-width: 1024px) { - h1 { - font-size: 3rem; - line-height: 1; + textarea { + resize: vertical; + } + ::-webkit-search-decoration { + -webkit-appearance: none; + } + ::-webkit-date-and-time-value { + min-height: 1lh; + text-align: inherit; + } + ::-webkit-datetime-edit { + display: inline-flex; + } + ::-webkit-datetime-edit-fields-wrapper { + padding: 0; + } + ::-webkit-datetime-edit, ::-webkit-datetime-edit-year-field, ::-webkit-datetime-edit-month-field, ::-webkit-datetime-edit-day-field, ::-webkit-datetime-edit-hour-field, ::-webkit-datetime-edit-minute-field, ::-webkit-datetime-edit-second-field, ::-webkit-datetime-edit-millisecond-field, ::-webkit-datetime-edit-meridiem-field { + padding-block: 0; + } + :-moz-ui-invalid { + box-shadow: none; + } + button, input:where([type="button"], [type="reset"], [type="submit"]), ::file-selector-button { + appearance: button; + } + ::-webkit-inner-spin-button, ::-webkit-outer-spin-button { + height: auto; + } + [hidden]:where(:not([hidden="until-found"])) { + display: none !important; + } +} +@layer utilities { + .visible { + visibility: visible; + } + .absolute { + position: absolute; + } + .fixed { + position: fixed; + } + .relative { + position: relative; + } + .static { + position: static; + } + .sticky { + position: sticky; + } + .isolate { + isolation: isolate; + } + .col-span-2 { + grid-column: span 2 / span 2; + } + .row-span-3 { + grid-row: span 3 / span 3; + } + .float-start { + float: inline-start; + } + .clear-both { + clear: both; + } + .container { + width: 100%; + @media (width >= 40rem) { + max-width: 40rem; + } + @media (width >= 48rem) { + max-width: 48rem; + } + @media (width >= 64rem) { + max-width: 64rem; + } + @media (width >= 80rem) { + max-width: 80rem; + } + @media (width >= 96rem) { + max-width: 96rem; } } - h2 { - margin-left: auto; - margin-right: auto; + .m-1 { + margin: calc(var(--spacing) * 1); } - h2 { - margin-bottom: 0.75rem; + .m-4 { + margin: calc(var(--spacing) * 4); } - h2 { - margin-top: 1rem; + .m-5 { + margin: calc(var(--spacing) * 5); } - h2 { - max-width: 64rem; + .m-6 { + margin: calc(var(--spacing) * 6); } - h2 { - padding-left: 1rem; - padding-right: 1rem; + .m-10 { + margin: calc(var(--spacing) * 10); } - h2 { - font-size: 1.25rem; - line-height: 1.75rem; + .mx-0\.5 { + margin-inline: calc(var(--spacing) * 0.5); } - h2 { - font-weight: 600; + .mx-2 { + margin-inline: calc(var(--spacing) * 2); } - h2 { - --tw-text-opacity: 1; - color: rgb(16 62 106 / var(--tw-text-opacity, 1)); + .mx-3 { + margin-inline: calc(var(--spacing) * 3); } - @media (min-width: 768px) { - h2 { - margin-bottom: 1.5rem; - } + .mx-4 { + margin-inline: calc(var(--spacing) * 4); } - @media (min-width: 768px) { - h2 { - margin-top: 2rem; - } + .mx-5 { + margin-inline: calc(var(--spacing) * 5); } - @media (min-width: 768px) { - h2 { - font-size: 1.5rem; - line-height: 2rem; - } + .mx-6 { + margin-inline: calc(var(--spacing) * 6); } - @media (min-width: 1024px) { - h2 { - margin-bottom: 2rem; - } + .mx-auto { + margin-inline: auto; } - @media (min-width: 1024px) { - h2 { - margin-top: 3rem; - } + .my-1 { + margin-block: calc(var(--spacing) * 1); } - @media (min-width: 1024px) { - h2 { - font-size: 2.25rem; - line-height: 2.5rem; - } + .my-2 { + margin-block: calc(var(--spacing) * 2); } - h3 { - margin-left: auto; - margin-right: auto; + .my-3 { + margin-block: calc(var(--spacing) * 3); } - h3 { - margin-bottom: 0.75rem; + .my-4 { + margin-block: calc(var(--spacing) * 4); } - h3 { - margin-top: 1rem; + .my-5 { + margin-block: calc(var(--spacing) * 5); } - h3 { - max-width: 64rem; + .mt-3 { + margin-top: calc(var(--spacing) * 3); } - h3 { - padding-left: 1rem; - padding-right: 1rem; + .mt-4 { + margin-top: calc(var(--spacing) * 4); } - h3 { - font-size: 1.125rem; - line-height: 1.75rem; + .mt-8 { + margin-top: calc(var(--spacing) * 8); } - h3 { - font-weight: 600; + .mr-3 { + margin-right: calc(var(--spacing) * 3); } - h3 { - --tw-text-opacity: 1; - color: rgb(16 62 106 / var(--tw-text-opacity, 1)); + .mb-1 { + margin-bottom: calc(var(--spacing) * 1); } - @media (min-width: 768px) { - h3 { - margin-bottom: 1.5rem; - } + .mb-2 { + margin-bottom: calc(var(--spacing) * 2); } - @media (min-width: 768px) { - h3 { - margin-top: 2rem; - } + .mb-3 { + margin-bottom: calc(var(--spacing) * 3); } - @media (min-width: 768px) { - h3 { - font-size: 1.25rem; - line-height: 1.75rem; - } + .mb-4 { + margin-bottom: calc(var(--spacing) * 4); } - @media (min-width: 1024px) { - h3 { - margin-bottom: 2rem; - } + .mb-5 { + margin-bottom: calc(var(--spacing) * 5); } - @media (min-width: 1024px) { - h3 { - margin-top: 3rem; - } + .mb-6 { + margin-bottom: calc(var(--spacing) * 6); } - @media (min-width: 1024px) { - h3 { - font-size: 1.875rem; - line-height: 2.25rem; - } + .block { + display: block; } - h4 { - margin-left: auto; - margin-right: auto; + .flex { + display: flex; } - h4 { - margin-bottom: 0.5rem; + .grid { + display: grid; } - h4 { - margin-top: 0.75rem; + .hidden { + display: none; } - h4 { - max-width: 64rem; + .inline { + display: inline; } - h4 { - padding-left: 1rem; - padding-right: 1rem; + .inline-block { + display: inline-block; } - h4 { - font-size: 1.125rem; - line-height: 1.75rem; + .table { + display: table; } - h4 { - font-weight: 500; + .h-6 { + height: calc(var(--spacing) * 6); } - h4 { - --tw-text-opacity: 1; - color: rgb(16 62 106 / var(--tw-text-opacity, 1)); + .h-7 { + height: calc(var(--spacing) * 7); } - @media (min-width: 768px) { - h4 { - margin-bottom: 1.5rem; - } + .h-12 { + height: calc(var(--spacing) * 12); } - @media (min-width: 768px) { - h4 { - margin-top: 2rem; - } + .h-\[240px\] { + height: 240px; } - @media (min-width: 768px) { - h4 { - font-size: 1.125rem; - line-height: 1.75rem; - } + .h-\[320px\] { + height: 320px; } - @media (min-width: 1024px) { - h4 { - margin-bottom: 2rem; - } + .h-auto { + height: auto; } - @media (min-width: 1024px) { - h4 { - margin-top: 3rem; - } + .max-h-\[236px\] { + max-height: 236px; } - @media (min-width: 1024px) { - h4 { - font-size: 1.875rem; - line-height: 2.25rem; - } + .min-h-full { + min-height: 100%; } - p { - margin-top: 0.5rem; - margin-bottom: 0.5rem; + .w-0 { + width: calc(var(--spacing) * 0); } - p { - margin-left: auto; - margin-right: auto; + .w-6 { + width: calc(var(--spacing) * 6); } - p { - max-width: 64rem; + .w-7 { + width: calc(var(--spacing) * 7); } - p { - padding-left: 1rem; - padding-right: 1rem; + .w-12 { + width: calc(var(--spacing) * 12); } - p { + .w-\[180px\] { + width: 180px; + } + .w-\[320px\] { + width: 320px; + } + .max-w-\[24rem\] { + max-width: 24rem; + } + .max-w-\[32rem\] { + max-width: 32rem; + } + .max-w-\[392px\] { + max-width: 392px; + } + .max-w-maxindex { + max-width: var(--spacing-maxindex); + } + .max-w-read { + max-width: var(--spacing-read); + } + .flex-1 { + flex: 1; + } + .shrink-0 { + flex-shrink: 0; + } + .grow { + flex-grow: 1; + } + .-translate-y-1\.5 { + --tw-translate-y: calc(var(--spacing) * -1.5); + translate: var(--tw-translate-x) var(--tw-translate-y); + } + .transform { + transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,); + } + .break-inside-avoid { + break-inside: avoid; + } + .grid-flow-row { + grid-auto-flow: row; + } + .flex-col { + flex-direction: column; + } + .flex-row { + flex-direction: row; + } + .flex-wrap { + flex-wrap: wrap; + } + .place-content-center { + place-content: center; + } + .content-end { + align-content: flex-end; + } + .items-center { + align-items: center; + } + .justify-around { + justify-content: space-around; + } + .justify-between { + justify-content: space-between; + } + .justify-center { + justify-content: center; + } + .justify-end { + justify-content: flex-end; + } + .gap-2 { + gap: calc(var(--spacing) * 2); + } + .gap-4 { + gap: calc(var(--spacing) * 4); + } + .gap-6 { + gap: calc(var(--spacing) * 6); + } + .self-center { + align-self: center; + } + .self-start { + align-self: flex-start; + } + .rounded { + border-radius: 0.25rem; + } + .rounded-full { + border-radius: calc(infinity * 1px); + } + .rounded-md { + border-radius: var(--radius-md); + } + .rounded-sm { + border-radius: var(--radius-sm); + } + .rounded-xs { + border-radius: var(--radius-xs); + } + .border { + border-style: var(--tw-border-style); + border-width: 1px; + } + .border-2 { + border-style: var(--tw-border-style); + border-width: 2px; + } + .border-l { + border-left-style: var(--tw-border-style); + border-left-width: 1px; + } + .border-blue-300 { + border-color: var(--color-blue-300); + } + .border-blue-500 { + border-color: var(--color-blue-500); + } + .border-blue-950 { + border-color: var(--color-blue-950); + } + .border-slate-200 { + border-color: var(--color-slate-200); + } + .border-slate-300 { + border-color: var(--color-slate-300); + } + .bg-blue-50 { + background-color: var(--color-blue-50); + } + .bg-blue-100 { + background-color: var(--color-blue-100); + } + .bg-pink-200 { + background-color: var(--color-pink-200); + } + .bg-white { + background-color: var(--color-white); + } + .fill-blue-900 { + fill: var(--color-blue-900); + } + .fill-blue-950 { + fill: var(--color-blue-950); + } + .object-cover { + object-fit: cover; + } + .p-0\.5 { + padding: calc(var(--spacing) * 0.5); + } + .p-2 { + padding: calc(var(--spacing) * 2); + } + .p-3 { + padding: calc(var(--spacing) * 3); + } + .p-4 { + padding: calc(var(--spacing) * 4); + } + .px-3 { + padding-inline: calc(var(--spacing) * 3); + } + .px-4 { + padding-inline: calc(var(--spacing) * 4); + } + .py-2 { + padding-block: calc(var(--spacing) * 2); + } + .pr-3 { + padding-right: calc(var(--spacing) * 3); + } + .text-center { + text-align: center; + } + .text-justify { text-align: justify; } + .text-right { + text-align: right; + } + .font-mono { + font-family: var(--font-mono); + } + .text-2xl { + font-size: var(--text-2xl); + line-height: var(--tw-leading, var(--text-2xl--line-height)); + } + .text-3xl { + font-size: var(--text-3xl); + line-height: var(--tw-leading, var(--text-3xl--line-height)); + } + .text-4xl { + font-size: var(--text-4xl); + line-height: var(--tw-leading, var(--text-4xl--line-height)); + } + .text-8xl { + font-size: var(--text-8xl); + line-height: var(--tw-leading, var(--text-8xl--line-height)); + } + .text-9xl { + font-size: var(--text-9xl); + line-height: var(--tw-leading, var(--text-9xl--line-height)); + } + .text-base { + font-size: var(--text-base); + line-height: var(--tw-leading, var(--text-base--line-height)); + } + .text-lg { + font-size: var(--text-lg); + line-height: var(--tw-leading, var(--text-lg--line-height)); + } + .text-sm { + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + } + .text-xl { + font-size: var(--text-xl); + line-height: var(--tw-leading, var(--text-xl--line-height)); + } + .leading-7 { + --tw-leading: calc(var(--spacing) * 7); + line-height: calc(var(--spacing) * 7); + } + .leading-tight { + --tw-leading: var(--leading-tight); + line-height: var(--leading-tight); + } + .font-bold { + --tw-font-weight: var(--font-weight-bold); + font-weight: var(--font-weight-bold); + } + .font-extrabold { + --tw-font-weight: var(--font-weight-extrabold); + font-weight: var(--font-weight-extrabold); + } + .font-medium { + --tw-font-weight: var(--font-weight-medium); + font-weight: var(--font-weight-medium); + } + .font-semibold { + --tw-font-weight: var(--font-weight-semibold); + font-weight: var(--font-weight-semibold); + } + .text-blue-500 { + color: var(--color-blue-500); + } + .text-blue-700 { + color: var(--color-blue-700); + } + .text-blue-900 { + color: var(--color-blue-900); + } + .text-blue-950 { + color: var(--color-blue-950); + } + .text-pink-900 { + color: var(--color-pink-900); + } + .text-pink-950 { + color: var(--color-pink-950); + } + .text-slate-600 { + color: var(--color-slate-600); + } + .text-slate-800 { + color: var(--color-slate-800); + } + .lowercase { + text-transform: lowercase; + } + .italic { + font-style: italic; + } + .no-underline { + text-decoration-line: none; + } + .blur { + --tw-blur: blur(8px); + filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); + } + .filter { + filter: var(--tw-blur,) var(--tw-brightness,) var(--tw-contrast,) var(--tw-grayscale,) var(--tw-hue-rotate,) var(--tw-invert,) var(--tw-saturate,) var(--tw-sepia,) var(--tw-drop-shadow,); + } + .transition { + transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events; + transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); + transition-duration: var(--tw-duration, var(--default-transition-duration)); + } + .transition-colors { + transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to; + transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); + transition-duration: var(--tw-duration, var(--default-transition-duration)); + } + .visited\:text-blue-950 { + &:visited { + color: var(--color-blue-950); + } + } + .visited\:text-purple-700 { + &:visited { + color: var(--color-purple-700); + } + } + .hover\:bg-pink-200 { + &:hover { + @media (hover: hover) { + background-color: var(--color-pink-200); + } + } + } + .hover\:fill-blue-400 { + &:hover { + @media (hover: hover) { + fill: var(--color-blue-400); + } + } + } + .sm\:float-none { + @media (width >= 40rem) { + float: none; + } + } + .sm\:clear-none { + @media (width >= 40rem) { + clear: none; + } + } + .sm\:my-4 { + @media (width >= 40rem) { + margin-block: calc(var(--spacing) * 4); + } + } + .sm\:mt-0 { + @media (width >= 40rem) { + margin-top: calc(var(--spacing) * 0); + } + } + .sm\:mb-0 { + @media (width >= 40rem) { + margin-bottom: calc(var(--spacing) * 0); + } + } + .sm\:ml-0 { + @media (width >= 40rem) { + margin-left: calc(var(--spacing) * 0); + } + } + .sm\:grid { + @media (width >= 40rem) { + display: grid; + } + } + .sm\:grid-flow-col { + @media (width >= 40rem) { + grid-auto-flow: column; + } + } + .sm\:grid-cols-\[max-content_1fr\] { + @media (width >= 40rem) { + grid-template-columns: max-content 1fr; + } + } + .sm\:grid-rows-\[max-content_1fr_max-content\] { + @media (width >= 40rem) { + grid-template-rows: max-content 1fr max-content; + } + } + .sm\:gap-4 { + @media (width >= 40rem) { + gap: calc(var(--spacing) * 4); + } + } + .sm\:py-4 { + @media (width >= 40rem) { + padding-block: calc(var(--spacing) * 4); + } + } + .md\:mx-6 { + @media (width >= 48rem) { + margin-inline: calc(var(--spacing) * 6); + } + } + .md\:my-8 { + @media (width >= 48rem) { + margin-block: calc(var(--spacing) * 8); + } + } + .md\:block { + @media (width >= 48rem) { + display: block; + } + } + .md\:grid { + @media (width >= 48rem) { + display: grid; + } + } + .md\:h-16 { + @media (width >= 48rem) { + height: calc(var(--spacing) * 16); + } + } + .md\:w-16 { + @media (width >= 48rem) { + width: calc(var(--spacing) * 16); + } + } + .md\:grid-cols-2 { + @media (width >= 48rem) { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + } + .md\:grid-cols-\[1fr_auto\] { + @media (width >= 48rem) { + grid-template-columns: 1fr auto; + } + } + .md\:grid-rows-\[masonry\] { + @media (width >= 48rem) { + grid-template-rows: masonry; + } + } + .md\:items-stretch { + @media (width >= 48rem) { + align-items: stretch; + } + } + .md\:justify-stretch { + @media (width >= 48rem) { + justify-content: stretch; + } + } + .md\:gap-x-8 { + @media (width >= 48rem) { + column-gap: calc(var(--spacing) * 8); + } + } + .md\:text-2xl { + @media (width >= 48rem) { + font-size: var(--text-2xl); + line-height: var(--tw-leading, var(--text-2xl--line-height)); + } + } + .md\:text-3xl { + @media (width >= 48rem) { + font-size: var(--text-3xl); + line-height: var(--tw-leading, var(--text-3xl--line-height)); + } + } + .md\:text-4xl { + @media (width >= 48rem) { + font-size: var(--text-4xl); + line-height: var(--tw-leading, var(--text-4xl--line-height)); + } + } + .md\:text-5xl { + @media (width >= 48rem) { + font-size: var(--text-5xl); + line-height: var(--tw-leading, var(--text-5xl--line-height)); + } + } + .md\:text-6xl { + @media (width >= 48rem) { + font-size: var(--text-6xl); + line-height: var(--tw-leading, var(--text-6xl--line-height)); + } + } + .md\:text-base { + @media (width >= 48rem) { + font-size: var(--text-base); + line-height: var(--tw-leading, var(--text-base--line-height)); + } + } + .md\:text-lg { + @media (width >= 48rem) { + font-size: var(--text-lg); + line-height: var(--tw-leading, var(--text-lg--line-height)); + } + } + .md\:text-xl { + @media (width >= 48rem) { + font-size: var(--text-xl); + line-height: var(--tw-leading, var(--text-xl--line-height)); + } + } + .md\:leading-tight { + @media (width >= 48rem) { + --tw-leading: var(--leading-tight); + line-height: var(--leading-tight); + } + } + .lg\:col-span-2 { + @media (width >= 64rem) { + grid-column: span 2 / span 2; + } + } + .lg\:row-span-2 { + @media (width >= 64rem) { + grid-row: span 2 / span 2; + } + } + .lg\:row-start-2 { + @media (width >= 64rem) { + grid-row-start: 2; + } + } + .lg\:mx-auto { + @media (width >= 64rem) { + margin-inline: auto; + } + } + .lg\:my-6 { + @media (width >= 64rem) { + margin-block: calc(var(--spacing) * 6); + } + } + .lg\:mt-10 { + @media (width >= 64rem) { + margin-top: calc(var(--spacing) * 10); + } + } + .lg\:mt-20 { + @media (width >= 64rem) { + margin-top: calc(var(--spacing) * 20); + } + } + .lg\:mb-10 { + @media (width >= 64rem) { + margin-bottom: calc(var(--spacing) * 10); + } + } + .lg\:block { + @media (width >= 64rem) { + display: block; + } + } + .lg\:grid { + @media (width >= 64rem) { + display: grid; + } + } + .lg\:hidden { + @media (width >= 64rem) { + display: none; + } + } + .lg\:grid-cols-2 { + @media (width >= 64rem) { + grid-template-columns: repeat(2, minmax(0, 1fr)); + } + } + .lg\:grid-cols-\[2fr_1fr\] { + @media (width >= 64rem) { + grid-template-columns: 2fr 1fr; + } + } + .lg\:grid-rows-\[min-content_1fr\] { + @media (width >= 64rem) { + grid-template-rows: min-content 1fr; + } + } + .lg\:gap-x-32 { + @media (width >= 64rem) { + column-gap: calc(var(--spacing) * 32); + } + } + .lg\:gap-y-8 { + @media (width >= 64rem) { + row-gap: calc(var(--spacing) * 8); + } + } + .lg\:text-4xl { + @media (width >= 64rem) { + font-size: var(--text-4xl); + line-height: var(--tw-leading, var(--text-4xl--line-height)); + } + } + .lg\:text-6xl { + @media (width >= 64rem) { + font-size: var(--text-6xl); + line-height: var(--tw-leading, var(--text-6xl--line-height)); + } + } + .lg\:text-lg { + @media (width >= 64rem) { + font-size: var(--text-lg); + line-height: var(--tw-leading, var(--text-lg--line-height)); + } + } + .xl\:col-auto { + @media (width >= 80rem) { + grid-column: auto; + } + } + .xl\:col-span-2 { + @media (width >= 80rem) { + grid-column: span 2 / span 2; + } + } + .xl\:row-span-2 { + @media (width >= 80rem) { + grid-row: span 2 / span 2; + } + } + .xl\:row-start-auto { + @media (width >= 80rem) { + grid-row-start: auto; + } + } + .xl\:mt-10 { + @media (width >= 80rem) { + margin-top: calc(var(--spacing) * 10); + } + } + .xl\:mb-4 { + @media (width >= 80rem) { + margin-bottom: calc(var(--spacing) * 4); + } + } + .xl\:block { + @media (width >= 80rem) { + display: block; + } + } + .xl\:flex { + @media (width >= 80rem) { + display: flex; + } + } + .xl\:grid { + @media (width >= 80rem) { + display: grid; + } + } + .xl\:hidden { + @media (width >= 80rem) { + display: none; + } + } + .xl\:grid-cols-3 { + @media (width >= 80rem) { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + } + .xl\:grid-cols-\[1fr_2fr\] { + @media (width >= 80rem) { + grid-template-columns: 1fr 2fr; + } + } + .xl\:justify-start { + @media (width >= 80rem) { + justify-content: flex-start; + } + } + .xl\:gap-8 { + @media (width >= 80rem) { + gap: calc(var(--spacing) * 8); + } + } + .xl\:gap-10 { + @media (width >= 80rem) { + gap: calc(var(--spacing) * 10); + } + } + .xl\:gap-x-32 { + @media (width >= 80rem) { + column-gap: calc(var(--spacing) * 32); + } + } + .xl\:border-l { + @media (width >= 80rem) { + border-left-style: var(--tw-border-style); + border-left-width: 1px; + } + } + .xl\:border-slate-300 { + @media (width >= 80rem) { + border-color: var(--color-slate-300); + } + } + .xl\:text-4xl { + @media (width >= 80rem) { + font-size: var(--text-4xl); + line-height: var(--tw-leading, var(--text-4xl--line-height)); + } + } + .xl\:text-7xl { + @media (width >= 80rem) { + font-size: var(--text-7xl); + line-height: var(--tw-leading, var(--text-7xl--line-height)); + } + } + .xl\:font-medium { + @media (width >= 80rem) { + --tw-font-weight: var(--font-weight-medium); + font-weight: var(--font-weight-medium); + } + } + .xl\:first\:border-l-0 { + @media (width >= 80rem) { + &:first-child { + border-left-style: var(--tw-border-style); + border-left-width: 0px; + } + } + } + .print\:hidden { + @media print { + display: none; + } + } + .print\:inline { + @media print { + display: inline; + } + } +} +@font-face { + font-family: 'Baloo2'; + font-style: normal; + font-display: swap; + src: local('Baloo2'), url(/fonts/baloo2/Baloo2-Latin-Variable-wght.woff2) format('woff2'); +} +@font-face { + font-family: 'Baloo 2'; + font-style: normal; + font-weight: 400 800; + font-display: swap; + src: url(/fonts/baloo2/Baloo2-Latin-Variable-ext-wght.woff2) format('woff2'); + unicode-range: U+0100-02AF, U+0304, U+0308, U+0329, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; +} +@font-face { + font-family: 'Baloo2 Fallback'; + font-style: normal; + font-weight: 400; + src: local('BlinkMacSystemFont'), local('Segoe UI'), local('Helvetica Neue'), local('Arial'); + ascent-override: 111.2%; + descent-override: 54.05%; + line-gap-override: 0%; + size-adjust: 96.95%; +} +@font-face { + font-family: 'Baloo2 Noto Fallback'; + font-style: normal; + font-weight: 400; + src: local('Noto Sans'); + ascent-override: 88%; + descent-override: none; + line-gap-override: 0%; + size-adjust: 92%; +} +@layer base { + a { + color: var(--color-pink-800); + text-decoration-line: underline; + text-underline-offset: 2px; + &:hover { + @media (hover: hover) { + color: var(--color-blue-500); + } + } + &:hover { + @media (hover: hover) { + transition-property: color, background-color, border-color, outline-color, text-decoration-color, fill, stroke, --tw-gradient-from, --tw-gradient-via, --tw-gradient-to, opacity, box-shadow, transform, translate, scale, rotate, filter, -webkit-backdrop-filter, backdrop-filter, display, visibility, content-visibility, overlay, pointer-events; + transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); + transition-duration: var(--tw-duration, var(--default-transition-duration)); + } + } + } + strong { + --tw-font-weight: var(--font-weight-medium); + font-weight: var(--font-weight-medium); + } +} +.article-body { + h1 { + margin-inline: auto; + margin-top: calc(var(--spacing) * 4); + margin-bottom: calc(var(--spacing) * 3); + max-width: var(--spacing-read); + padding-inline: calc(var(--spacing) * 4); + font-size: var(--text-2xl); + line-height: var(--tw-leading, var(--text-2xl--line-height)); + --tw-font-weight: var(--font-weight-semibold); + font-weight: var(--font-weight-semibold); + color: var(--color-blue-900); + @media (width >= 48rem) { + font-size: var(--text-4xl); + line-height: var(--tw-leading, var(--text-4xl--line-height)); + } + @media (width >= 64rem) { + font-size: var(--text-5xl); + line-height: var(--tw-leading, var(--text-5xl--line-height)); + } + } + h2 { + margin-inline: auto; + margin-top: calc(var(--spacing) * 4); + margin-bottom: calc(var(--spacing) * 3); + max-width: var(--spacing-read); + padding-inline: calc(var(--spacing) * 4); + font-size: var(--text-xl); + line-height: var(--tw-leading, var(--text-xl--line-height)); + --tw-font-weight: var(--font-weight-semibold); + font-weight: var(--font-weight-semibold); + color: var(--color-blue-900); + @media (width >= 48rem) { + margin-top: calc(var(--spacing) * 8); + } + @media (width >= 48rem) { + margin-bottom: calc(var(--spacing) * 6); + } + @media (width >= 48rem) { + font-size: var(--text-2xl); + line-height: var(--tw-leading, var(--text-2xl--line-height)); + } + @media (width >= 64rem) { + margin-top: calc(var(--spacing) * 12); + } + @media (width >= 64rem) { + margin-bottom: calc(var(--spacing) * 8); + } + @media (width >= 64rem) { + font-size: var(--text-4xl); + line-height: var(--tw-leading, var(--text-4xl--line-height)); + } + } + h3 { + margin-inline: auto; + margin-top: calc(var(--spacing) * 4); + margin-bottom: calc(var(--spacing) * 3); + max-width: var(--spacing-read); + padding-inline: calc(var(--spacing) * 4); + font-size: var(--text-lg); + line-height: var(--tw-leading, var(--text-lg--line-height)); + --tw-font-weight: var(--font-weight-semibold); + font-weight: var(--font-weight-semibold); + color: var(--color-blue-900); + @media (width >= 48rem) { + margin-top: calc(var(--spacing) * 8); + } + @media (width >= 48rem) { + margin-bottom: calc(var(--spacing) * 6); + } + @media (width >= 48rem) { + font-size: var(--text-xl); + line-height: var(--tw-leading, var(--text-xl--line-height)); + } + @media (width >= 64rem) { + margin-top: calc(var(--spacing) * 12); + } + @media (width >= 64rem) { + margin-bottom: calc(var(--spacing) * 8); + } + @media (width >= 64rem) { + font-size: var(--text-3xl); + line-height: var(--tw-leading, var(--text-3xl--line-height)); + } + } + h4 { + margin-inline: auto; + margin-top: calc(var(--spacing) * 3); + margin-bottom: calc(var(--spacing) * 2); + max-width: var(--spacing-read); + padding-inline: calc(var(--spacing) * 4); + font-size: var(--text-lg); + line-height: var(--tw-leading, var(--text-lg--line-height)); + --tw-font-weight: var(--font-weight-medium); + font-weight: var(--font-weight-medium); + color: var(--color-blue-900); + @media (width >= 48rem) { + margin-top: calc(var(--spacing) * 8); + } + @media (width >= 48rem) { + margin-bottom: calc(var(--spacing) * 6); + } + @media (width >= 48rem) { + font-size: var(--text-lg); + line-height: var(--tw-leading, var(--text-lg--line-height)); + } + @media (width >= 64rem) { + margin-top: calc(var(--spacing) * 12); + } + @media (width >= 64rem) { + margin-bottom: calc(var(--spacing) * 8); + } + @media (width >= 64rem) { + font-size: var(--text-3xl); + line-height: var(--tw-leading, var(--text-3xl--line-height)); + } + } p { - --tw-text-opacity: 1; - color: rgb(2 6 23 / var(--tw-text-opacity, 1)); - } - @media (min-width: 768px) { - p { - margin-top: 2rem; - margin-bottom: 2rem; + margin-inline: auto; + margin-block: calc(var(--spacing) * 2); + max-width: var(--spacing-read); + padding-inline: calc(var(--spacing) * 4); + text-align: justify; + color: var(--color-slate-950); + @media (width >= 48rem) { + margin-block: calc(var(--spacing) * 8); } - } - @media (min-width: 768px) { - p { - font-size: 1.125rem; - line-height: 1.75rem; + @media (width >= 48rem) { + font-size: var(--text-lg); + line-height: var(--tw-leading, var(--text-lg--line-height)); } - } - @media (min-width: 1024px) { - p { - font-size: 1.75rem; - line-height: 2.25rem; - letter-spacing: -0.015em; - font-weight: 400; + @media (width >= 64rem) { + font-size: var(--text-readxl); + line-height: var(--tw-leading, var(--text-readxl--line-height)); + letter-spacing: var(--tw-tracking, var(--text-readxl--letter-spacing)); + font-weight: var(--tw-font-weight, var(--text-readxl--font-weight)); } } pre { - margin-top: 0.25rem; - margin-bottom: 0.25rem; - } - pre { - margin-left: auto; - margin-right: auto; - } - pre { - max-width: 64rem; - } - pre { + margin-inline: auto; + margin-block: calc(var(--spacing) * 1); + max-width: var(--spacing-read); overflow: auto; - } - pre { - padding: 1rem; - } - pre { - font-size: 0.875rem; - line-height: 1.25rem; - } - figure { - padding: 1rem; + padding: calc(var(--spacing) * 4); + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); } figure { + padding: calc(var(--spacing) * 4); img { - margin-left: auto; - margin-right: auto; - } - img { - border-radius: 0.25rem; - } - img { - --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); - } - @media (min-width: 1024px) { - img { - max-width: min(70rem, 95vw); + margin-inline: auto; + border-radius: var(--radius-sm); + --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + @media (width >= 64rem) { + max-width: var(--spacing-image); } } } figcaption { - margin-top: 0.5rem; - } - figcaption { + margin-top: calc(var(--spacing) * 2); text-align: center; - } - figcaption { - font-size: 0.875rem; - line-height: 1.25rem; - } - figcaption { + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + color: var(--color-blue-800); font-style: italic; - } - figcaption { - --tw-text-opacity: 1; - color: rgb(12 73 128 / var(--tw-text-opacity, 1)); - } - @media (min-width: 768px) { - figcaption { - font-size: 1rem; - line-height: 1.5rem; + @media (width >= 48rem) { + font-size: var(--text-base); + line-height: var(--tw-leading, var(--text-base--line-height)); } - } - @media (min-width: 1024px) { - figcaption { - font-size: 1.125rem; - line-height: 1.75rem; + @media (width >= 64rem) { + font-size: var(--text-lg); + line-height: var(--tw-leading, var(--text-lg--line-height)); } } table { - margin-left: auto; - margin-right: auto; - } - table { - margin-top: 1rem; - margin-bottom: 1rem; - } - table { - max-width: min(70rem, 95vw); - } - table { + margin-inline: auto; + margin-block: calc(var(--spacing) * 4); + max-width: var(--spacing-image); table-layout: auto; - } - table { border-collapse: collapse; - } - table { - --tw-border-spacing-x: 3rem; - --tw-border-spacing-y: 3rem; + --tw-border-spacing-x: calc(var(--spacing) * 12); + --tw-border-spacing-y: calc(var(--spacing) * 12); border-spacing: var(--tw-border-spacing-x) var(--tw-border-spacing-y); - } - table { - border-radius: 0.25rem; - } - table { + border-radius: var(--radius-sm); + border-style: var(--tw-border-style); border-width: 1px; - } - table { - --tw-border-opacity: 1; - border-color: rgb(226 232 240 / var(--tw-border-opacity, 1)); - } - table { - font-size: 0.875rem; - line-height: 1.25rem; - } - @media (min-width: 768px) { - table { - font-size: 1rem; - line-height: 1.5rem; + border-color: var(--color-slate-200); + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + @media (width >= 48rem) { + font-size: var(--text-base); + line-height: var(--tw-leading, var(--text-base--line-height)); } - } - @media (min-width: 1024px) { - table { - margin-top: 2rem; - margin-bottom: 2rem; + @media (width >= 64rem) { + margin-block: calc(var(--spacing) * 8); } - } - @media (min-width: 1024px) { - table { - font-size: 1.25rem; - line-height: 1.75rem; + @media (width >= 64rem) { + font-size: var(--text-xl); + line-height: var(--tw-leading, var(--text-xl--line-height)); } } thead { - --tw-bg-opacity: 1; - background-color: rgb(225 239 253 / var(--tw-bg-opacity, 1)); + background-color: var(--color-blue-100); } tbody { - --tw-bg-opacity: 1; - background-color: rgb(248 250 252 / var(--tw-bg-opacity, 1)); + background-color: var(--color-slate-50); } - td, - th { + td, th { + border-bottom-style: var(--tw-border-style); border-bottom-width: 1px; - } - td, - th { - padding-top: 0.125rem; - padding-bottom: 0.125rem; - } - td, - th { - padding-left: 0.5rem; - padding-right: 0.5rem; - } - @media (min-width: 768px) { - td, - th { - padding-top: 0.5rem; - padding-bottom: 0.5rem; + padding-inline: calc(var(--spacing) * 2); + padding-block: calc(var(--spacing) * 0.5); + @media (width >= 48rem) { + padding-inline: calc(var(--spacing) * 5); + } + @media (width >= 48rem) { + padding-block: calc(var(--spacing) * 2); } } - @media (min-width: 768px) { - td, - th { - padding-left: 1.25rem; - padding-right: 1.25rem; + tr { + &:nth-child(even) { + background-color: var(--color-slate-100); } } - tr:nth-child(even) { - --tw-bg-opacity: 1; - background-color: rgb(241 245 249 / var(--tw-bg-opacity, 1)); - } - blockquote { - margin-left: 1.5rem; - margin-right: 1.5rem; - } - blockquote { - max-width: 60rem; - } blockquote { + margin-inline: calc(var(--spacing) * 6); + max-width: var(--spacing-note); + border-left-style: var(--tw-border-style); border-left-width: 4px; - } - blockquote { - --tw-border-opacity: 1; - border-color: rgb(215 34 169 / var(--tw-border-opacity, 1)); - } - blockquote { - --tw-bg-opacity: 1; - background-color: rgb(255 244 253 / var(--tw-bg-opacity, 1)); - } - blockquote { - padding-top: 0.25rem; - padding-bottom: 0.25rem; - } - blockquote { - padding-left: 0.5rem; - padding-right: 0.5rem; - } - @media (min-width: 1024px) { - blockquote { - margin-left: auto; - margin-right: auto; - } - } - blockquote { - p { - margin-top: 0.5rem; - margin-bottom: 0.5rem; + border-color: var(--color-pink-600); + background-color: var(--color-pink-50); + padding-inline: calc(var(--spacing) * 2); + padding-block: calc(var(--spacing) * 1); + @media (width >= 64rem) { + margin-inline: auto; } p { - max-width: 60rem; - } - p { - --tw-text-opacity: 1; - color: rgb(71 85 105 / var(--tw-text-opacity, 1)); - } - @media (min-width: 768px) { - p { - margin-top: 1rem; - margin-bottom: 1rem; + margin-block: calc(var(--spacing) * 2); + max-width: var(--spacing-note); + color: var(--color-slate-600); + @media (width >= 48rem) { + margin-block: calc(var(--spacing) * 4); } } } :not(pre) code { - border-radius: 0.25rem; - } - :not(pre) code { + border-radius: var(--radius-sm); + border-style: var(--tw-border-style); border-width: 1px; - } - :not(pre) code { - --tw-border-opacity: 1; - border-color: rgb(130 195 247 / var(--tw-border-opacity, 1)); - } - :not(pre) code { - --tw-bg-opacity: 1; - background-color: rgb(225 239 253 / var(--tw-bg-opacity, 1)); - } - :not(pre) code { - padding-left: 0.25rem; - padding-right: 0.25rem; - } - :not(pre) code { - padding-top: 0.125rem; - padding-bottom: 0.125rem; - } - :not(pre) code { - font-size: 0.875rem; - line-height: 1.25rem; - } - :not(pre) code { - --tw-text-opacity: 1; - color: rgb(119 24 89 / var(--tw-text-opacity, 1)); - } - @media (min-width: 768px) { - :not(pre) code { - font-size: 1rem; - line-height: 1.5rem; + border-color: var(--color-blue-300); + background-color: var(--color-blue-100); + padding-inline: calc(var(--spacing) * 1); + padding-block: calc(var(--spacing) * 0.5); + font-size: var(--text-sm); + line-height: var(--tw-leading, var(--text-sm--line-height)); + color: var(--color-pink-900); + @media (width >= 48rem) { + font-size: var(--text-base); + line-height: var(--tw-leading, var(--text-base--line-height)); } - } - @media (min-width: 1024px) { - :not(pre) code { - font-size: 1.25rem; - line-height: 1.75rem; + @media (width >= 64rem) { + font-size: var(--text-xl); + line-height: var(--tw-leading, var(--text-xl--line-height)); } } pre code pre { - margin-left: 0.5rem; - margin-right: 0.5rem; - } - pre code pre { - border-radius: 0.25rem; - } - pre code pre { - --tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05); - --tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); - } - @media (min-width: 1024px) { - pre code pre { - margin-left: auto; - margin-right: auto; + margin-inline: calc(var(--spacing) * 2); + border-radius: var(--radius-sm); + --tw-shadow: 0 1px 2px 0 var(--tw-shadow-color, rgb(0 0 0 / 0.05)); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + @media (width >= 64rem) { + margin-inline: auto; + } + @media (width >= 64rem) { + max-width: var(--spacing-note); + } + @media (width >= 64rem) { + font-size: var(--text-lg); + line-height: var(--tw-leading, var(--text-lg--line-height)); } } - @media (min-width: 1024px) { - pre code pre { - max-width: 60rem; + ul, ol { + margin-inline: auto; + margin-block: calc(var(--spacing) * 2); + max-width: var(--spacing-read); + padding-right: calc(var(--spacing) * 6); + padding-left: calc(var(--spacing) * 10); + color: var(--color-slate-950); + @media (width >= 48rem) { + margin-block: calc(var(--spacing) * 8); } - } - @media (min-width: 1024px) { - pre code pre { - font-size: 1.125rem; - line-height: 1.75rem; + @media (width >= 48rem) { + font-size: var(--text-lg); + line-height: var(--tw-leading, var(--text-lg--line-height)); } - } - ul, - ol { - margin-top: 0.5rem; - margin-bottom: 0.5rem; - } - ul, - ol { - margin-left: auto; - margin-right: auto; - } - ul, - ol { - max-width: 64rem; - } - ul, - ol { - padding-left: 2.5rem; - } - ul, - ol { - padding-right: 1.5rem; - } - ul, - ol { - --tw-text-opacity: 1; - color: rgb(2 6 23 / var(--tw-text-opacity, 1)); - } - @media (min-width: 768px) { - ul, - ol { - margin-top: 2rem; - margin-bottom: 2rem; + @media (width >= 64rem) { + padding-left: calc(var(--spacing) * 14); } - } - @media (min-width: 768px) { - ul, - ol { - font-size: 1.125rem; - line-height: 1.75rem; + @media (width >= 64rem) { + font-size: var(--text-readxl); + line-height: var(--tw-leading, var(--text-readxl--line-height)); + letter-spacing: var(--tw-tracking, var(--text-readxl--letter-spacing)); + font-weight: var(--tw-font-weight, var(--text-readxl--font-weight)); } - } - @media (min-width: 1024px) { - ul, - ol { - padding-left: 3.5rem; - } - } - @media (min-width: 1024px) { - ul, - ol { - font-size: 1.75rem; - line-height: 2.25rem; - letter-spacing: -0.015em; - font-weight: 400; - } - } - ul, - ol { & p { - padding-left: 0.5rem; - padding-right: 0.5rem; + padding-inline: calc(var(--spacing) * 2); } } ul { @@ -1851,53 +1507,40 @@ strong { list-style-type: decimal; } iframe { - margin-left: auto; - margin-right: auto; - } - iframe { - border-radius: 0.25rem; - } - iframe { - --tw-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1); - --tw-shadow-colored: 0 4px 6px -1px var(--tw-shadow-color), 0 2px 4px -2px var(--tw-shadow-color); - box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow); - } - @media (min-width: 1024px) { - iframe { - max-width: min(70rem, 95vw); + margin-inline: auto; + border-radius: var(--radius-sm); + --tw-shadow: 0 4px 6px -1px var(--tw-shadow-color, rgb(0 0 0 / 0.1)), 0 2px 4px -2px var(--tw-shadow-color, rgb(0 0 0 / 0.1)); + box-shadow: var(--tw-inset-shadow), var(--tw-inset-ring-shadow), var(--tw-ring-offset-shadow), var(--tw-ring-shadow), var(--tw-shadow); + @media (width >= 64rem) { + max-width: var(--spacing-image); } } } - -article a:visited { - color: rgb(68 30 115 ); +article a { + &:visited { + color: var(--color-purple-700); + } } - .video-embed { - margin: 1rem; - margin-left: auto; - margin-right: auto; - aspect-ratio: 16 / 9; - max-width: min(70rem, 95vw); + margin: calc(var(--spacing) * 4); + margin-inline: auto; + aspect-ratio: var(--aspect-video); + max-width: var(--spacing-image); } - .social-card-twitch:hover { transform: translate3d(0.6rem, -0.6rem, 0px); box-shadow: -3px 3px 0px 3px #6441a5; transition-delay: 75ms; } - .social-card-youtube:hover { - border-radius: 0px; + border-radius: 0; transform: scale(1.02); transition-delay: 100ms; } - .social-card-instagram:hover { filter: brightness(84%); transition-delay: 100ms; } - .social-card-tiktok { position: relative; &:hover { @@ -1905,485 +1548,278 @@ article a:visited { animation-delay: 200ms; } } - @keyframes tiktok-glitch { 0% { - box-shadow: - 0px 0px 0 rgba(0, 255, 255, 0), - 0px 0px 0 rgba(255, 0, 255, 0); + box-shadow: 0px 0px 0 rgba(0, 255, 255, 0), 0px 0px 0 rgba(255, 0, 255, 0); transform: translate(0, 0); } - 10% { - box-shadow: - -3px -3px 0 rgba(0, 255, 255, 0.8), - 3px 3px 0 rgba(255, 0, 255, 0.8); + box-shadow: -3px -3px 0 rgba(0, 255, 255, 0.8), 3px 3px 0 rgba(255, 0, 255, 0.8); transform: translate(-1px, -1px); } - 15% { - box-shadow: - 2px -2px 0 rgba(0, 255, 255, 0.6), - -2px 2px 0 rgba(255, 0, 255, 0.6); + box-shadow: 2px -2px 0 rgba(0, 255, 255, 0.6), -2px 2px 0 rgba(255, 0, 255, 0.6); transform: translate(2px, -2px); } - 20% { - box-shadow: - -1px 1px 0 rgba(0, 255, 255, 0.4), - 1px -1px 0 rgba(255, 0, 255, 0.4); + box-shadow: -1px 1px 0 rgba(0, 255, 255, 0.4), 1px -1px 0 rgba(255, 0, 255, 0.4); transform: translate(1px, 1px); } - 25% { - box-shadow: - -4px 4px 0 rgba(0, 255, 255, 1), - 4px -4px 0 rgba(255, 0, 255, 1); + box-shadow: -4px 4px 0 rgba(0, 255, 255, 1), 4px -4px 0 rgba(255, 0, 255, 1); transform: translate(-2px, 2px); } - 30% { - box-shadow: - 3px -3px 0 rgba(0, 255, 255, 0.5), - -3px 3px 0 rgba(255, 0, 255, 0.5); + box-shadow: 3px -3px 0 rgba(0, 255, 255, 0.5), -3px 3px 0 rgba(255, 0, 255, 0.5); transform: translate(3px, -3px); } - 40% { - box-shadow: - -2px 2px 0 rgba(0, 255, 255, 0.9), - 2px -2px 0 rgba(255, 0, 255, 0.9); + box-shadow: -2px 2px 0 rgba(0, 255, 255, 0.9), 2px -2px 0 rgba(255, 0, 255, 0.9); transform: translate(-1px, 1px); } - 50% { - box-shadow: - -1px -2px 0 rgba(0, 255, 255, 0.7), - 2px -1px 0 rgba(255, 0, 255, 0.7); + box-shadow: -1px -2px 0 rgba(0, 255, 255, 0.7), 2px -1px 0 rgba(255, 0, 255, 0.7); transform: translate(1px, -1px); } - 60% { - box-shadow: - 2px -2px 0 rgba(0, 255, 255, 0.3), - -2px 2px 0 rgba(255, 0, 255, 0.3); + box-shadow: 2px -2px 0 rgba(0, 255, 255, 0.3), -2px 2px 0 rgba(255, 0, 255, 0.3); transform: translate(2px, -2px); } - 75% { - box-shadow: - -3px 3px 0 rgba(0, 255, 255, 1), - 3px -3px 0 rgba(255, 0, 255, 1); + box-shadow: -3px 3px 0 rgba(0, 255, 255, 1), 3px -3px 0 rgba(255, 0, 255, 1); transform: translate(-3px, 3px); } - 85% { - box-shadow: - -2px -2px 0 rgba(0, 255, 255, 0.2), - 2px 2px 0 rgba(255, 0, 255, 0.2); + box-shadow: -2px -2px 0 rgba(0, 255, 255, 0.2), 2px 2px 0 rgba(255, 0, 255, 0.2); transform: translate(-2px, -2px); } - 100% { - box-shadow: - 0px 0px 0 rgba(0, 255, 255, 0), - 0px 0px 0 rgba(255, 0, 255, 0); + box-shadow: 0px 0px 0 rgba(0, 255, 255, 0), 0px 0px 0 rgba(255, 0, 255, 0); transform: translate(0, 0); } } - @view-transition { navigation: auto; } - -/* Define the animation for persistent elements (like the header and title) */ - -/* ::view-transition-group(*) { */ - -/* transition: transform 3.4s ease-in-out; */ - -/* } */ - -/* ::view-transition-group(blog_post_preview) { */ - -/* animation-duration: 5.5s; */ - -/* transition: transform 5.4s ease-in-out; */ - -/* opacity: 1; */ - -/* } */ - -.first\:border-l-0:first-child { - border-left-width: 0px; +@property --tw-translate-x { + syntax: "*"; + inherits: false; + initial-value: 0; } - -.visited\:text-blue-950:visited { - color: rgb(11 39 70 ); +@property --tw-translate-y { + syntax: "*"; + inherits: false; + initial-value: 0; } - -.visited\:text-purple-700:visited { - color: rgb(68 30 115 ); +@property --tw-translate-z { + syntax: "*"; + inherits: false; + initial-value: 0; } - -.hover\:bg-pink-200:hover { - --tw-bg-opacity: 1; - background-color: rgb(255 207 247 / var(--tw-bg-opacity, 1)); +@property --tw-rotate-x { + syntax: "*"; + inherits: false; } - -.hover\:fill-blue-400:hover { - fill: #42a6f0; +@property --tw-rotate-y { + syntax: "*"; + inherits: false; } - -@media (min-width: 640px) { - .sm\:float-none { - float: none; - } - - .sm\:clear-none { - clear: none; - } - - .sm\:my-4 { - margin-top: 1rem; - margin-bottom: 1rem; - } - - .sm\:mb-0 { - margin-bottom: 0px; - } - - .sm\:ml-0 { - margin-left: 0px; - } - - .sm\:mt-0 { - margin-top: 0px; - } - - .sm\:grid { - display: grid; - } - - .sm\:grid-flow-col { - grid-auto-flow: column; - } - - .sm\:grid-cols-\[max-content_1fr\] { - grid-template-columns: max-content 1fr; - } - - .sm\:grid-rows-\[max-content_1fr_max-content\] { - grid-template-rows: max-content 1fr max-content; - } - - .sm\:gap-4 { - gap: 1rem; - } - - .sm\:py-4 { - padding-top: 1rem; - padding-bottom: 1rem; - } -} - -@media (min-width: 768px) { - .md\:mx-6 { - margin-left: 1.5rem; - margin-right: 1.5rem; - } - - .md\:my-8 { - margin-top: 2rem; - margin-bottom: 2rem; - } - - .md\:block { - display: block; - } - - .md\:grid { - display: grid; - } - - .md\:h-16 { - height: 4rem; - } - - .md\:w-16 { - width: 4rem; - } - - .md\:grid-cols-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - - .md\:grid-cols-\[1fr_auto\] { - grid-template-columns: 1fr auto; - } - - .md\:grid-rows-\[masonry\] { - grid-template-rows: masonry; - } - - .md\:items-stretch { - align-items: stretch; - } - - .md\:justify-stretch { - justify-content: stretch; - } - - .md\:gap-x-8 { - -moz-column-gap: 2rem; - column-gap: 2rem; - } - - .md\:text-2xl { - font-size: 1.5rem; - line-height: 2rem; - } - - .md\:text-3xl { - font-size: 1.875rem; - line-height: 2.25rem; - } - - .md\:text-4xl { - font-size: 2.25rem; - line-height: 2.5rem; - } - - .md\:text-5xl { - font-size: 3rem; - line-height: 1; - } - - .md\:text-6xl { - font-size: 3.75rem; - line-height: 1; - } - - .md\:text-base { - font-size: 1rem; - line-height: 1.5rem; - } - - .md\:text-lg { - font-size: 1.125rem; - line-height: 1.75rem; - } - - .md\:text-xl { - font-size: 1.25rem; - line-height: 1.75rem; - } - - .md\:leading-tight { - line-height: 1.25; - } -} - -@media (min-width: 1024px) { - .lg\:col-span-2 { - grid-column: span 2 / span 2; - } - - .lg\:row-span-2 { - grid-row: span 2 / span 2; - } - - .lg\:row-start-2 { - grid-row-start: 2; - } - - .lg\:mx-auto { - margin-left: auto; - margin-right: auto; - } - - .lg\:my-6 { - margin-top: 1.5rem; - margin-bottom: 1.5rem; - } - - .lg\:mt-20 { - margin-top: 5rem; - } - - .lg\:mt-8 { - margin-top: 2rem; - } - - .lg\:mb-10 { - margin-bottom: 2.5rem; - } - - .lg\:block { - display: block; - } - - .lg\:grid { - display: grid; - } - - .lg\:hidden { - display: none; - } - - .lg\:grid-cols-2 { - grid-template-columns: repeat(2, minmax(0, 1fr)); - } - - .lg\:grid-cols-\[2fr_1fr\] { - grid-template-columns: 2fr 1fr; - } - - .lg\:grid-rows-\[min-content_1fr\] { - grid-template-rows: min-content 1fr; - } - - .lg\:gap-x-32 { - -moz-column-gap: 8rem; - column-gap: 8rem; - } - - .lg\:gap-y-8 { - row-gap: 2rem; - } - - .lg\:text-6xl { - font-size: 3.75rem; - line-height: 1; - } - - .lg\:text-lg { - font-size: 1.125rem; - line-height: 1.75rem; - } - - .lg\:text-4xl { - font-size: 2.25rem; - line-height: 2.5rem; - } -} - -@media (min-width: 1280px) { - .xl\:col-auto { - grid-column: auto; - } - - .xl\:col-span-2 { - grid-column: span 2 / span 2; - } - - .xl\:row-span-2 { - grid-row: span 2 / span 2; - } - - .xl\:row-start-auto { - grid-row-start: auto; - } - - .xl\:mb-4 { - margin-bottom: 1rem; - } - - .xl\:mt-10 { - margin-top: 2.5rem; - } - - .xl\:block { - display: block; - } - - .xl\:flex { - display: flex; - } - - .xl\:grid { - display: grid; - } - - .xl\:hidden { - display: none; - } - - .xl\:auto-cols-auto { - grid-auto-columns: auto; - } - - .xl\:auto-cols-fr { - grid-auto-columns: minmax(0, 1fr); - } - - .xl\:grid-flow-col { - grid-auto-flow: column; - } - - .xl\:grid-cols-3 { - grid-template-columns: repeat(3, minmax(0, 1fr)); - } - - .xl\:grid-cols-\[1fr_2fr\] { - grid-template-columns: 1fr 2fr; - } - - .xl\:justify-start { - justify-content: flex-start; - } - - .xl\:gap-8 { - gap: 2rem; - } - - .xl\:gap-5 { - gap: 1.25rem; - } - - .xl\:gap-10 { - gap: 2.5rem; - } - - .xl\:gap-x-32 { - -moz-column-gap: 8rem; - column-gap: 8rem; - } - - .xl\:border-l { - border-left-width: 1px; - } - - .xl\:border-slate-300 { - --tw-border-opacity: 1; - border-color: rgb(203 213 225 / var(--tw-border-opacity, 1)); - } - - .xl\:text-4xl { - font-size: 2.25rem; - line-height: 2.5rem; - } - - .xl\:text-7xl { - font-size: 4.5rem; - line-height: 1; - } - - .xl\:font-medium { - font-weight: 500; - } - - .xl\:first\:border-l-0:first-child { - border-left-width: 0px; - } -} - -@media print { - .print\:inline { - display: inline; - } - - .print\:hidden { - display: none; +@property --tw-rotate-z { + syntax: "*"; + inherits: false; +} +@property --tw-skew-x { + syntax: "*"; + inherits: false; +} +@property --tw-skew-y { + syntax: "*"; + inherits: false; +} +@property --tw-border-style { + syntax: "*"; + inherits: false; + initial-value: solid; +} +@property --tw-leading { + syntax: "*"; + inherits: false; +} +@property --tw-font-weight { + syntax: "*"; + inherits: false; +} +@property --tw-blur { + syntax: "*"; + inherits: false; +} +@property --tw-brightness { + syntax: "*"; + inherits: false; +} +@property --tw-contrast { + syntax: "*"; + inherits: false; +} +@property --tw-grayscale { + syntax: "*"; + inherits: false; +} +@property --tw-hue-rotate { + syntax: "*"; + inherits: false; +} +@property --tw-invert { + syntax: "*"; + inherits: false; +} +@property --tw-opacity { + syntax: "*"; + inherits: false; +} +@property --tw-saturate { + syntax: "*"; + inherits: false; +} +@property --tw-sepia { + syntax: "*"; + inherits: false; +} +@property --tw-drop-shadow { + syntax: "*"; + inherits: false; +} +@property --tw-drop-shadow-color { + syntax: "*"; + inherits: false; +} +@property --tw-drop-shadow-alpha { + syntax: ""; + inherits: false; + initial-value: 100%; +} +@property --tw-drop-shadow-size { + syntax: "*"; + inherits: false; +} +@property --tw-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-shadow-color { + syntax: "*"; + inherits: false; +} +@property --tw-shadow-alpha { + syntax: ""; + inherits: false; + initial-value: 100%; +} +@property --tw-inset-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-inset-shadow-color { + syntax: "*"; + inherits: false; +} +@property --tw-inset-shadow-alpha { + syntax: ""; + inherits: false; + initial-value: 100%; +} +@property --tw-ring-color { + syntax: "*"; + inherits: false; +} +@property --tw-ring-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-inset-ring-color { + syntax: "*"; + inherits: false; +} +@property --tw-inset-ring-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-ring-inset { + syntax: "*"; + inherits: false; +} +@property --tw-ring-offset-width { + syntax: ""; + inherits: false; + initial-value: 0px; +} +@property --tw-ring-offset-color { + syntax: "*"; + inherits: false; + initial-value: #fff; +} +@property --tw-ring-offset-shadow { + syntax: "*"; + inherits: false; + initial-value: 0 0 #0000; +} +@property --tw-border-spacing-x { + syntax: ""; + inherits: false; + initial-value: 0; +} +@property --tw-border-spacing-y { + syntax: ""; + inherits: false; + initial-value: 0; +} +@layer properties { + @supports ((-webkit-hyphens: none) and (not (margin-trim: inline))) or ((-moz-orient: inline) and (not (color:rgb(from red r g b)))) { + *, ::before, ::after, ::backdrop { + --tw-translate-x: 0; + --tw-translate-y: 0; + --tw-translate-z: 0; + --tw-rotate-x: initial; + --tw-rotate-y: initial; + --tw-rotate-z: initial; + --tw-skew-x: initial; + --tw-skew-y: initial; + --tw-border-style: solid; + --tw-leading: initial; + --tw-font-weight: initial; + --tw-blur: initial; + --tw-brightness: initial; + --tw-contrast: initial; + --tw-grayscale: initial; + --tw-hue-rotate: initial; + --tw-invert: initial; + --tw-opacity: initial; + --tw-saturate: initial; + --tw-sepia: initial; + --tw-drop-shadow: initial; + --tw-drop-shadow-color: initial; + --tw-drop-shadow-alpha: 100%; + --tw-drop-shadow-size: initial; + --tw-shadow: 0 0 #0000; + --tw-shadow-color: initial; + --tw-shadow-alpha: 100%; + --tw-inset-shadow: 0 0 #0000; + --tw-inset-shadow-color: initial; + --tw-inset-shadow-alpha: 100%; + --tw-ring-color: initial; + --tw-ring-shadow: 0 0 #0000; + --tw-inset-ring-color: initial; + --tw-inset-ring-shadow: 0 0 #0000; + --tw-ring-inset: initial; + --tw-ring-offset-width: 0px; + --tw-ring-offset-color: #fff; + --tw-ring-offset-shadow: 0 0 #0000; + --tw-border-spacing-x: 0; + --tw-border-spacing-y: 0; + } } } diff --git a/tailwind.config.js b/tailwind.config.js deleted file mode 100644 index f9664f1..0000000 --- a/tailwind.config.js +++ /dev/null @@ -1,112 +0,0 @@ -/** @type {import('tailwindcss').Config} */ -module.exports = { - content: ["./templates/**/**.html"], - theme: { - extend: { - fontFamily: { - sans: [ - "Baloo2", - "Baloo2 Noto Fallback", - "Baloo2 Fallback", - "ui-sans-serif", - "system-ui", - "sans-serif", - "Apple Color Emoji", - "Segoe UI Emoji", - "Segoe UI Symbol", - "Noto Color Emoji", - ], - }, - spacing: { - note: "60rem", - read: "64rem", - image: "min(70rem, 95vw)", - maxindex: "100rem", - }, - width: { - note: "60rem", - read: "64rem", - image: "min(70rem, 95vw)", - maxindex: "100rem", - }, - fontSize: { - readxl: [ - "1.75rem", - { - lineHeight: "2.25rem", - letterSpacing: "-0.015em", - fontWeight: "400", - }, - ], - }, - colors: { - // blue: { - // 50: "#ecf6fe", - // 100: "#d9edfc", - // 200: "#b3dbf9", - // 300: "#8ecaf6", - // 400: "#68b8f3", - // 500: "#42a6f0", - // 600: "#3585c0", - // 700: "#286490", - // 800: "#1F4E71", - // 900: "#173A54", - // 950: "#0F2637", - // }, - blue: { - 50: "#f1f7fe", - 100: "#e1effd", - 200: "#bddefa", - 300: "#82c3f7", - 400: "#42a6f0", - 500: "#1789e0", - 600: "#0a6cbf", - 700: "#0a569a", - 800: "#0c4980", - 900: "#103e6a", - 950: "#0b2746", - }, - // pink: { - // 50: "#FFFBFE", - // 100: "#FFE4F9", - // 200: "#FECEF4", - // 300: "#FEB8EF", - // 400: "#fea6eb", - // 500: "#D38AC3", - // 600: "#B476A7", - // 700: "#96628B", - // 800: "#774E6E", - // 900: "#593A52", - // 950: "#3A2636", - // }, - pink: { - 50: "#fff4fd", - 100: "#ffe7fb", - 200: "#ffcff7", - 300: "#fea6eb", - 400: "#fc76dd", - 500: "#f342ca", - 600: "#d722a9", - 700: "#b31889", - 800: "#92166e", - 900: "#771859", - 950: "#500238", - }, - purple: { - 50: "#F8F5FC", - 100: "#D5C2ED", - 200: "#B28EDE", - 300: "#8F5BCF", - 400: "#6D30B9", - 500: "#5F2AA2", - 600: "#52248A", - 700: "#441E73", - 800: "#36185C", - 900: "#281244", - 950: "#1A0C2D", - }, - }, - }, - }, - plugins: [], -}; diff --git a/templates/blog_post.html b/templates/blog_post.html index 1e792a7..24f569d 100644 --- a/templates/blog_post.html +++ b/templates/blog_post.html @@ -41,7 +41,7 @@