@import url("./fonts.css");

:root {
	--primary-color: oklch(77.7% 0.152 181.912);
	--primary-dim: rgba(0, 213, 190, 0.07);
	--primary-border: rgba(0, 213, 190, 0.07);
	--dark-navy: #020c1b;
	--navy: #0a192f;
	--light-navy: #112240;
	--lightest-navy: #233554;
	--navy-shadow: rgba(2, 12, 27, 0.7);
	--dark-slate: #495670;
	--slate: #8892b0;
	--light-slate: #a8b2d1;
	--lightest-slate: #ccd6f6;

	--font-dm-sans: "DM Sans", sans-serif;
	--font-grotesk: "Space Grotesk", sans-serif;
	--font-roboto-mono: "Roboto Mono", monospace;
	--font-teko: "Teko", sans-serif;

	--font-sans:
		"Calibre", "Inter", "San Francisco", "SF Pro Text", -apple-system,
		system-ui, sans-serif;
	--font-mono: "SF Mono", "Fira Code", "Fira Mono", "Roboto Mono", monospace;
}

body {
	/* background: #0a0f14; */
	background: #0a192f;
	font-family: var(--font-sans);
}

/* Typography */
button,
a:not(nav a) {
    font-family: var(--font-roboto-mono);
	cursor: pointer;
}
main a:hover {
    text-decoration: underline;
}

h1,
h2,
h3,
h4,
h5,
h6 {
	color: var(--lightest-slate);
}
p {
	color: var(--light-slate);
	line-height: 1.3;
}

main ul li,
main code,
main pre,
main blockquote p {
	color: var(--light-slate);
}
p.content,
ul.content,
ol.content,
span.content,
.content p,
.content span:not(.skill-pill),
.content button,
.content a,
.content div,
.content strong,
.content ol li,
.content table *,
.content ul li,
.content code,
.content pre,
.content blockquote p {
    font-family: var(--font-sans);
    font-size: 1.125rem;
	line-height: 1.3;
}
.stack {
	color: var(--slate);
}

/* Fonts */
.text-sf-mono {
	font-family: "SF Mono", monospace;
}
.text-calibre,
.font-sans {
	font-family: var(--font-sans);
}
.text-dm-sans {
	font-family: var(--font-dm-sans);
}
.text-grotesk {
	font-family: var(--font-grotesk);
}
.font-roboto-mono {
	font-family: var(--font-roboto-mono);
}
.font-teko {
	font-family: var(--font-teko);
}
.text-teal-400 {
	color: var(--primary-color) !important;
}
/* Header */
.menu-toggle {
	position: relative;
	display: flex;
	justify-content: center;
	align-items: center;
	border: hidden;
	transition: all 250ms ease-in-out;
	cursor: pointer;
}

.menu-bar {
	position: absolute;
	width: 15px;
	height: 1.5px;
	background: #ffffff;
	transition-property: transform;
	transition: all 250ms ease-out;
}

.menu-bar[data-position="top"] {
	transform: translateY(-3px);
}

.menu-bar[data-position="bottom"] {
	transform: translateY(3px);
}

.menu-toggle.active .menu-bar[data-position="top"] {
	transform: translateY(0) rotate(45deg) scaleX(1.05);
}

.menu-toggle.active .menu-bar[data-position="bottom"] {
	transform: translateY(0) rotate(-45deg) scaleX(1.05);
}

/* Section Employment History */
.tab-content {
	opacity: 0;
	transform: translateY(10px);
	transition: all 0.4s ease-in-out;
	display: none;
}
.tab-content.active {
	display: block;
	opacity: 1;
	transform: translateY(0);
}
.indicator {
	position: absolute;
	left: -2px;
	width: 2px;
	height: 40px;
	background-color: var(--primary-color);
	transition: transform 0.3s ease-in-out;
}

/* Services */
.numbered-label::before {
	content: attr(data-num) ". ";
}

/* group-hover for nested svg color — JS-free approach */
.card-group:hover .icon-svg {
	color: var(--primary-color);
}
.card-group:hover .card-num {
	color: var(--primary-color);
	opacity: 1;
}

