/* MỤC LỤC
1. Reset và Khai báo biến
2. Text Styles & Background
--- 2.1: Text Colors
--- 2.2: Font Size
--- 2.3: Font Weight
--- 2.4: Text Transform & Alignment
--- 2.5: Background Colors
3. Margin and Padding Styles
--- 3.1: Margin 0
--- 3.2: Margin Auto
--- 3.3: Spacing 1
--- 3.4: Spacing 2
--- 3.5: Spacing 3
--- 3.6: Spacing 4
--- 3.7: Spacing 5
--- 3.8: Spacing 6
--- 3.9: Spacing 8
--- 3.10: Spacing 10
--- 3.11: Spacing 12
--- 3.12: Spacing 16
--- 3.13: Spacing 20
--- 3.14: Gaps
4. Layout Templates
--- 4.1: Width & Height
--- 4.2: Grid Template
--- 4.3: Display
--- 4.4: Position
5. Decorations
--- 5.1: Border
--- 5.2: Border Radius
--- 5.3: Box Shadow
--- 5.4: Transitions
*/



/* Bắt đầu 1. Reset và Khai báo biến */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

:root,
:host {
    --color-red-50: #fef2f2;
    --color-red-100: #ffe2e2;
    --color-red-200: #ffcaca;
    --color-red-300: #ffa3a3;
    --color-red-500: #fb2c36;
    --color-red-600: #e40014;
    --color-red-700: #bf000f;
    --color-red-800: #9f0712;
    --color-orange-50: #fff7ed;
    --color-orange-200: #ffd7a8;
    --color-orange-600: #ff8c42;
    --color-orange-700: #c53c00;
    --color-yellow-50: #fefce8;
    --color-yellow-100: #fef9c2;
    --color-yellow-200: #fff085;
    --color-yellow-500: #ffd000;
    --color-yellow-700: #a36100;
    --color-yellow-800: #874b00;
    --color-green-50: #f0fdf4;
    --color-green-100: #dcfce7;
    --color-green-200: #b9f8cf;
    --color-green-300: #7bf1a8;
    --color-green-500: #00a544;
    --color-green-600: #00a544;
    --color-green-700: #008138;
    --color-green-800: #016630;
    --color-blue-50: #eff6ff;
    --color-blue-200: #bedbff;
    --color-blue-600: #155dfc;
    --color-blue-700: #1447e6;
    --color-blue-800: #193cb8;
    --color-indigo-50: #eef2ff;
    --color-indigo-200: #c7d2ff;
    --color-indigo-500: #625fff;
    --color-indigo-600: #4f39f6;
    --color-indigo-700: #432dd7;
    --color-gray-50: #f9fafb;
    --color-gray-100: #f3f4f6;
    --color-gray-200: #e5e7eb;
    --color-gray-300: #d1d5dc;
    --color-gray-400: #99a1af;
    --color-gray-500: #6a7282;
    --color-gray-600: #4a5565;
    --color-gray-700: #364153;
    --color-gray-800: #1e2939;
    --color-gray-900: #101828;
    --color-black: #000;
    --color-white: #fff;
    --spacing: .25rem;
    --container-md: 28rem;
    --container-2xl: 42rem;
    --container-5xl: 64rem;
    --container-6xl: 72rem;
    --text-xs: .75rem;
    --text-xs--line-height: calc(1 / .75);
    --text-sm: .875rem;
    --text-sm--line-height: calc(1.25 / .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.5rem;
    --text-4xl--line-height: calc(2.5 / 2.25);
    --text-5xl: 3rem;
    --text-5xl--line-height: 1;
    --font-weight-medium: 500;
    --font-weight-semibold: 600;
    --font-weight-bold: 700;
    --tracking-wide: .025em;
    --tracking-wider: .05em;
    --leading-tight: 1.25;
    --leading-relaxed: 1.625;
    --radius-md: .375rem;
    --radius-lg: .5rem;
    --radius-xl: .75rem;
    --animate-spin: spin 1s linear infinite;
    --animate-pulse: pulse 2s cubic-bezier(.4, 0, .6, 1) infinite;
    --default-transition-duration: .15s;
    --default-transition-timing-function: cubic-bezier(.4, 0, .2, 1);
    --default-font-family: var(--font-sans);
    --default-mono-font-family: var(--font-mono);
}

/* Kết thúc 1. Reset và Khai báo biến */

/* 2. Text Styles */

body {
    font-family: 'TikTok Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    line-height: 1.6;
    color: #333;
    background: var(--background);
    font-size: 16px;
}

input,
textarea,
select,
button {
    font-family: 'TikTok Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
    border: none;
    background: transparent;
}

/* 2.1: Text Colors */

.text-red-50 {
    color: var(--color-red-50);
}

.text-red-100 {
    color: var(--color-red-100);
}

.text-red-200 {
    color: var(--color-red-200);
}

.text-red-300 {
    color: var(--color-red-300);
}

.text-red-500 {
    color: var(--color-red-500);
}

.text-red-600 {
    color: var(--color-red-600);
}

.text-red-700 {
    color: var(--color-red-700);
}

.text-red-800 {
    color: var(--color-red-800);
}

.text-orange-50 {
    color: var(--color-orange-50);
}

.text-orange-200 {
    color: var(--color-orange-200);
}

.text-orange-600 {
    color: var(--color-orange-600);
}

.text-orange-700 {
    color: var(--color-orange-700);
}

.text-yellow-50 {
    color: var(--color-yellow-50);
}

.text-yellow-100 {
    color: var(--color-yellow-100);
}

.text-yellow-200 {
    color: var(--color-yellow-200);
}

.text-yellow-500 {
    color: var(--color-yellow-500);
}

.text-yellow-700 {
    color: var(--color-yellow-700);
}

.text-yellow-800 {
    color: var(--color-yellow-800);
}

.text-green-50 {
    color: var(--color-green-50);
}

.text-green-100 {
    color: var(--color-green-100);
}

.text-green-200 {
    color: var(--color-green-200);
}

.text-green-300 {
    color: var(--color-green-300);
}

.text-green-500 {
    color: var(--color-green-500);
}

.text-green-600 {
    color: var(--color-green-600);
}

.text-green-700 {
    color: var(--color-green-700);
}

.text-green-800 {
    color: var(--color-green-800);
}

.text-blue-50 {
    color: var(--color-blue-50);
}

.text-blue-200 {
    color: var(--color-blue-200);
}

.text-blue-600 {
    color: var(--color-blue-600);
}

.text-blue-700 {
    color: var(--color-blue-700);
}

.text-blue-800 {
    color: var(--color-blue-800);
}

.text-indigo-50 {
    color: var(--color-indigo-50);
}

.text-indigo-200 {
    color: var(--color-indigo-200);
}

.text-indigo-500 {
    color: var(--color-indigo-500);
}

.text-indigo-600 {
    color: var(--color-indigo-600);
}

.text-indigo-700 {
    color: var(--color-indigo-700);
}

.text-gray-50 {
    color: var(--color-gray-50);
}

.text-gray-100 {
    color: var(--color-gray-100);
}

.text-gray-200 {
    color: var(--color-gray-200);
}

.text-gray-300 {
    color: var(--color-gray-300);
}

.text-gray-400 {
    color: var(--color-gray-400);
}

.text-gray-500 {
    color: var(--color-gray-500);
}

.text-gray-600 {
    color: var(--color-gray-600);
}

.text-gray-700 {
    color: var(--color-gray-700);
}

.text-gray-800 {
    color: var(--color-gray-800);
}

.text-gray-900 {
    color: var(--color-gray-900);
}

.text-black {
    color: var(--color-black);
}

.text-white {
    color: var(--color-white);
}

/* 2.2: Font Size */

.text-xs {
    font-size: var(--text-xs);
    line-height: var(--text-xs--line-height);
}

.text-sm {
    font-size: var(--text-sm);
    line-height: var(--text-sm--line-height);
}

.text-base {
    font-size: var(--text-base);
    line-height: var(--text-base--line-height);
}

.text-lg {
    font-size: var(--text-lg);
    line-height: var(--text-lg--line-height);
}

.text-xl {
    font-size: var(--text-xl);
    line-height: var(--text-xl--line-height);
}

.text-2xl {
    font-size: var(--text-2xl);
    line-height: var(--text-2xl--line-height);
}

.text-3xl {
    font-size: var(--text-3xl);
    line-height: var(--text-3xl--line-height);
}

.text-4xl {
    font-size: var(--text-4xl);
    line-height: var(--text-4xl--line-height);
}

.text-5xl {
    font-size: var(--text-5xl);
    line-height: var(--text-5xl--line-height);
}

/* 2.3: Font Weight */
.font-medium {
    font-weight: var(--font-weight-medium);
}

.font-semibold {
    font-weight: var(--font-weight-semibold);
}

.font-bold {
    font-weight: var(--font-weight-bold);
}

.font-light {
    font-weight: 200;
}

/* 2.4: Text Transform & Alignment */
.uppercase {
    text-transform: uppercase
}

.lowercase {
    text-transform: lowercase
}

.capitalize {
    text-transform: capitalize
}

.no-underline {
    text-decoration: none;
}

.line-through {
    text-decoration: line-through;
}

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

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

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

.tracking-wide {
    letter-spacing: var(--tracking-wide);
}

.letter-spacing-1 {
    letter-spacing: 1px;
}

.hover\:underline:hover {
    text-decoration: underline;
}

.hover\:text-blue-600:hover {
    color: var(--color-blue-600);
}

.hover\:text-terra-cotta:hover {
    color: #d18066;
}

/* 2.5: Background Colors */
.bg-transparent {
    background-color: transparent;
}

.bg-red-50 {
    background-color: var(--color-red-50);
}

.bg-red-100 {
    background-color: var(--color-red-100);
}

.bg-red-200 {
    background-color: var(--color-red-200);
}

.bg-red-300 {
    background-color: var(--color-red-300);
}

.bg-red-500 {
    background-color: var(--color-red-500);
}

.bg-red-600 {
    background-color: var(--color-red-600);
}

.bg-red-700 {
    background-color: var(--color-red-700);
}

.bg-red-800 {
    background-color: var(--color-red-800);
}

.bg-orange-50 {
    background-color: var(--color-orange-50);
}

.bg-gray-100 {
    background-color: var(--color-gray-100);
}

.hover\:bg-gray-200:hover {
    background-color: var(--color-gray-200);
}

.bg-orange-50 {
    background-color: var(--color-orange-50);
}

.bg-orange-200 {
    background-color: var(--color-orange-200);
}

.bg-orange-600 {
    background-color: var(--color-orange-600);
}

.bg-orange-700 {
    background-color: var(--color-orange-700);
}

.bg-yellow-50 {
    background-color: var(--color-yellow-50);
}

.bg-yellow-100 {
    background-color: var(--color-yellow-100);
}

.bg-yellow-200 {
    background-color: var(--color-yellow-200);
}

.bg-yellow-500 {
    background-color: var(--color-yellow-500);
}

.bg-yellow-700 {
    background-color: var(--color-yellow-700);
}

.bg-yellow-800 {
    background-color: var(--color-yellow-800);
}

.bg-green-50 {
    background-color: var(--color-green-50);
}

.bg-green-100 {
    background-color: var(--color-green-100);
}

.bg-green-200 {
    background-color: var(--color-green-200);
}

.bg-green-300 {
    background-color: var(--color-green-300);
}

.bg-green-600 {
    background-color: var(--color-green-600);
}

.bg-green-700 {
    background-color: var(--color-green-700);
}

.bg-green-800 {
    background-color: var(--color-green-800);
}

.bg-blue-50 {
    background-color: var(--color-blue-50);
}

.bg-blue-200 {
    background-color: var(--color-blue-200);
}

.bg-blue-600 {
    background-color: var(--color-blue-600);
}

.bg-blue-700 {
    background-color: var(--color-blue-700);
}

.bg-blue-800 {
    background-color: var(--color-blue-800);
}

.bg-indigo-50 {
    background-color: var(--color-indigo-50);
}

.bg-indigo-200 {
    background-color: var(--color-indigo-200);
}

.bg-indigo-500 {
    background-color: var(--color-indigo-500);
}

.bg-indigo-600 {
    background-color: var(--color-indigo-600);
}

.bg-indigo-700 {
    background-color: var(--color-indigo-700);
}

.bg-gray-50 {
    background-color: var(--color-gray-50);
}

.bg-gray-100 {
    background-color: var(--color-gray-100);
}

.bg-gray-200 {
    background-color: var(--color-gray-200);
}

.bg-gray-300 {
    background-color: var(--color-gray-300);
}

.bg-gray-400 {
    background-color: var(--color-gray-400);
}

.bg-gray-500 {
    background-color: var(--color-gray-500);
}

.bg-gray-600 {
    background-color: var(--color-gray-600);
}

.bg-gray-700 {
    background-color: var(--color-gray-700);
}

.bg-gray-800 {
    background-color: var(--color-gray-800);
}

.bg-gray-900 {
    background-color: var(--color-gray-900);
}

.bg-black {
    background-color: var(--color-black);
}

.bg-cream {
    background-color: #FFF9E6;
}

.bg-beige {
    background-color: #0d7377;
}

.bg-white {
    background-color: var(--color-white);
}

.bg-petrol {
    background-color: #1a2332;
}

.bg-lightpink {
    background-color: #fff5f5;
}

.hover\:bg-gray-100:hover {
    background-color: rgb(243 244 246);
}

.hover\:bg-orange-600:hover {
    background-color: var(--color-orange-600);
}

.hover\:bg-orange-700:hover {
    background-color: var(--color-orange-700);
}

.hover\:bg-white:hover {
    background-color: #ffffff;
}

.hover\:bg-white:hover {
    background-color: #ffffff;
}

.hover\:bg-gray-200:hover {
    background-color: rgb(229 231 235);
}

/* 3. Margin and Padding Styles */

/* 3.1: Margin 0 */
.m-0 {
    margin: 0px;
}

.my-0 {
    margin-top: 0px;
    margin-bottom: 0px;
}

.mx-0 {
    margin-left: 0px;
    margin-right: 0px;
}

.mt-0 {
    margin-top: 0px;
}

.mb-0 {
    margin-bottom: 0px;
}

.ml-0 {
    margin-left: 0px;
}

.mr-0 {
    margin-right: 0px;
}

.p-0 {
    padding: 0px;
}

.py-0 {
    padding-top: 0px;
    padding-bottom: 0px;
}

.px-0 {
    padding-left: 0px;
    padding-right: 0px;
}

.pt-0 {
    padding-top: 0px;
}

.pb-0 {
    padding-bottom: 0px;
}

.pl-0 {
    padding-left: 0px;
}

.pr-0 {
    padding-right: 0px;
}

/* 3.2: Margin Auto */
.ml-auto {
    margin-left: auto;
}

.mr-auto {
    margin-right: auto;
}

.mx-auto {
    margin-left: auto;
    margin-right: auto;
}

/* 3.3: Spacing 1 */
.m-1 {
    margin: calc(var(--spacing) * 1);
}

.mx-1 {
    margin-left: calc(var(--spacing) * 1);
    margin-right: calc(var(--spacing) * 1);
}

.my-1 {
    margin-top: calc(var(--spacing) * 1);
    margin-bottom: calc(var(--spacing) * 1);
}

.mt-1 {
    margin-top: calc(var(--spacing) * 1);
}

.mb-1 {
    margin-bottom: calc(var(--spacing) * 1);
}

.ml-1 {
    margin-left: calc(var(--spacing) * 1);
}

.mr-1 {
    margin-right: calc(var(--spacing) * 1);
}

.p-1 {
    padding: calc(var(--spacing) * 1);
}

.px-1 {
    padding-left: calc(var(--spacing) * 1);
    padding-right: calc(var(--spacing) * 1);
}

.py-1 {
    padding-top: calc(var(--spacing) * 1);
    padding-bottom: calc(var(--spacing) * 1);
}

.pt-1 {
    padding-top: calc(var(--spacing) * 1);
}

.pb-1 {
    padding-bottom: calc(var(--spacing) * 1);
}

.pl-1 {
    padding-left: calc(var(--spacing) * 1);
}

.pr-1 {
    padding-right: calc(var(--spacing) * 1);
}

/* 3.4: Spacing 2 */
.m-2 {
    margin: calc(var(--spacing) * 2);
}

.mx-2 {
    margin-left: calc(var(--spacing) * 2);
    margin-right: calc(var(--spacing) * 2);
}

.my-2 {
    margin-top: calc(var(--spacing) * 2);
    margin-bottom: calc(var(--spacing) * 2);
}

.mt-2 {
    margin-top: calc(var(--spacing) * 2);
}

.mb-2 {
    margin-bottom: calc(var(--spacing) * 2);
}

.ml-2 {
    margin-left: calc(var(--spacing) * 2);
}

.mr-2 {
    margin-right: calc(var(--spacing) * 2);
}

.p-2 {
    padding: calc(var(--spacing) * 2);
}

.px-2 {
    padding-left: calc(var(--spacing) * 2);
    padding-right: calc(var(--spacing) * 2);
}

.py-2 {
    padding-top: calc(var(--spacing) * 2);
    padding-bottom: calc(var(--spacing) * 2);
}

.pt-2 {
    padding-top: calc(var(--spacing) * 2);
}

.pb-2 {
    padding-bottom: calc(var(--spacing) * 2);
}

.pl-2 {
    padding-left: calc(var(--spacing) * 2);
}

.pr-2 {
    padding-right: calc(var(--spacing) * 2);
}

/* 3.5: Spacing 3 */
.m-3 {
    margin: calc(var(--spacing) * 3);
}

.mx-3 {
    margin-left: calc(var(--spacing) * 3);
    margin-right: calc(var(--spacing) * 3);
}

.my-3 {
    margin-top: calc(var(--spacing) * 3);
    margin-bottom: calc(var(--spacing) * 3);
}

.mt-3 {
    margin-top: calc(var(--spacing) * 3);
}

.mb-3 {
    margin-bottom: calc(var(--spacing) * 3);
}

.ml-3 {
    margin-left: calc(var(--spacing) * 3);
}

.mr-3 {
    margin-right: calc(var(--spacing) * 3);
}

.p-3 {
    padding: calc(var(--spacing) * 3);
}

.px-3 {
    padding-left: calc(var(--spacing) * 3);
    padding-right: calc(var(--spacing) * 3);
}

.py-3 {
    padding-top: calc(var(--spacing) * 3);
    padding-bottom: calc(var(--spacing) * 3);
}

.pt-3 {
    padding-top: calc(var(--spacing) * 3);
}

.pb-3 {
    padding-bottom: calc(var(--spacing) * 3);
}

.pl-3 {
    padding-left: calc(var(--spacing) * 3);
}

.pr-3 {
    padding-right: calc(var(--spacing) * 3);
}

/* 3.6: Spacing 4 */
.m-4 {
    margin: calc(var(--spacing) * 4);
}

.mx-4 {
    margin-left: calc(var(--spacing) * 4);
    margin-right: calc(var(--spacing) * 4);
}

.my-4 {
    margin-top: calc(var(--spacing) * 4);
    margin-bottom: calc(var(--spacing) * 4);
}

.mt-4 {
    margin-top: calc(var(--spacing) * 4);
}

.mb-4 {
    margin-bottom: calc(var(--spacing) * 4);
}

.ml-4 {
    margin-left: calc(var(--spacing) * 4);
}

.mr-4 {
    margin-right: calc(var(--spacing) * 4);
}

.p-4 {
    padding: calc(var(--spacing) * 4);
}

.px-4 {
    padding-left: calc(var(--spacing) * 4);
    padding-right: calc(var(--spacing) * 4);
}

.py-4 {
    padding-top: calc(var(--spacing) * 4);
    padding-bottom: calc(var(--spacing) * 4);
}

.pt-4 {
    padding-top: calc(var(--spacing) * 4);
}

.pb-4 {
    padding-bottom: calc(var(--spacing) * 4);
}

.pl-4 {
    padding-left: calc(var(--spacing) * 4);
}

.pr-4 {
    padding-right: calc(var(--spacing) * 4);
}

/* 3.7: Spacing 5 */
.m-5 {
    margin: calc(var(--spacing) * 5);
}

.mx-5 {
    margin-left: calc(var(--spacing) * 5);
    margin-right: calc(var(--spacing) * 5);
}

.my-5 {
    margin-top: calc(var(--spacing) * 5);
    margin-bottom: calc(var(--spacing) * 5);
}

.mt-5 {
    margin-top: calc(var(--spacing) * 5);
}

.mb-5 {
    margin-bottom: calc(var(--spacing) * 5);
}

.ml-5 {
    margin-left: calc(var(--spacing) * 5);
}

.mr-5 {
    margin-right: calc(var(--spacing) * 5);
}

.p-5 {
    padding: calc(var(--spacing) * 5);
}

.px-5 {
    padding-left: calc(var(--spacing) * 5);
    padding-right: calc(var(--spacing) * 5);
}

.py-5 {
    padding-top: calc(var(--spacing) * 5);
    padding-bottom: calc(var(--spacing) * 5);
}

.pt-5 {
    padding-top: calc(var(--spacing) * 5);
}

.pb-5 {
    padding-bottom: calc(var(--spacing) * 5);
}

.pl-5 {
    padding-left: calc(var(--spacing) * 5);
}

.pr-5 {
    padding-right: calc(var(--spacing) * 5);
}

/* 3.8: Spacing 6 */
.m-6 {
    margin: calc(var(--spacing) * 6);
}

.mx-6 {
    margin-left: calc(var(--spacing) * 6);
    margin-right: calc(var(--spacing) * 6);
}

.my-6 {
    margin-top: calc(var(--spacing) * 6);
    margin-bottom: calc(var(--spacing) * 6);
}

.mt-6 {
    margin-top: calc(var(--spacing) * 6);
}

.mb-6 {
    margin-bottom: calc(var(--spacing) * 6);
}

.ml-6 {
    margin-left: calc(var(--spacing) * 6);
}

.mr-6 {
    margin-right: calc(var(--spacing) * 6);
}

.p-6 {
    padding: calc(var(--spacing) * 6);
}

.px-6 {
    padding-left: calc(var(--spacing) * 6);
    padding-right: calc(var(--spacing) * 6);
}

.py-6 {
    padding-top: calc(var(--spacing) * 6);
    padding-bottom: calc(var(--spacing) * 6);
}

.pt-6 {
    padding-top: calc(var(--spacing) * 6);
}

.pb-6 {
    padding-bottom: calc(var(--spacing) * 6);
}

.pl-6 {
    padding-left: calc(var(--spacing) * 6);
}

.pr-6 {
    padding-right: calc(var(--spacing) * 6);
}

/* 3.9: Spacing 8 */
.m-8 {
    margin: calc(var(--spacing) * 8);
}

.mx-8 {
    margin-left: calc(var(--spacing) * 8);
    margin-right: calc(var(--spacing) * 8);
}

.my-8 {
    margin-top: calc(var(--spacing) * 8);
    margin-bottom: calc(var(--spacing) * 8);
}

.mt-8 {
    margin-top: calc(var(--spacing) * 8);
}

.mb-8 {
    margin-bottom: calc(var(--spacing) * 8);
}

.ml-8 {
    margin-left: calc(var(--spacing) * 8);
}

.mr-8 {
    margin-right: calc(var(--spacing) * 8);
}

.p-8 {
    padding: calc(var(--spacing) * 8);
}

.px-8 {
    padding-left: calc(var(--spacing) * 8);
    padding-right: calc(var(--spacing) * 8);
}

.py-8 {
    padding-top: calc(var(--spacing) * 8);
    padding-bottom: calc(var(--spacing) * 8);
}

.pt-8 {
    padding-top: calc(var(--spacing) * 8);
}

.pb-8 {
    padding-bottom: calc(var(--spacing) * 8);
}

.pl-8 {
    padding-left: calc(var(--spacing) * 8);
}

.pr-8 {
    padding-right: calc(var(--spacing) * 8);
}

/* 3.10: Spacing 10 */
.m-10 {
    margin: calc(var(--spacing) * 10);
}

.mx-10 {
    margin-left: calc(var(--spacing) * 10);
    margin-right: calc(var(--spacing) * 10);
}

.my-10 {
    margin-top: calc(var(--spacing) * 10);
    margin-bottom: calc(var(--spacing) * 10);
}

.mt-10 {
    margin-top: calc(var(--spacing) * 10);
}

.mb-10 {
    margin-bottom: calc(var(--spacing) * 10);
}

.ml-10 {
    margin-left: calc(var(--spacing) * 10);
}

.mr-10 {
    margin-right: calc(var(--spacing) * 10);
}

.p-10 {
    padding: calc(var(--spacing) * 10);
}

.px-10 {
    padding-left: calc(var(--spacing) * 10);
    padding-right: calc(var(--spacing) * 10);
}

.py-10 {
    padding-top: calc(var(--spacing) * 10);
    padding-bottom: calc(var(--spacing) * 10);
}

.pt-10 {
    padding-top: calc(var(--spacing) * 10);
}

.pb-10 {
    padding-bottom: calc(var(--spacing) * 10);
}

.pl-10 {
    padding-left: calc(var(--spacing) * 10);
}

.pr-10 {
    padding-right: calc(var(--spacing) * 10);
}

/* 3.11: Spacing 12 */
.m-12 {
    margin: calc(var(--spacing) * 12);
}

.mx-12 {
    margin-left: calc(var(--spacing) * 12);
    margin-right: calc(var(--spacing) * 12);
}

.my-12 {
    margin-top: calc(var(--spacing) * 12);
    margin-bottom: calc(var(--spacing) * 12);
}

.mt-12 {
    margin-top: calc(var(--spacing) * 12);
}

.mb-12 {
    margin-bottom: calc(var(--spacing) * 12);
}

.ml-12 {
    margin-left: calc(var(--spacing) * 12);
}

.mr-12 {
    margin-right: calc(var(--spacing) * 12);
}

.p-12 {
    padding: calc(var(--spacing) * 12);
}

.px-12 {
    padding-left: calc(var(--spacing) * 12);
    padding-right: calc(var(--spacing) * 12);
}

.py-12 {
    padding-top: calc(var(--spacing) * 12);
    padding-bottom: calc(var(--spacing) * 12);
}

.pt-12 {
    padding-top: calc(var(--spacing) * 12);
}

.pb-12 {
    padding-bottom: calc(var(--spacing) * 12);
}

.pl-12 {
    padding-left: calc(var(--spacing) * 12);
}

.pr-12 {
    padding-right: calc(var(--spacing) * 12);
}

/* 3.12: Spacing 16 */
.m-16 {
    margin: calc(var(--spacing) * 16);
}

.mx-16 {
    margin-left: calc(var(--spacing) * 16);
    margin-right: calc(var(--spacing) * 16);
}

.my-16 {
    margin-top: calc(var(--spacing) * 16);
    margin-bottom: calc(var(--spacing) * 16);
}

.mt-16 {
    margin-top: calc(var(--spacing) * 16);
}

.mb-16 {
    margin-bottom: calc(var(--spacing) * 16);
}

.ml-16 {
    margin-left: calc(var(--spacing) * 16);
}

.mr-16 {
    margin-right: calc(var(--spacing) * 16);
}

.p-16 {
    padding: calc(var(--spacing) * 16);
}

.px-16 {
    padding-left: calc(var(--spacing) * 16);
    padding-right: calc(var(--spacing) * 16);
}

.py-16 {
    padding-top: calc(var(--spacing) * 16);
    padding-bottom: calc(var(--spacing) * 16);
}

.pt-16 {
    padding-top: calc(var(--spacing) * 16);
}

.pb-16 {
    padding-bottom: calc(var(--spacing) * 16);
}

.pl-16 {
    padding-left: calc(var(--spacing) * 16);
}

.pr-16 {
    padding-right: calc(var(--spacing) * 16);
}

.px-2rem {
    padding-left: 2rem;
    padding-right: 2rem;
}

.py-2rem {
    padding-top: 2rem;
    padding-bottom: 2rem;
}

/* 3.13: Spacing 20 */
.m-20 {
    margin: calc(var(--spacing) * 20);
}

.mx-20 {
    margin-left: calc(var(--spacing) * 20);
    margin-right: calc(var(--spacing) * 20);
}

.my-20 {
    margin-top: calc(var(--spacing) * 20);
    margin-bottom: calc(var(--spacing) * 20);
}

.mt-20 {
    margin-top: calc(var(--spacing) * 20);
}

.mb-20 {
    margin-bottom: calc(var(--spacing) * 20);
}

.ml-20 {
    margin-left: calc(var(--spacing) * 20);
}

.mr-20 {
    margin-right: calc(var(--spacing) * 20);
}

.p-20 {
    padding: calc(var(--spacing) * 20);
}

.px-20 {
    padding-left: calc(var(--spacing) * 20);
    padding-right: calc(var(--spacing) * 20);
}

.py-20 {
    padding-top: calc(var(--spacing) * 20);
    padding-bottom: calc(var(--spacing) * 20);
}

.pt-20 {
    padding-top: calc(var(--spacing) * 20);
}

.pb-20 {
    padding-bottom: calc(var(--spacing) * 20);
}

.pl-20 {
    padding-left: calc(var(--spacing) * 20);
}

.pr-20 {
    padding-right: calc(var(--spacing) * 20);
}

/* 3.14: Gap */
.gap-2 {
    gap: calc(var(--spacing)*2)
}

.gap-3 {
    gap: calc(var(--spacing)*3)
}

.gap-4 {
    gap: calc(var(--spacing)*4)
}

.gap-5 {
    gap: 1.25rem;
}

.gap-6 {
    gap: calc(var(--spacing)*6)
}

.gap-8 {
    gap: calc(var(--spacing)*8)
}

.gap-12 {
    gap: calc(var(--spacing)*12)
}

/* 4. Layout Templates */


/* 4.1: Width & Height */
.w-\[2px\] {
    width: 2px;
}

.w-4 {
    width: 1rem;
}

.h-4 {
    height: 1rem;
}

.w-5 {
    width: 1.25rem;
}

.h-5 {
    height: 1.25rem;
}

.w-6 {
    width: 1.5rem;
}

.h-6 {
    height: 1.5rem;
}

.w-8 {
    width: 2rem;
}

.h-8 {
    height: 2rem;
}

.w-20 {
    width: 5rem;
}

.h-20 {
    height: 5rem;
}

.w-24 {
    width: 6rem;
}

.w-48 {
    width: 12rem;
}

.h-48 {
    height: 12rem;
}

.h-\[40px\] {
    height: 40px;
}

.w-56 {
    width: 14rem;
}

.h-auto {
    height: auto;
}

.w-full {
    width: 100%;
}

.max-w-full {
    max-width: 100%;
}

.max-w-1200 {
    max-width: 1200px;
}

.max-w-6xl {
    max-width: 72rem;
}

.w-sidebar {
    width: 360px;
}

.w-5\/12 {
    width: 41.666667%;
}

.w-7\/12 {
    width: 58.333333%;
}

/* 4.2: Grid Template */

.flex {
    display: flex;
}

.flex-1 {
    flex: 1 1 0%;
}

.flex-start {
    align-items: flex-start;
}

.flex-end {
    align-items: flex-end;
}

.flex-col {
    flex-direction: column;
}

.inline-flex {
    display: inline-flex;
}

.inline-block {
    display: inline-block;
}

.float-left {
    float: left;
}

.float-right {
    float: right;
}

.grid {
    display: grid;
}

.grid-cols-1 {
    grid-template-columns: repeat(1, minmax(0, 1fr));
}

.grid-cols-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}

