/*! tailwindcss v4.3.0 | MIT License | https://tailwindcss.com */ @layer properties; @layer theme, base, components, utilities; @layer theme { :root, :host { --font-sans: 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-red-400: oklch(70.4% 0.191 22.216); --color-red-500: oklch(63.7% 0.237 25.331); --color-green-500: oklch(72.3% 0.219 149.579); --color-green-600: oklch(62.7% 0.194 149.214); --color-blue-400: oklch(70.7% 0.165 254.624); --color-blue-500: oklch(62.3% 0.214 259.815); --color-blue-600: oklch(54.6% 0.245 262.881); --color-pink-200: oklch(89.9% 0.061 343.231); --color-pink-400: oklch(71.8% 0.202 349.761); --color-gray-50: oklch(98.5% 0.002 247.839); --color-gray-200: oklch(92.8% 0.006 264.531); --color-gray-400: oklch(70.7% 0.022 261.325); --color-gray-500: oklch(55.1% 0.027 264.364); --color-gray-600: oklch(44.6% 0.03 256.802); --color-gray-800: oklch(27.8% 0.033 256.848); --color-zinc-50: oklch(98.5% 0 0); --color-black: #000; --color-white: #fff; --spacing: 0.25rem; --container-4xl: 56rem; --text-xs: 0.75rem; --text-xs--line-height: calc(1 / 0.75); --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-2xl: 1.5rem; --text-2xl--line-height: calc(2 / 1.5); --text-5xl: 3rem; --text-5xl--line-height: 1; --font-weight-light: 300; --font-weight-medium: 500; --tracking-widest: 0.1em; --leading-relaxed: 1.625; --radius-sm: 0.25rem; --radius-md: 0.375rem; --radius-lg: 0.5rem; --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); } } @layer base { *, ::after, ::before, ::backdrop, ::file-selector-button { box-sizing: border-box; margin: 0; padding: 0; border: 0 solid; } 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; } hr { height: 0; color: inherit; border-top-width: 1px; } abbr:where([title]) { -webkit-text-decoration: underline dotted; text-decoration: underline dotted; } h1, h2, h3, h4, h5, h6 { font-size: inherit; font-weight: inherit; } a { color: inherit; -webkit-text-decoration: inherit; text-decoration: inherit; } b, strong { font-weight: bolder; } 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); } } } 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; } ::-webkit-calendar-picker-indicator { line-height: 1; } :-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 { .collapse { visibility: collapse; } .visible { visibility: visible; } .absolute { position: absolute; } .fixed { position: fixed; } .relative { position: relative; } .static { position: static; } .sticky { position: sticky; } .inset-x-0 { inset-inline: calc(var(--spacing) * 0); } .top-0 { top: calc(var(--spacing) * 0); } .left-0 { left: calc(var(--spacing) * 0); } .z-10 { z-index: 10; } .z-50 { z-index: 50; } .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; } } .m-0 { margin: calc(var(--spacing) * 0); } .mx-auto { margin-inline: auto; } .mt-1 { margin-top: calc(var(--spacing) * 1); } .mt-3 { margin-top: calc(var(--spacing) * 3); } .mt-4 { margin-top: calc(var(--spacing) * 4); } .mr-auto { margin-right: auto; } .mb-2 { margin-bottom: calc(var(--spacing) * 2); } .mb-4 { margin-bottom: calc(var(--spacing) * 4); } .mb-6 { margin-bottom: calc(var(--spacing) * 6); } .mb-12 { margin-bottom: calc(var(--spacing) * 12); } .ml-auto { margin-left: auto; } .block { display: block; } .flex { display: flex; } .grid { display: grid; } .hidden { display: none; } .inline { display: inline; } .inline-block { display: inline-block; } .table { display: table; } .h-12 { height: calc(var(--spacing) * 12); } .h-20 { height: calc(var(--spacing) * 20); } .h-36 { height: calc(var(--spacing) * 36); } .h-fit { height: fit-content; } .h-full { height: 100%; } .h-screen { height: 100vh; } .w-4xl { width: var(--container-4xl); } .w-24 { width: calc(var(--spacing) * 24); } .w-28 { width: calc(var(--spacing) * 28); } .w-42 { width: calc(var(--spacing) * 42); } .w-48 { width: calc(var(--spacing) * 48); } .w-50 { width: calc(var(--spacing) * 50); } .w-80 { width: calc(var(--spacing) * 80); } .w-full { width: 100%; } .w-screen { width: 100vw; } .max-w-prose { max-width: 65ch; } .min-w-64 { min-width: calc(var(--spacing) * 64); } .flex-1 { flex: 1; } .flex-shrink { flex-shrink: 1; } .shrink-0 { flex-shrink: 0; } .flex-grow { flex-grow: 1; } .grow { flex-grow: 1; } .border-collapse { border-collapse: collapse; } .-rotate-6 { rotate: calc(6deg * -1); } .-rotate-8 { rotate: calc(8deg * -1); } .-rotate-10 { rotate: calc(10deg * -1); } .-rotate-12 { rotate: calc(12deg * -1); } .-rotate-15 { rotate: calc(15deg * -1); } .-rotate-18 { rotate: calc(18deg * -1); } .-rotate-20 { rotate: calc(20deg * -1); } .-rotate-22 { rotate: calc(22deg * -1); } .-rotate-25 { rotate: calc(25deg * -1); } .-rotate-30 { rotate: calc(30deg * -1); } .-rotate-35 { rotate: calc(35deg * -1); } .-rotate-40 { rotate: calc(40deg * -1); } .-rotate-45 { rotate: calc(45deg * -1); } .rotate-5 { rotate: 5deg; } .rotate-6 { rotate: 6deg; } .rotate-8 { rotate: 8deg; } .rotate-10 { rotate: 10deg; } .rotate-12 { rotate: 12deg; } .rotate-14 { rotate: 14deg; } .rotate-15 { rotate: 15deg; } .rotate-16 { rotate: 16deg; } .rotate-18 { rotate: 18deg; } .rotate-20 { rotate: 20deg; } .rotate-22 { rotate: 22deg; } .rotate-25 { rotate: 25deg; } .rotate-28 { rotate: 28deg; } .rotate-30 { rotate: 30deg; } .rotate-35 { rotate: 35deg; } .rotate-40 { rotate: 40deg; } .rotate-42 { rotate: 42deg; } .rotate-45 { rotate: 45deg; } .rotate-50 { rotate: 50deg; } .rotate-78 { rotate: 78deg; } .rotate-90 { rotate: 90deg; } .transform { transform: var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,); } .cursor-pointer { cursor: pointer; } .resize { resize: both; } .list-disc { list-style-type: disc; } .grid-cols-1 { grid-template-columns: repeat(1, minmax(0, 1fr)); } .flex-col { flex-direction: column; } .flex-wrap { flex-wrap: wrap; } .items-center { align-items: center; } .justify-between { justify-content: space-between; } .justify-center { justify-content: center; } .gap-1 { gap: calc(var(--spacing) * 1); } .gap-2 { gap: calc(var(--spacing) * 2); } .gap-3 { gap: calc(var(--spacing) * 3); } .gap-4 { gap: calc(var(--spacing) * 4); } .gap-6 { gap: calc(var(--spacing) * 6); } .space-y-1 { :where(& > :not(:last-child)) { --tw-space-y-reverse: 0; margin-block-start: calc(calc(var(--spacing) * 1) * var(--tw-space-y-reverse)); margin-block-end: calc(calc(var(--spacing) * 1) * calc(1 - var(--tw-space-y-reverse))); } } .self-center { align-self: center; } .self-start { align-self: flex-start; } .truncate { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .overflow-hidden { overflow: hidden; } .overflow-y-auto { overflow-y: auto; } .rounded-lg { border-radius: var(--radius-lg); } .rounded-md { border-radius: var(--radius-md); } .rounded-sm { border-radius: var(--radius-sm); } .border { border-style: var(--tw-border-style); border-width: 1px; } .border-2 { border-style: var(--tw-border-style); border-width: 2px; } .border-t { border-top-style: var(--tw-border-style); border-top-width: 1px; } .border-b { border-bottom-style: var(--tw-border-style); border-bottom-width: 1px; } .border-blue-600 { border-color: var(--color-blue-600); } .border-gray-200 { border-color: var(--color-gray-200); } .border-gray-400 { border-color: var(--color-gray-400); } .bg-white { background-color: var(--color-white); } .bg-white\/90 { background-color: color-mix(in srgb, #fff 90%, transparent); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-white) 90%, transparent); } } .bg-zinc-50 { background-color: var(--color-zinc-50); } .object-cover { object-fit: cover; } .p-0 { padding: calc(var(--spacing) * 0); } .p-2 { padding: calc(var(--spacing) * 2); } .p-4 { padding: calc(var(--spacing) * 4); } .p-5 { padding: calc(var(--spacing) * 5); } .p-6 { padding: calc(var(--spacing) * 6); } .px-2 { padding-inline: calc(var(--spacing) * 2); } .px-4 { padding-inline: calc(var(--spacing) * 4); } .px-8 { padding-inline: calc(var(--spacing) * 8); } .py-0 { padding-block: calc(var(--spacing) * 0); } .py-0\.5 { padding-block: calc(var(--spacing) * 0.5); } .py-2 { padding-block: calc(var(--spacing) * 2); } .pt-20 { padding-top: calc(var(--spacing) * 20); } .pr-6 { padding-right: calc(var(--spacing) * 6); } .pb-2 { padding-bottom: calc(var(--spacing) * 2); } .pb-4 { padding-bottom: calc(var(--spacing) * 4); } .pb-8 { padding-bottom: calc(var(--spacing) * 8); } .pl-5 { padding-left: calc(var(--spacing) * 5); } .pl-10 { padding-left: calc(var(--spacing) * 10); } .text-center { text-align: center; } .text-left { text-align: left; } .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-5xl { font-size: var(--text-5xl); line-height: var(--tw-leading, var(--text-5xl--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-xs { font-size: var(--text-xs); line-height: var(--tw-leading, var(--text-xs--line-height)); } .leading-relaxed { --tw-leading: var(--leading-relaxed); line-height: var(--leading-relaxed); } .font-light { --tw-font-weight: var(--font-weight-light); font-weight: var(--font-weight-light); } .font-medium { --tw-font-weight: var(--font-weight-medium); font-weight: var(--font-weight-medium); } .tracking-widest { --tw-tracking: var(--tracking-widest); letter-spacing: var(--tracking-widest); } .text-black { color: var(--color-black); } .text-blue-400 { color: var(--color-blue-400); } .text-blue-500 { color: var(--color-blue-500); } .text-blue-600 { color: var(--color-blue-600); } .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-800 { color: var(--color-gray-800); } .text-green-500 { color: var(--color-green-500); } .text-green-600 { color: var(--color-green-600); } .text-red-400 { color: var(--color-red-400); } .text-red-500 { color: var(--color-red-500); } .uppercase { text-transform: uppercase; } .underline { text-decoration-line: underline; } .outline { outline-style: var(--tw-outline-style); outline-width: 1px; } .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, 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-transform { transition-property: transform, translate, scale, rotate; transition-timing-function: var(--tw-ease, var(--default-transition-timing-function)); transition-duration: var(--tw-duration, var(--default-transition-duration)); } .duration-200 { --tw-duration: 200ms; transition-duration: 200ms; } .will-change-transform { will-change: transform; } .hover\:border-pink-200 { &:hover { @media (hover: hover) { border-color: var(--color-pink-200); } } } .hover\:border-pink-400 { &:hover { @media (hover: hover) { border-color: var(--color-pink-400); } } } .hover\:bg-gray-50 { &:hover { @media (hover: hover) { background-color: var(--color-gray-50); } } } .lg\:block { @media (width >= 64rem) { display: block; } } .dark\:block { &:where([data-theme=dark], [data-theme=dark] *) { display: block; } } .dark\:hidden { &:where([data-theme=dark], [data-theme=dark] *) { display: none; } } .dark\:border-gray-600 { &:where([data-theme=dark], [data-theme=dark] *) { border-color: var(--color-gray-600); } } .dark\:bg-black\/90 { &:where([data-theme=dark], [data-theme=dark] *) { background-color: color-mix(in srgb, #000 90%, transparent); @supports (color: color-mix(in lab, red, red)) { background-color: color-mix(in oklab, var(--color-black) 90%, transparent); } } } .dark\:text-blue-400 { &:where([data-theme=dark], [data-theme=dark] *) { color: var(--color-blue-400); } } .dark\:text-gray-400 { &:where([data-theme=dark], [data-theme=dark] *) { color: var(--color-gray-400); } } .dark\:text-white { &:where([data-theme=dark], [data-theme=dark] *) { color: var(--color-white); } } .dark\:hover\:border-pink-400 { &:where([data-theme=dark], [data-theme=dark] *) { &:hover { @media (hover: hover) { border-color: var(--color-pink-400); } } } } .dark\:hover\:bg-gray-800 { &:where([data-theme=dark], [data-theme=dark] *) { &:hover { @media (hover: hover) { background-color: var(--color-gray-800); } } } } } @import url('https://fonts.googleapis.com/css2?family=Instrument+Serif:ital@0;1&family=Libre+Caslon+Display&family=Libre+Caslon+Text:ital,wght@0,400;0,700;1,400&family=Noto+Sans+JP:wght@100..900&family=Rubik:ital,wght@0,300..900;1,300..900&display=swap'); @import url('https://fonts.googleapis.com/css2?family=Rubik:ital,wght@0,300..900;1,300..900&display=swap'); .theme-root.night { --bg: #1c1c1c; --surface: #252525; --surface2: #2a2a2a; --border: #363636; --border2: #ccc7be; --text: #ffffff; --muted: #d9d9d9; --dim: #b0aa9f; --navback: rgba(28, 28, 28, 0.8); --accent: #5389ff; --accent2: #1447b8; --green: #0eaf74; --amber: #ffd78e; } .section-head { display: flex; align-items: center; gap: 10px; margin-bottom: 1.8rem; } .section-head h2 { font-family: var(--ff-mono); font-size: 0.72rem; font-weight: 400; letter-spacing: 0.25em; text-transform: uppercase; color: var(--muted); white-space: nowrap; } .section-head::after { content: ''; flex: 1; height: 1px; background: var(--border); } .exp-body { font-size: 0.85rem; color: var(--muted); line-height: 1.8; } .libre-caslon-text-regular { font-family: "Libre Caslon Text", serif; font-weight: 400; font-style: normal; } .libre-caslon-text-bold { font-family: "Libre Caslon Text", serif; font-weight: 700; font-style: normal; } .libre-caslon-text-regular-italic { font-family: "Libre Caslon Text", serif; font-weight: 400; font-style: italic; } .rubik-400 { font-family: "Rubik", sans-serif; font-optical-sizing: auto; font-weight: 400; font-style: normal; } .sidebar-links a.hidden { opacity: 0; transition: opacity 0.4s linear; } .sidebar-links:hover a.hidden { opacity: 1; } aside { border-right: 1px solid var(--border); padding: 2.5rem 1.5rem; display: flex; flex-direction: column; gap: 1rem; position: sticky; top: 52px; height: calc(100vh - 52px); overflow-y: auto; background: var(--surface); } .sidebar-label { font-family: var(--ff-mono); font-size: 0.65rem; letter-spacing: 0.2em; text-transform: uppercase; color: var(--dim); margin-bottom: 0.8rem; } .sidebar-links { display: flex; flex-direction: column; gap: 2px; } .sidebar-links a { font-family: var(--ff-mono); font-size: 0.78rem; color: var(--muted); transition: color 0.15s,background 0.15s; display: flex; align-items: center; gap: 6px; } .sidebar-links a:hover { color: var(--text); background: var(--surface2); } .skill-list { display: flex; flex-direction: column; gap: 4px; } .skill-item { font-family: var(--ff-mono); font-size: 0.78rem; color: var(--muted); padding: 0.3rem 0.6rem; border-left: 2px solid var(--border2); transition: border-color 0.15s,color 0.15s; cursor: default; } .skill-item:hover { border-color: var(--accent); color: var(--text); } @property --tw-rotate-x { syntax: "*"; inherits: false; } @property --tw-rotate-y { syntax: "*"; inherits: false; } @property --tw-rotate-z { syntax: "*"; inherits: false; } @property --tw-skew-x { syntax: "*"; inherits: false; } @property --tw-skew-y { syntax: "*"; inherits: false; } @property --tw-space-y-reverse { syntax: "*"; inherits: false; initial-value: 0; } @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-tracking { syntax: "*"; inherits: false; } @property --tw-outline-style { syntax: "*"; inherits: false; initial-value: solid; } @property --tw-duration { syntax: "*"; inherits: false; } @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-rotate-x: initial; --tw-rotate-y: initial; --tw-rotate-z: initial; --tw-skew-x: initial; --tw-skew-y: initial; --tw-space-y-reverse: 0; --tw-border-style: solid; --tw-leading: initial; --tw-font-weight: initial; --tw-tracking: initial; --tw-outline-style: solid; --tw-duration: initial; } } }