/* scroll reveal */
.reveal {
	opacity: 0;
	transform: translateY(24px);
	transition:
		opacity 0.5s ease,
		transform 0.5s ease;
}
.reveal.visible {
	opacity: 1;
	transform: none;
}
.reveal:nth-child(2) {
	transition-delay: 0.1s;
}
.reveal:nth-child(3) {
	transition-delay: 0.2s;
}
.reveal:nth-child(4) {
	transition-delay: 0.3s;
}
.reveal:nth-child(5) {
	transition-delay: 0.4s;
}
.reveal:nth-child(6) {
	transition-delay: 0.5s;
}

/* Projects */
.project {
	position: relative;
	display: grid;
	gap: 10px;
	grid-template-columns: repeat(12, 1fr);
	-webkit-box-align: center;
	align-items: center;
}
.project .project-content {
	position: relative;
	grid-area: 1 / 1 / -1 / 7;
	z-index: 1;
}
.project:nth-of-type(2n + 1) .project-content {
	grid-column: 7 / -1;
	text-align: right;
	z-index: 1;
}
.project .project-image {
	box-shadow: 0 10px 30px -15px var(--navy-shadow);
	transition: var(--transition);
	grid-area: 1 / 6 / -1 / -1;
	position: relative;
	z-index: 1;
}
.project-links svg {
	width: 20px;
	color: var(--lightest-slate);
}
.project:nth-of-type(2n + 1) .project-image {
	grid-column: 1 / 8;
}
.project:nth-of-type(2n + 1) .project-tech-list {
	-webkit-box-pack: end;
	justify-content: flex-end;
}
.project:nth-of-type(2n + 1) .project-links {
	-webkit-box-pack: end;
	justify-content: flex-end;
}

.social svg {
	width: 16px;
	color: var(--light-slate);
}

/* Case Study Page */
.reveal {
	opacity: 0;
	transform: translateY(20px);
	transition:
		opacity 0.55s ease,
		transform 0.55s ease;
}
.reveal.in {
	opacity: 1;
	transform: none;
}
.reveal-d1 {
	transition-delay: 0.1s;
}
.reveal-d2 {
	transition-delay: 0.2s;
}
.reveal-d3 {
	transition-delay: 0.3s;
}
.reveal-d4 {
	transition-delay: 0.4s;
}
/* sidebar active */
.nav-link:hover,
.nav-link.active {
	color: oklch(77.7% 0.152 181.912);
}
/* mobile nav */
#mobileNav.open {
	max-height: 400px !important;
	padding-top: 0.75rem;
}
/* section divider */
.sec-label::before {
	content: attr(data-num) ". ";
	color: var(--primary-color);
	font-family: "Roboto Mono", monospace;
}
/* challenge card hover */
.ch-card:hover {
	border-color: rgba(0, 213, 190, 0.18);
	transform: translateY(-4px);
}
/* solution row hover */
.sol-row:hover {
	border-color: var(--border);
}
/* swatch hover */
.swatch-wrap:hover .swatch-hex {
	opacity: 1;
}
.swatch-hex {
	opacity: 0;
	transition: opacity 0.2s;
}
/* bar anim */
@keyframes barFill {
	from {
		width: 0;
	}
}
.bar-fill {
	animation: barFill 0.9s ease forwards;
}
/* gradient text */
.grad-text {
	background: var(--primary-color);
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}

/* Blog */
.tag-filter.active {
	background: var(--primary-dim);
	border-color: var(--primary-border);
	color: oklch(77.7% 0.152 181.912);
}
.blog-card:hover .post-title {
	color: oklch(77.7% 0.152 181.912);
}

/* Legal */
.font-mono {
	font-family: "Roboto Mono", monospace;
}
#read-progress {
	transition: width 0.1s linear;
}
#mobileNav.open {
	max-height: 400px !important;
	padding-top: 0.75rem;
}
.tab-btn.active {
	background: rgba(239, 177, 0, 0.07);
	border-color: rgba(239, 177, 0, 0.4);
	color: oklch(77.7% 0.152 181.912);
}
/* legal prose */
.legal h2 {
	font-weight: 700;
	font-size: 1.6rem;
	color: #ccd6f6;
	margin: 2.5rem 0 0.8rem;
	padding-bottom: 0.5rem;
	border-bottom: 1px solid #233554;
}
.legal h3 {
	font-weight: 600;
	font-size: 1.2rem;
	color: #a8b2d1;
	margin: 1.8rem 0 0.6rem;
}
.legal p {
	color: #8892b0;
	margin-bottom: 1.1rem;
	font-size: 18px;
}
.legal ul {
	list-style: none;
	margin: 1rem 0 1.2rem;
	padding: 0;
}
.legal ul li {
	padding-left: 1.4rem;
	position: relative;
	color: #8892b0;
}
.legal ul li::before {
	content: "▹";
	position: absolute;
	left: 0;
	color: var(--primary-color);
	font-family: monospace;
}
.legal a {
	color: oklch(77.7% 0.152 181.912);
	text-decoration: underline;
	text-decoration-color: rgba(0, 213, 190, 0.3);
}
.legal strong {
	color: #ccd6f6;
}
.legal .notice {
	border-left: 2px solid var(--primary-border);
	padding: 0.6rem 1.1rem;
	background: rgba(0, 213, 190, 0.07);
	margin-bottom: 2rem;
}
.legal .notice p {
	margin-bottom: 0;
	font-family: "Roboto Mono", monospace;
	font-size: 0.78rem;
	color: #a8b2d1;
	line-height: 1.7;
}