.grid-cols-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.grid-cols-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}

.col-span-1 {
    grid-column: span 1 / span 1;
}

/* 4.3: Display */

.block {
    display: block;
}

.hidden {
    display: none;
}

.overflow-hidden {
    overflow: hidden;
}

.contents {
    display: contents;
}

.md\:hidden {
    display: flex;
}

.object-cover {
    object-fit: cover;
}

.justify-center {
    justify-content: center;
}

.items-center {
    align-items: center;
}

.list-none {
    list-style: none;
}

.cursor-pointer {
    cursor: pointer;
}


.truncate {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* 4.4: Position */

.relative {
    position: relative;
}

.absolute {
    position: absolute;
}

.right-0 {
    right: 0;
}

.right-4 {
    right: 1rem;
}

.top-8 {
    top: 2rem;
}

.top-full {
    top: 100%;
}

/* 5. Decorations */

/* 5.1: Border */

.border {
    border-width: 1px;
    border-color: rgb(229 231 235);
    border-style: solid;
}

.border-2 {
    border-style: var(--tw-border-style);
    border-width: 2px;
    border-style: solid;
}

.border-b {
    border-bottom: 1px solid #e5e7eb;
}

.border-t {
    border-top-width: 1px;
}

.border-gray-100 {
    border-color: #f3f4f6;
}

.border-gray-200 {
    border-color: #e5e7eb;
}

.border-gray-500 {
    border-color: #9ca3af;
}

.border-yellow-200 {
    border-color: var(--color-yellow-200);
}

.border-green-500 {
    border-color: #22c55e;
}

/* 5.2: Border Radius */
.rounded-full {
    border-radius: 9999px;
}

.rounded {
    border-radius: 0.25rem;
}

.rounded-md {
    border-radius: var(--radius-md);
}

.rounded-lg {
    border-radius: var(--radius-lg);
}

.rounded-xl {
    border-radius: var(--radius-xl);
}

.rounded-2xl {
    border-radius: 1rem;
}

/* 5.3: Box Shadow */

.shadow-md {
    box-shadow: 0 4px 6px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
}

.shadow-lg {
    box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
}

.box-shadow {
    box-shadow: 0 2px 8px #0000001a;
    padding: 20px;
    border-radius: 8px;
}

.shadow {
    box-shadow: 0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);
}

