/* ====== Reset / Base ====== */
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
html, body { height: 100%; }
body { margin: 0; }
img { max-width: 100%; display: block; }
a { color: inherit; text-decoration: none; }
ul { list-style: none; padding: 0; margin: 0; }

/* ====== Theme ====== */
:root {
	--bg: #f7efe0;
	--bg-2: #efe1c8;
	--paper: #fff6e6;
	--paper-2: #fff1d4;
	--ink: #1f1a12;
	--ink-soft: rgba(31, 26, 18, 0.65);
	--muted: #5a5043;
	--accent: #0f7c8f;
	--accent-2: #d3543a;
	--line: rgba(31, 26, 18, 0.12);
	--line-strong: rgba(31, 26, 18, 0.22);
	--tape: #f3d59a;
	--shadow: 0 18px 40px rgba(31, 26, 18, 0.18);
	--radius: 16px;
	--space: 20px;
	--space-lg: 30px;
	--container: 980px;
	--nav-bg: rgba(255, 246, 230, 0.9);
	--nav-border: rgba(31, 26, 18, 0.22);
	--font-body: "Zen Kaku Gothic New", "Hiragino Kaku Gothic ProN", "Yu Gothic", Meiryo, sans-serif;
	--font-display: "Shippori Mincho", serif;
}

@media (prefers-color-scheme: dark) {
	:root {
		--bg: #151410;
		--bg-2: #1b1914;
		--paper: #212018;
		--paper-2: #27251d;
		--ink: #f2ede3;
		--ink-soft: rgba(242, 237, 227, 0.7);
		--muted: #c2b8a6;
		--line: rgba(242, 237, 227, 0.14);
		--line-strong: rgba(242, 237, 227, 0.22);
		--tape: #6b5a2a;
		--shadow: 0 18px 40px rgba(0, 0, 0, 0.35);
		--nav-bg: rgba(27, 25, 20, 0.86);
		--nav-border: rgba(242, 237, 227, 0.18);
	}
}

/* ====== Background / Typography ====== */
body {
	font-family: var(--font-body);
	color: var(--ink);
	background:
		radial-gradient(900px 520px at -10% -10%, rgba(15, 124, 143, 0.18), transparent 60%),
		radial-gradient(700px 520px at 110% 10%, rgba(211, 84, 58, 0.18), transparent 60%),
		repeating-linear-gradient(0deg, rgba(31, 26, 18, 0.03) 0, rgba(31, 26, 18, 0.03) 1px, transparent 1px, transparent 8px),
		repeating-linear-gradient(90deg, rgba(31, 26, 18, 0.03) 0, rgba(31, 26, 18, 0.03) 1px, transparent 1px, transparent 8px),
		linear-gradient(180deg, var(--bg), var(--bg-2));
	background-attachment: fixed;
	line-height: 1.7;
	letter-spacing: 0.01em;
}

/* smooth scroll and anchor offset for sticky nav */
html { scroll-behavior: smooth; }
[id] { scroll-margin-top: 90px; }

/* ====== Layout ====== */
main {
	max-width: var(--container);
	margin: 0 auto;
	padding: 120px var(--space) 90px;
	display: grid;
	gap: var(--space-lg);
}

/* ====== Card-like sections ====== */
main > div {
	background: linear-gradient(180deg, var(--paper), var(--paper-2));
	border: 2px solid var(--line);
	border-radius: var(--radius);
	padding: clamp(18px, 3vw, 30px);
	box-shadow: var(--shadow);
	position: relative;
	transform: rotate(var(--tilt));
	animation: pin-in 0.7s ease both;
	isolation: isolate;
}

main > div::before,
main > div::after {
	content: "";
	position: absolute;
	width: 72px;
	height: 18px;
	background: linear-gradient(180deg, rgba(255, 255, 255, 0.65), var(--tape));
	border: 1px solid var(--line-strong);
	box-shadow: 0 4px 10px rgba(31, 26, 18, 0.2);
	top: -10px;
	z-index: 1;
}

main > div::before { left: 18px; transform: rotate(-3deg); }
main > div::after { right: 24px; transform: rotate(3deg); }

main > div:nth-child(1) { --tilt: -0.35deg; animation-delay: 0.05s; }
main > div:nth-child(2) { --tilt: 0.25deg; animation-delay: 0.12s; }
main > div:nth-child(3) { --tilt: -0.2deg; animation-delay: 0.19s; }
main > div:nth-child(4) { --tilt: 0.3deg; animation-delay: 0.26s; }