/* Blog */
/* prose */
.prose p {
	color: #a8b2d1;
	margin-bottom: 1.3rem;
	font-size: 1.2rem;
}
.prose h2 {
	font-weight: 700;
	font-size: 1.8rem;
	color: #ccd6f6;
	margin: 2.5rem 0 0.9rem;
}
.prose h3 {
	font-weight: 600;
	font-size: 1.3rem;
	color: #ccd6f6;
	margin: 2rem 0 0.6rem;
}
.prose ul {
	list-style: none;
	margin: 1rem 0 1.3rem;
	padding: 0;
}
.prose ul li {
	padding-left: 1.4rem;
	position: relative;
	color: #a8b2d1;
}
.prose ul li::before {
	content: "▹";
	position: absolute;
	left: 0;
	color: var(--primary-color);
	font-family: monospace;
}
.prose ol {
	counter-reset: pc;
	margin: 1rem 0 1.3rem;
	padding: 0;
}
.prose ol li {
	counter-increment: pc;
	padding-left: 2rem;
	position: relative;
	color: #a8b2d1;
}
.prose ol li::before {
	content: counter(pc) ".";
	position: absolute;
	left: 0;
	color: var(--primary-color);
	font-family: "Roboto Mono", monospace;
	font-size: 0.85rem;
	top: 0.15rem;
}
.prose blockquote {
	border-left: 2px solid var(--primary-color);
	padding: 0.6rem 1.2rem;
	margin: 1.5rem 0;
	background: rgba(0, 213, 190, 0.07);
}
.prose blockquote p {
	color: #ccd6f6;
	font-style: italic;
	margin-bottom: 0;
}
.prose pre {
	background: #020c1b;
	border: 1px solid #233554;
	padding: 1.2rem 1.4rem;
	margin: 1.3rem 0;
	overflow-x: auto;
	border-radius: 0;
}
.prose code {
	font-family: "Roboto Mono", monospace;
	font-size: 0.86rem;
	color: var(--primary-color);
	background: rgba(0, 213, 190, 0.07);
	border: 1px solid rgba(0, 213, 190, 0.18);
	padding: 0.1rem 0.35rem;
}
.prose pre code {
	background: none;
	border: none;
	padding: 0;
	color: #a8b2d1;
}
.prose a {
	color: var(--primary-color);
	text-decoration: underline;
	text-decoration-color: rgba(0, 213, 190, 0.3);
}
.prose hr {
	border: none;
	border-top: 1px solid #233554;
	margin: 2.5rem 0;
}
.prose strong {
	color: #ccd6f6;
}