.shadow-sm {
    box-shadow: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
}

.shadow-md {
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}

.hover\:shadow-md:hover {
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
}


/* 5.4: Transitions */

.transition-shadow {
    transition-property: box-shadow;
}

.duration-300 {
    transition-duration: 300ms;
}

.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;
}

.transition-all {
    transition-property: all;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms;
}

.hover\:-translate-y-1:hover {
    transform: translateY(-2px);
}

.rotate-180 {
    transform: rotate(180deg);
}

/* Other */

.space-y-2>*+* {
    margin-top: 0.5rem;
}

.space-y-6>*+* {
    /* margin-top: 1.5rem; */
}

button[type="submit"] {
    transition: all 0.2s ease-in-out;
    border: none;
    font-size: 15px;
    font-family: 'TikTok Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
}

.z-50 {
    z-index: 50;
}

.z-max {
    z-index: 9999;
}

/* Colors */
.hanh-kim {
    color: #999
}

.hanh-moc {
    color: #28a745
}

.hanh-thuy {
    color: #333
}

.hanh-hoa {
    color: red
}

.hanh-tho {
    color: #f27200
}

.bg-hanh-kim {
    background: #999
}

.bg-hanh-moc {
    background: #28a745
}

.bg-hanh-thuy {
    background: #333
}

