@import "tailwindcss";

@custom-variant dark (&:where(.dark-theme, .dark-theme *));
@theme {
    --ui-primary: var(--color-deep-dark);
    --ui-container: var(--container-5xl);
    --ui-radius: var(--radius-sm);
    --ui-bg: white;
    --ui-bg-muted: var(--color-cloud-semilight);
    --ui-bg-elevated: var(--color-cloud-medium);
    --ui-bg-inverted: var(--color-deep-dark);
    --ui-bg-muted-inverted: var(--color-deep-semidark);
    --ui-bg-elevated-inverted: var(--color-deep-medium);
    --ui-border: var(--color-cloud-medium);
    --ui-border-accented: var(--color-cloud-semidark);
    --ui-text: var(--color-deep-dark);
    --ui-text-muted: var(--color-smoke-medium);
    --ui-text-blind: var(--color-smoke-dark);
    --ui-text-inverted: var(--color-cloud-light);
    --ui-text-muted-inverted: var(--color-cloud-medium);
    --ui-text-blind-inverted: var(--color-cloud-dark);
    --ui-header-logo-inverted: 1;
    --color-primary-dark: oklch(0.56 0.2408 260.82);
    --color-primary: oklch(0.56 0.2408 260.82);
    --color-primary-ghost: oklch(0.56 0.2408 260.82 / 0);
    --color-primary-light: oklch(0.68 0.1765 252.26);
    --color-primary-lighter: oklch(0.76 0.13 250.21);
    --color-primary-content: oklch(0.975 0.0234 256.1);
    --color-deep-dark: oklch(0.185 0 0);
    --color-deep-semidark: oklch(0.225 0 0);
    --color-deep-medium: oklch(0.245 0 0);
    --color-deep-semilight: oklch(0.265 0 0);
    --color-deep-light: oklch(0.285 0 0);
    --color-smoke-dark: oklch(0.405 0 0);
    --color-smoke-semidark: oklch(0.425 0 0);
    --color-smoke-medium: oklch(0.445 0 0);
    --color-smoke-semilight: oklch(0.465 0 0);
    --color-smoke-light: oklch(0.485 0 0);
    --color-cloud-dark: oklch(0.905 0 0);
    --color-cloud-semidark: oklch(0.925 0 0);
    --color-cloud-medium: oklch(0.945 0 0);
    --color-cloud-semilight: oklch(0.965 0 0);
    --color-cloud-light: oklch(0.985 0 0);
    --color-mc-outline: 30, 30, 31;
    --color-mc-inline: 255, 255, 255, 0.2;
    --color-mc-primary: 79, 160, 51;
    --color-mc-primary-hover: 60, 133, 39;
    --color-mc-primary-up: 29, 77, 19;
    --color-mc-primary-down: 40, 100, 28;
    --color-mc-surface: 244, 246, 249;
    --color-mc-surface-container: 230, 232, 235;
    --color-mc-surface-hover: 208, 209, 212;
    --color-mc-surface-up: 88, 88, 90;
    --color-mc-surface-down: 177, 178, 181;
    --color-mc-input: 49, 50, 51;
    --color-mc-input-shadow: 36, 36, 37;
    --color-mc-container: 72, 73, 74;
    --color-mc-container-up: 49, 50, 51;
    --color-mc-container-hover: 88, 88, 90;
    --color-mc-container-down: 49, 50, 51;
    --color-mc-container-top: 90, 91, 92;
    --color-mc-container-bottom: 50, 51, 52;

    --font-display: Inter, NotoSansThai, sans-serif;
    --font-sans: Inter, NotoSansThai, sans-serif;
    --font-sans--font-feature-settings: "liga", "calt", "ss01", "cv05", "cv06", "cv11";
    --font-mono: RobotoMono, ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
    --font-serif: RobotoSerif, Georgia, Garamond, "Times New Roman", Times, serif;

    --ease-fluid: 0.2, 0, 0, 1;
    --ease-fluid-in: .6, .2, .7, .4;
}
@supports (font-variation-settings: normal) {
    :root {
        --font-display: InterVariable, NotoSansThai, sans-serif;
        --font-sans: InterVariable, NotoSansThaiVariable, sans-serif;
        --font-monospace: RobotoMonoVariable, NotoSansThaiVariable, sans-serif;
        --font-serif: RobotoSerifVariable, Georgia, Garamond, "Times New Roman", Times, serif;
        font-optical-sizing: auto;
    }
}
.dark-mode {
    --ui-primary: var(--color-cloud-light);
    --ui-bg: var(--color-deep-dark);
    --ui-bg-muted: var(--color-deep-semidark);
    --ui-bg-elevated: var(--color-deep-medium);
    --ui-bg-inverted: var(--color-cloud-light);
    --ui-bg-muted-inverted: var(--color-cloud-semilight);
    --ui-bg-elevated-inverted: var(--color-cloud-medium);
    --ui-border: var(--color-deep-medium);
    --ui-border-accented: var(--color-deep-light);
    --ui-text: var(--color-cloud-light);
    --ui-text-muted: var(--color-cloud-medium);
    --ui-text-blind: var(--color-cloud-dark);
    --ui-text-inverted: var(--color-deep-light);
    --ui-text-muted-inverted: var(--color-deep-medium);
    --ui-text-blind-inverted: var(--color-deep-dark);
    --ui-header-logo-inverted: 0;
}
@keyframes ring {
    0% {
        outline: 0px solid var(--ui-ring-color);
    outline-offset: var(--ui-ring-offset);
    }
    25% {
        outline: 12px solid var(--ui-ring-color);
    outline-offset: var(--ui-ring-offset);
    }
    100% {
        outline: var(--ui-ring-size) solid var(--ui-ring-color);
    outline-offset: var(--ui-ring-offset);
    }
}
*:focus-visible {
    --ui-ring-size: 2px;
    --ui-ring-color: var(--color-primary);
    --ui-ring-offset: 0;
    animation: ring 0.5s cubic-bezier(var(--ease-fluid));
    outline: var(--ui-ring-size) solid var(--ui-ring-color);
    outline-offset: var(--ui-ring-offset);
}
h1,h2,h3,h4,h5,h6 {
    @apply font-display;
    color: var(--ui-text);
}
body,main {
    font-family: var(--font-sans);
    padding: 0;
    margin: 0;
    color: var(--ui-text-muted);
    background-color: var(--ui-bg);
    line-height: 1.35;
}
.web-header {
    padding: 0 calc(var(--spacing)*4);
    display: flex;
    flex-direction: row;
    position: sticky;
    top: 0;
    height: calc(var(--spacing)*14);
    z-index: 1000;
    @apply bg-(--ui-bg) shadow-xs shadow-[rgb(0,0,0,0.07)] transition-shadow;
}
.web-header.web-header-bg {
    .web-nav-title {
        @apply text-(--color-cloud-light)
    }
    @apply bg-(--color-deep-semidark) text-(--color-cloud-medium);
}
.web-header-emit-shadow-when-top.shadow-active {
    @apply shadow-lg;
}
.web-nav, .web-footer-content, .article {
    width: 100%;
}
.web-heading {
    margin: 0 auto;
    display: flex;
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    height: 100%;
    max-width: var(--ui-container);
    .web-heading-left-section {
        width: fit-content;
        display: flex;
        flex-direction: row;
        justify-content: start;
        height: 100%;
        align-items: center;
    }
    .web-heading-right-section {
        display: flex;
        width: fit-content;
        flex-direction: row;
        justify-content: end;
        height: 100%;
        align-items: center;
    }
}
p {
    @apply my-[1em];
}
.font-hero {
    @apply text-5xl sm:text-6xl md:text-7xl font-bold my-[.2em];
}
.font-hero-desc {
    @apply text-xl font-medium;
}
.web-title {
    @apply text-3xl sm:text-4xl my-[.7em] transition-[color] ease-fluid duration-100;
    a {
        cursor: pointer;
    }
    .inline-icon {
        @apply transition-[opacity_margin] ease-fluid duration-100 select-none;
        opacity: 0.5;
    }
    &:hover .inline-icon {
        opacity: 1;
        margin-left: 0.5rem;
    }
    &:active a {
        @apply text-primary;
    }
    &:focus-visible a {
        @apply underline;
    }
    &.link {
        color: var(--ui-text);
    }
}
.web-nav-title {
    @apply text-lg font-bold;
}
.web-hero.web-hero-bg {
    @apply bg-(--color-deep-semidark) text-(--color-cloud-medium);
    h1,h2,h3,h4,h5,h6 {
        @apply text-(--color-cloud-light)
    }
}
.web-hero {
    padding: clamp(calc(var(--spacing) * 32), 9vw, calc(var(--spacing) * 48)) calc(var(--spacing)*4);
    @apply flex flex-col items-center text-center;
}
.web-section {
    @apply my-16 px-4;
    max-width: var(--ui-container);
    margin: calc(var(--spacing)*16) auto;
}
.web-section:first-child {
    @apply mt-0;
}
.project-cards, .font-cards {
    @apply flex flex-col gap-1;
}
.project-cards .project-card:not(:last-child):not(:first-child):not(:only-child), .font-cards .font-card:not(:last-child):not(:first-child):not(:only-child) {
    @apply rounded-md;
}
.project-cards .project-card:last-child:not(:only-child), .font-cards .font-card:last-child:not(:only-child) {
    @apply rounded-t-md;
}
.project-cards .project-card:first-child:not(:only-child), .font-cards .font-card:first-child:not(:only-child) {
    @apply rounded-b-md;
}
.project-card, .font-card {
    height: 100%;
    padding: 1rem;
    @apply flex flex-col items-center sm:flex-row sm:gap-4 bg-(--ui-bg-muted) hover:bg-(--ui-bg-elevated) rounded-3xl transition-colors duration-100 ease-fluid;
    h3 { @apply text-2xl font-bold; }
    h3,p { z-index: 1; }
    img { @apply mb-2 sm:mb-0 aspect-video object-cover w-full sm:max-w-56; }
    p {
        @apply line-clamp-2;
        margin: 0;
        width: 100%;
    }
    .iconify {
        background-color: var(--ui-text);
        width: calc(var(--spacing)*16);
        height: calc(var(--spacing)*16);
    }
    .project-card-content, .font-card-content {
        @apply block w-full;
    }
    &:disabled, &[disabled] {
        @apply opacity-50 pointer-events-none cursor-not-allowed;
    }
}
.font-card {
    @apply flex-row;
}
.hamburger-toggle {
    @apply flex md:hidden h-14 w-9 cursor-pointer items-center justify-center hover:bg-(--ui-text)/5 active:bg-(--ui-text)/10 transition-colors duration-100 ease-fluid;
}
.hamburger-menu {
    @apply flex flex-col fixed left-0 top-14 w-full bg-(--color-deep-semidark) text-(--color-cloud-medium) h-full z-[1000];
    .nav-wrapper {
        list-style-type: none;
        display: flex;
        flex-direction: column;
        margin: 0;
        padding: 0 calc(var(--spacing)*4);
        width: 100%;
        .nav-link {
            height: calc(var(--spacing)*14);
            width: 100%;
            @apply ml-0;
            a {
                display: flex;
                align-items: center;
                height: calc(var(--spacing)*14);
                width: 100%;
                @apply pl-3 cursor-pointer hover:bg-(--ui-text)/5 active:bg-(--ui-text)/10 transition-colors duration-100 ease-fluid;
            }
            a.router-link-exact-active {
                @apply border-l-2 border-primary box-border pl-2.5 text-primary;
            }
        }
    }
}
.nav-links {
    @apply hidden md:flex;
    height: 100%;
    .nav-wrapper {
        list-style-type: none;
        display: flex;
        flex-direction: row;
        height: 100%;
        .nav-link {
            height: 100%;
            @apply ml-0;
            a {
                display: flex;
                align-items: center;
                height: 100%;
                @apply px-3 cursor-pointer hover:text-primary active:opacity-80 transition-colors duration-100 ease-fluid;
            }
            a.router-link-exact-active {
                @apply text-primary;
            }
        }
    }
}
code, pre, tt, kbd, samp {
    font-size: 1em;
}
.link {
    &:hover {
        @apply underline text-(--ui-text);
    }
    &.link-no-underline {
        @apply no-underline;
    }
}
ul,li { @apply ml-[1em] }
ul { @apply list-disc; }

button.btn, a.btn {
    @apply cursor-pointer;
}
.btn {
    @apply h-10 bg-primary text-primary-content px-4 rounded-[20px];
}
.btn.btn-sm {
    @apply h-9;
}
.btn.btn-neutral {
    @apply bg-(--ui-bg-muted) text-(--ui-text);
    &:hover {
        @apply bg-(--ui-bg-elevated);
    }
    &:active {
        @apply bg-(--ui-border-accented);
    }
}

img {
    @apply rounded-lg;
}

.prose {
    h1,h2,h3,h4,h5,h6 {
        @apply font-bold;
    }
    h2 {
        @apply text-3xl my-6;
    }
}