/* Services */
.scard:hover {
	border-color: rgba(0, 213, 190, 0.4);
	transform: translateY(-4px);
	box-shadow: 0 16px 40px -8px rgba(2, 12, 27, 0.9);
}
.scard:hover .scard-icon {
	color: oklch(77.7% 0.152 181.912);
}
.scard:hover .scard-num {
	color: var(--primary-color);
	opacity: 1;
}
.grad-text {
	background: linear-gradient(135deg, #ccd6f6, var(--primary-color));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}

/* Contact */
/* .form-field {
	width: 100%;
	background: #020c1b;
	border: 1px solid #233554;
	padding: 0.75rem 1rem;
	font-family: "Roboto Mono", monospace;
	font-size: 0.85rem;
	color: #ccd6f6;
	transition: border-color 0.2s;
}
.form-field::placeholder {
	color: #495670;
}
.form-field:focus {
	outline: none;
	border-color: rgba(0, 213, 190, 0.4);
}
.grad-text {
	background: linear-gradient(135deg, #ccd6f6, var(--primary-color));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}
#success-state {
	display: none;
}
.budget-opt input {
	display: none;
}
.budget-opt:has(input:checked) {
	border-color: rgba(0, 213, 190, 0.4);
	background: rgba(0, 213, 190, 0.07);
}
.budget-opt:has(input:checked) span {
	color: var(--primary-color);
} */
 /* ── form fields ── */
    .form-field {
      width: 100%;
      background: #020c1b;
      border: 1px solid #233554;
      padding: .85rem 1rem;
      font-family: 'Roboto Mono', monospace;
      color: #ccd6f6;
      outline: none;
      transition: border-color .2s ease, box-shadow .2s ease;
    }
    .form-field::placeholder { color: #495670; }
    .form-field:focus {
      border-color: rgba(0, 213, 190,.5);
      box-shadow: 0 0 0 3px rgba(0, 213, 190,.06);
    }
    .form-field:focus + .field-label,
    .form-field:not(:placeholder-shown) + .field-label {
      transform: translateY(-2rem) scale(.85);
      color: var(--primary-color);
    }

    /* ── floating label ── */
    .field-wrap { position: relative; }
    .field-label {
      position: absolute;
      left: 1rem;
      top: .65rem;
      font-family: 'Roboto Mono', monospace;
      color: #495670;
      pointer-events: none;
      transform-origin: left top;
      transition: transform .18s ease, color .18s ease;
    }
    /* for select, always float label */
    .field-label.always-up {
      transform: translateY(-1.6rem) scale(.85);
      color: #8892b0;
    }

    /* ── radio / budget pills ── */
    .budget-pill input { display: none; }
    .budget-pill label {
      display: block;
      font-family: 'Roboto Mono', monospace;
      color: #8892b0;
      border: 1px solid #233554;
      padding: .45rem .9rem;
      cursor: pointer;
      transition: border-color .18s, color .18s, background .18s;
      text-align: center;
    }
    .budget-pill input:checked + label {
      border-color: rgba(0, 213, 190,.5);
      color: var(--primary-color);
      background: rgba(0, 213, 190,.07);
    }
    .budget-pill label:hover { border-color: rgba(0, 213, 190,.3); color: #ccd6f6; }

    /* ── service checkbox ── */
    .service-check input { display: none; }
    .service-check label {
      display: flex;
      align-items: center;
      gap: .55rem;
      font-family: 'Roboto Mono', monospace;
      color: #8892b0;
      cursor: pointer;
      transition: color .18s;
    }
    .service-check label .check-box {
      width: 1rem; height: 1rem;
      border: 1px solid #233554;
      display: flex; align-items: center; justify-content: center;
      flex-shrink: 0;
      transition: border-color .18s, background .18s;
    }
    .service-check label .check-icon { opacity: 0; transition: opacity .15s; }
    .service-check input:checked + label { color: var(--primary-color); }
    .service-check input:checked + label .check-box {
      border-color: var(--primary-color);
      background: rgba(0, 213, 190,.1);
    }
    .service-check input:checked + label .check-icon { opacity: 1; }
    .service-check label:hover { color: #ccd6f6; }

    /* ── submit button ── */
    .submit-btn {
      position: relative;
      overflow: hidden;
    }
    .submit-btn::after {
      content: '';
      position: absolute;
      inset: 0;
      background: linear-gradient(135deg, transparent 40%, rgba(255,255,255,.12) 100%);
      opacity: 0;
      transition: opacity .25s;
    }
    .submit-btn:hover::after { opacity: 1; }
    .submit-btn .btn-shine {
      position: absolute;
      top: 0; left: -75%;
      width: 50%; height: 100%;
      background: linear-gradient(90deg, transparent, rgba(255,255,255,.15), transparent);
      transform: skewX(-20deg);
      transition: left .5s ease;
    }
    .submit-btn:hover .btn-shine { left: 130%; }

    /* ── input validation states ── */
    .form-field.valid   { border-color: rgba(100,220,100,.4); }
    .form-field.invalid { border-color: rgba(255,80,80,.45); }

    /* ── char counter ── */
    #msg-count { transition: color .2s; }
    #msg-count.warn { color: var(--primary-color); }
    #msg-count.over { color: #ff5f5f; }

    /* ── glow orb ── */
    @keyframes orbPulse { 0%,100%{opacity:.04} 50%{opacity:.09} }
    .orb { animation: orbPulse 5s ease-in-out infinite; }

    /* ── success animation ── */
    @keyframes scaleIn { from{opacity:0;transform:scale(.85)} to{opacity:1;transform:scale(1)} }
    #success-state { animation: scaleIn .4s ease forwards; }

    /* ── decorative line ── */
    .deco-line::before {
      content: '';
      display: inline-block;
      vertical-align: middle;
      width: clamp(30px, 6vw, 80px);
      height: 1px;
      background: rgba(0, 213, 190,.35);
      margin-right: .75rem;
    }

    /* ── social link hover ── */
    .social-link:hover .social-icon { color: var(--primary-color); }
    .social-link:hover .social-label { color: #ccd6f6; }

    /* ── availability dot ── */
    @keyframes ping { 75%,100%{transform:scale(2);opacity:0} }
    .ping { animation: ping 1.4s cubic-bezier(0,0,.2,1) infinite; }

/* About */
.tab-btn.active {
	background: var(--primary-dim);
	border-color: var(--primary-border);
	color: var(--primary-color);
}
.skill-bar-fill {
	animation: barFill 0.9s ease forwards;
}
@keyframes barFill {
	from {
		width: 0;
	}
}
.exp-item:hover {
	border-left-color: var(--primary-color);
}
.grad-text {
	background: linear-gradient(135deg, #ccd6f6, var(--primary-color));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}

/* Portfolio */
.filter-btn.active {
	background: var(--primary-dim);
	border-color: var(--primary-border);
	color: var(--primary-color);
}
.proj-card:hover {
	border-color: rgba(0, 213, 190, 0.4);
	transform: translateY(-4px);
	box-shadow: 0 20px 40px -12px rgba(2, 12, 27, 0.9);
}
.proj-card:hover .proj-title {
	color: var(--primary-color);
}
.proj-card:hover .proj-links {
	opacity: 1;
}
.proj-links {
	opacity: 0;
	transition: opacity 0.2s ease;
}
.grad-text {
	background: linear-gradient(135deg, #ccd6f6, var(--primary-color));
	-webkit-background-clip: text;
	-webkit-text-fill-color: transparent;
	background-clip: text;
}
/* noteworthy (small) cards */
.note-card:hover {
	border-color: rgba(0, 213, 190, 0.4);
	transform: translateY(-3px);
}
.note-card:hover .note-title {
	color: var(--primary-color);
}

/* Resume */
/* skill pill */
.skill-pill {
	font-family: "Roboto Mono", monospace;
	color: #a8b2d1;
	border: 1px solid #233554;
	padding: 0.2rem 0.6rem;
	display: inline-block;
	transition:
		border-color 0.2s,
		color 0.2s;
}
.skill-pill:hover {
	border-color: rgba(0, 213, 190, 0.4);
	color: var(--primary-color);
}
/* print styles */
@media print {
	body {
		background: #fff !important;
	}
	header,
	.no-print,
	footer {
		display: none !important;
	}
	main {
		margin-left: 0 !important;
	}
	.bg-navy-dark,
	.bg-navy,
	.bg-navy-light {
		background: #fff !important;
	}
	.text-slate-lighter {
		color: #111 !important;
	}
	.text-slate {
		color: #444 !important;
	}
	.text-teal-400 {
		color: #7a5c00 !important;
	}
	.border-navy-lighter,
	.border-navy-light {
		border-color: #ddd !important;
	}
	.bg-primary-dim {
		background: transparent !important;
	}
	.border-primary-border {
		border-color: #ccc !important;
	}
	#cv-paper {
		box-shadow: none !important;
		border: none !important;
	}
	.print-break {
		page-break-before: always;
	}
}

/* 404 Template */
/* glitch animation */
@keyframes glitch1 {
	0%,
	100% {
		clip-path: inset(40% 0 61% 0);
		transform: translate(-4px, 0);
	}
	20% {
		clip-path: inset(92% 0 1% 0);
		transform: translate(4px, 0);
	}
	40% {
		clip-path: inset(43% 0 1% 0);
		transform: translate(-4px, 0);
	}
	60% {
		clip-path: inset(25% 0 58% 0);
		transform: translate(4px, 0);
	}
	80% {
		clip-path: inset(54% 0 7% 0);
		transform: translate(-4px, 0);
	}
}
@keyframes glitch2 {
	0%,
	100% {
		clip-path: inset(24% 0 29% 0);
		transform: translate(4px, 0);
	}
	20% {
		clip-path: inset(54% 0 21% 0);
		transform: translate(-4px, 0);
	}
	40% {
		clip-path: inset(71% 0 8% 0);
		transform: translate(4px, 0);
	}
	60% {
		clip-path: inset(10% 0 66% 0);
		transform: translate(-4px, 0);
	}
	80% {
		clip-path: inset(50% 0 30% 0);
		transform: translate(4px, 0);
	}
}
.glitch-wrap {
	position: relative;
	display: inline-block;
}
.glitch-wrap::before,
.glitch-wrap::after {
	content: attr(data-text);
	position: absolute;
	inset: 0;
	font-family: "Teko", sans-serif;
	font-weight: 700;
}
.glitch-wrap::before {
	color: oklch(77.7% 0.152 181.912);
	animation: glitch1 3s infinite linear alternate-reverse;
}
.glitch-wrap::after {
	color: #ff3b3b;
	animation: glitch2 3s infinite linear alternate-reverse;
	animation-delay: 0.3s;
}

/* terminal blink */
@keyframes blink {
	0%,
	100% {
		opacity: 1;
	}
	50% {
		opacity: 0;
	}
}
.cursor {
	display: inline-block;
	width: 10px;
	height: 1.2em;
	background: var(--primary-color);
	vertical-align: middle;
	animation: blink 1s step-end infinite;
}

/* scan lines */
.scanlines {
	background: repeating-linear-gradient(
		0deg,
		transparent,
		transparent 2px,
		rgba(0, 0, 0, 0.08) 2px,
		rgba(0, 0, 0, 0.08) 4px
	);
	pointer-events: none;
}

/* float animation */
@keyframes float {
	0%,
	100% {
		transform: translateY(0);
	}
	50% {
		transform: translateY(-12px);
	}
}
.float {
	animation: float 4s ease-in-out infinite;
}

/* fade in */
.fadein {
	animation: fadein 0.6s ease forwards;
	opacity: 0;
}
@keyframes fadein {
	to {
		opacity: 1;
	}
}
.fadein-d1 {
	animation-delay: 0.1s;
}
.fadein-d2 {
	animation-delay: 0.25s;
}
.fadein-d3 {
	animation-delay: 0.4s;
}
.fadein-d4 {
	animation-delay: 0.55s;
}
.fadein-d5 {
	animation-delay: 0.7s;
}

/* Single Blog */
/* prose */
.prose-content p {
	font-family: "Lora", Georgia, serif;
	color: #a8b2d1;
	line-height: 1.95;
	margin-bottom: 1.4rem;
	font-size: 1.05rem;
}
.prose-content h2 {
	font-family: "Teko", sans-serif;
	font-weight: 700;
	font-size: 1.9rem;
	color: #ccd6f6;
	margin: 2.8rem 0 1rem;
	padding-bottom: 0.5rem;
	border-bottom: 1px solid #233554;
}
.prose-content h3 {
	font-family: "Teko", sans-serif;
	font-weight: 600;
	font-size: 1.4rem;
	color: #a8b2d1;
	margin: 2rem 0 0.7rem;
}
.prose-content ul,
.prose-content ol {
	margin: 1rem 0 1.4rem;
	padding: 0;
	list-style: none;
}
.prose-content ul li {
	padding-left: 1.5rem;
	position: relative;
	color: #a8b2d1;
	margin-bottom: 0.6rem;
	font-family: "Lora", Georgia, serif;
	font-size: 1rem;
	line-height: 1.75;
}
.prose-content ul li::before {
	content: "▹";
	position: absolute;
	left: 0;
	color: var(--primary-color);
	font-family: monospace;
}
.prose-content ol {
	counter-reset: ol-c;
}
.prose-content ol li {
	counter-increment: ol-c;
	padding-left: 2rem;
	position: relative;
	color: #a8b2d1;
	margin-bottom: 0.6rem;
	font-family: "Lora", Georgia, serif;
	font-size: 1rem;
	line-height: 1.75;
}
.prose-content ol li::before {
	content: counter(ol-c) ".";
	position: absolute;
	left: 0;
	color: var(--primary-color);
	font-family: "Roboto Mono", monospace;
	font-size: 0.82rem;
	top: 0.18rem;
}
.prose-content blockquote {
	border-left: 3px solid var(--primary-color);
	padding: 0.75rem 1.4rem;
	margin: 1.8rem 0;
	background: rgba(0, 213, 190, 0.06);
}
.prose-content blockquote p {
	color: #ccd6f6;
	font-style: italic;
	margin-bottom: 0;
}
.prose-content pre {
	background: #020c1b;
	border: 1px solid #233554;
	padding: 1.3rem 1.6rem;
	margin: 1.6rem 0;
	overflow-x: auto;
	position: relative;
}
.prose-content code {
	font-family: "Roboto Mono", monospace;
	font-size: 0.85rem;
	color: var(--primary-color);
	background: rgba(0, 213, 190, 0.07);
	border: 1px solid rgba(0, 213, 190, 0.18);
	padding: 0.1rem 0.38rem;
}
.prose-content pre code {
	background: none;
	border: none;
	padding: 0;
	color: #a8b2d1;
	font-size: 0.84rem;
}
.prose-content a {
	color: var(--primary-color);
	text-decoration: underline;
	text-decoration-color: rgba(0, 213, 190, 0.3);
}
.prose-content hr {
	border: none;
	border-top: 1px solid #233554;
	margin: 2.5rem 0;
}
.prose-content strong {
	color: #ccd6f6;
	font-weight: 600;
}
.callout {
	background: rgba(0, 213, 190, 0.05);
	border: 1px solid rgba(0, 213, 190, 0.2);
	padding: 1.1rem 1.4rem;
	margin: 1.8rem 0;
	display: flex;
	gap: 0.9rem;
	align-items: flex-start;
}
.callout p {
	margin-bottom: 0;
	font-family: "Roboto Mono", monospace;
	font-size: 0.8rem;
	color: #a8b2d1;
	line-height: 1.7;
}

/* TOC */
.toc-link {
	display: block;
	font-family: "Roboto Mono", monospace;
	color: #8892b0;
	border-left: 2px solid #233554;
	padding: 0.35rem 0.8rem;
	transition: all 0.15s;
	line-height: 1.5;
}
.toc-link:hover,
.toc-link.active {
	color: var(--primary-color);
	border-left-color: var(--primary-color);
}
.toc-link.active {
	background: rgba(0, 213, 190, 0.04);
}

/* like button */
.like-btn.liked {
	background: rgba(0, 213, 190, 0.1);
	border-color: rgba(0, 213, 190, 0.4);
	color: var(--primary-color);
}
.like-btn.liked .like-heart {
	fill: var(--primary-color);
}
@keyframes pop {
	0% {
		transform: scale(1);
	}
	45% {
		transform: scale(1.4);
	}
	75% {
		transform: scale(0.88);
	}
	100% {
		transform: scale(1);
	}
}
.pop {
	animation: pop 0.32s ease;
}

/* comment form */
.form-field {
	width: 100%;
	background: #020c1b;
	border: 1px solid #233554;
	padding: 0.75rem 1rem;
	font-family: "Roboto Mono", monospace;
	font-size: 0.83rem;
	color: #ccd6f6;
	transition: border-color 0.2s;
}
.form-field::placeholder {
	color: #495670;
}
.form-field:focus {
	outline: none;
	border-color: rgba(0, 213, 190, 0.4);
}

/* comment cards */
.comment-card {
	border-left: 2px solid #233554;
	transition: border-left-color 0.25s ease;
}
.comment-card:hover {
	border-left-color: rgba(0, 213, 190, 0.35);
}
.reply-card {
	margin-left: 1.75rem;
	border-left-color: #172a45;
}
.reply-card:hover {
	border-left-color: rgba(0, 213, 190, 0.25);
}

/* reply form */
.reply-form {
	display: none;
}
.reply-form.open {
	display: block;
}

/* vote */
.vote-btn:hover {
	color: var(--primary-color);
}
.vote-btn.voted-up {
	color: var(--primary-color);
}
.vote-btn.voted-down {
	color: #ff5f5f;
}

/* sort tab */
.sort-tab.active {
	color: var(--primary-color);
	border-bottom: 2px solid var(--primary-color);
}

/* copy button */
.copy-btn {
	position: absolute;
	top: 0.75rem;
	right: 0.75rem;
}