.bg-hanh-hoa {
    background: red
}

.bg-hanh-tho {
    background: #f27200
}

@media (min-width: 48rem) {
    .md\:bg-transparent {
        background-color: transparent;
    }

    .md\:mt-0 {
        margin-top: calc(var(--spacing)*0)
    }

    .md\:mt-8 {
        margin-top: calc(var(--spacing)*8)
    }

    .md\:mt-12 {
        margin-top: calc(var(--spacing) * 12);
    }

    .md\:mb-8 {
        margin-bottom: calc(var(--spacing) * 8);
    }

    .md\:mr-5 {
        margin-right: calc(var(--spacing)*5)
    }

    .md\:mb-0 {
        margin-bottom: calc(var(--spacing)*0)
    }

    .md\:flex {
        display: flex
    }

    .md\:hidden {
        display: none
    }

    .md\:block {
        display: block
    }

    .md\:w-1\/2 {
        width: 50%
    }

    .md\:w-auto {
        width: auto
    }

    .md\:w-24 {
        width: 6rem
    }

    .md\:w-48 {
        width: 12rem
    }

    .md\:min-w-0 {
        min-width: calc(var(--spacing)*0)
    }

    .md\:flex-1 {
        flex: 1
    }

    .md\:grid-cols-2 {
        grid-template-columns: repeat(2, minmax(0, 1fr))
    }

    .md\:grid-cols-3 {
        grid-template-columns: repeat(3, 1fr)
    }

    .md\:flex-row {
        flex-direction: row
    }

    .md\:flex-wrap {
        flex-wrap: wrap;
    }

    .md\:items-center {
        align-items: center
    }

    .md\:justify-between {
        justify-content: space-between;
    }

    .md\:px-0 {
        padding-left: 0px;
        padding-right: 0px;
    }

    .md\:p-0 {
        padding: 0px;
    }

    .md\:px-6 {
        padding-inline: calc(var(--spacing)*6)
    }

    .md\:p-4 {
        padding: calc(var(--spacing) * 4);
    }

    .md\:p-8 {
        padding: calc(var(--spacing) * 8);
    }

    .md\:p-16 {
        padding: calc(var(--spacing) * 16);
    }

    .md\:flex-col {
        flex-direction: column;
    }

    .md\:flex {
        display: flex;
    }

    .md\:items-start {
        align-items: flex-start;
    }

    .md\:items-center {
        align-items: center;
    }

    .md\:w-full {
        width: 100%;
    }

    .md\:text-center {
        text-align: center;
    }

    .md\:w-5\/12 {
        width: 41.666667%;
    }

    .md\:w-7\/12 {
        width: 58.333333%;
    }


    .md\:w-4\/12 {
        width: 33.333333%;
    }

    .md\:w-8\/12 {
        width: 66.666667%;
    }

    .md\:max-w-600 {
        max-width: 600px;
    }

    .md\:gap-2 {
        gap: calc(var(--spacing)*2);
    }

    .md\:gap-12 {
        gap: calc(var(--spacing)*12);
    }

    .md\:text-2xl {
        font-size: var(--text-2xl);
        line-height: 1;
    }

    .md\:text-4xl {
        font-size: var(--text-4xl);
        line-height: 1;
    }

    .md\:text-5xl {
        font-size: var(--text-5xl);
        line-height: 1;
    }

    .md\:py-16 {
        padding-top: calc(var(--spacing)*16);
        padding-bottom: calc(var(--spacing)*16);
    }

    .md\:px-5 {
        padding-left: calc(var(--spacing) * 5);
        padding-right: calc(var(--spacing) * 5);
    }

    .md\:px-2rem {
        padding-left: 2rem;
        padding-right: 2rem;
    }

    .md\:flex-end {
        align-items: flex-end;
    }

    /* Responsive Grid */
    .md\:grid-cols-4 {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }

    .md\:grid-cols-12 {
        grid-template-columns: repeat(12, minmax(0, 1fr));
    }

    .md\:col-span-4 {
        grid-column: span 4 / span 4;
    }

    .md\:col-span-6 {
        grid-column: span 6 / span 6;
    }

    .md\:col-span-8 {
        grid-column: span 8 / span 8;
    }

    .md\:grid-84 {
        grid-template-columns: 8fr 4fr;
    }

    .md\:inline {
        display: inline-block;
    }

    .md:w-sidebar {
        width: 300px;
    }

    .md\:contents {
        display: contents;
    }

    .md\:w-sidebar {
        width: 360px;
    }
}