/* ====== Navbar ====== */
.navbar {
	position: sticky;
	top: 0;
	z-index: 50;
	display: flex;
	flex-wrap: wrap;
	gap: 12px;
	align-items: center;
	justify-content: center;
	padding: 12px var(--space);
	background: var(--nav-bg);
	backdrop-filter: blur(8px);
	border-bottom: 2px dashed var(--nav-border);
}

.navbar a {
	font-family: var(--font-display);
	font-weight: 600;
	letter-spacing: 0.02em;
	padding: 8px 14px;
	border-radius: 12px 12px 6px 6px;
	border: 2px solid var(--line-strong);
	border-bottom-width: 4px;
	background: var(--paper);
	box-shadow: 0 6px 0 var(--line-strong);
	transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.2s ease;
}

.navbar a:hover {
	transform: translateY(2px);
	box-shadow: 0 3px 0 var(--line-strong);
	background: rgba(255, 255, 255, 0.8);
}

.navbar a:focus-visible {
	outline: 3px solid rgba(15, 124, 143, 0.4);
	outline-offset: 3px;
}

/* ====== Headings & text ====== */
h1, h2 { margin: 0 0 12px; line-height: 1.2; }
h1 {
	font-family: var(--font-display);
	font-size: clamp(2rem, 4.4vw, 3.2rem);
	font-weight: 700;
	letter-spacing: 0.01em;
	text-shadow: 0 2px 0 rgba(31, 26, 18, 0.08);
}

h2 {
	font-family: var(--font-display);
	font-size: clamp(1.4rem, 2.6vw, 1.9rem);
	font-weight: 600;
	position: relative;
	display: inline-block;
	z-index: 0;
}

h2::before {
	content: "";
	position: absolute;
	left: -6px;
	right: -6px;
	bottom: 0.2em;
	height: 0.6em;
	background: rgba(15, 124, 143, 0.18);
	transform: skew(-4deg);
	z-index: -1;
}

p { margin: 8px 0; color: var(--ink); }
.muted { color: var(--muted); }

/* ====== Top / Hero ====== */
#top {
	display: grid;
	grid-template-columns: 1.1fr 0.9fr;
	gap: clamp(16px, 4vw, 30px);
	align-items: center;
}

@media (max-width: 820px) {
	#top { grid-template-columns: 1fr; }
}

#top img {
	width: 100%;
	height: auto;
	padding: 12px 12px 18px;
	border-radius: calc(var(--radius) - 4px);
	background: rgba(255, 255, 255, 0.85);
	border: 2px solid var(--line-strong);
	box-shadow: 0 10px 0 rgba(31, 26, 18, 0.12), var(--shadow);
}

/* ====== About ====== */
#about ul { margin-top: 10px; display: grid; gap: 10px; }
#about li { padding-left: 16px; position: relative; }
#about li::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0.9em;
	width: 8px;
	height: 8px;
	transform: rotate(45deg);
	background: linear-gradient(135deg, var(--accent), var(--accent-2));
}

/* ====== Links section ====== */
#link ul { display: grid; gap: 14px; }
#link li {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 12px 16px;
	border-radius: 14px;
	border: 2px dashed var(--line-strong);
	background: linear-gradient(180deg, rgba(255, 255, 255, 0.6), rgba(255, 255, 255, 0.25));
	transition: transform 0.18s ease, border-color 0.18s ease;
}

#link li:hover {
	transform: translateY(-2px);
	border-color: rgba(15, 124, 143, 0.55);
}

#link img {
	width: 28px;
	height: 28px;
	object-fit: contain;
	filter: drop-shadow(0 2px 4px rgba(31, 26, 18, 0.2));
}

#link a {
	font-weight: 700;
	position: relative;
}

#link a::after {
	content: " ->";
	color: var(--accent);
	margin-left: 6px;
}

/* ====== Contact ====== */
#contact p {
	font-weight: 600;
	padding: 8px 10px;
	border-left: 4px solid var(--accent-2);
	background: rgba(211, 84, 58, 0.08);
}

/* ====== Focus & Selection ====== */
::selection { background: rgba(15, 124, 143, 0.25); }

/* ====== Page-load motion ====== */
@keyframes pin-in {
	from { opacity: 0; transform: translateY(18px) rotate(var(--tilt)); }
	to { opacity: 1; transform: translateY(0) rotate(var(--tilt)); }
}

@media (prefers-reduced-motion: reduce) {
	main > div { animation: none; }
	.navbar a { transition: none; }
}

/* ====== Utilities ====== */
.hidden { display: none !important; }
.center { text-align: center; }