@media (min-width: 64rem) {
    .lg\:flex-row {
        flex-direction: row;
    }

    .lg\:w-80 {
        width: 20rem;
    }
}


@media (max-width: 768px) {
    .sm\:w-full {
        width: 100%;
    }

    .sm\:text-3xl {
        font-size: var(--text-3xl);
        line-height: var(--text-3xl--line-height);
    }
}

/* Added for Blog Section Refactor */
.transition-transform {
    transition-property: transform;
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
    transition-duration: 150ms;
}

.hover\:shadow-lg:hover {
    box-shadow: 0 10px 15px -3px rgb(0 0 0 / 0.1), 0 4px 6px -4px rgb(0 0 0 / 0.1);
}

.group:hover .group-hover\:scale-105 {
    transform: scale(1.05);
}

@media (min-width: 64rem) {
    .lg\:grid-cols-4 {
        grid-template-columns: repeat(4, minmax(0, 1fr));
    }
}

/* 6. Placeholder Styles */
.placeholder-gray-300::placeholder {
    color: var(--color-gray-300);
    opacity: 1;
}

.placeholder-gray-800::placeholder {
    color: var(--color-gray-800);
    opacity: 1;
}

.placeholder-white::placeholder {
    color: var(--color-white);
    opacity: 1;
}

.danh-sach-thang {
    margin-left: auto;
}