* {
	box-sizing: border-box;
}

html, body {
	margin: 0;
	padding: 0;
	background: #fff;
	color: #000;
	font-family: Arial, Helvetica, sans-serif;
	overflow-x: hidden;
	max-width: 100%;
}

a {
	color: #000;
}


/* ---------- Login page ---------- */

.login-page {
	display: flex;
	align-items: center;
	justify-content: center;
	min-height: 100vh;
	min-height: 100dvh;
}

.login-form {
	display: flex;
	flex-direction: column;
	gap: 12px;
	width: 100%;
	max-width: 260px;
	padding: 0 20px;
}

.login-form input {
	padding: 12px 14px;
	font-size: 16px;
	border: 1px solid #ccc;
	background: #fff;
	color: #000;
	border-radius: 4px;
}

.login-form button {
	padding: 12px 14px;
	font-size: 16px;
	background: #000;
	color: #fff;
	border: none;
	border-radius: 4px;
	cursor: pointer;
}

.login-error {
	color: #c00;
	margin: 0;
	font-size: 14px;
}


/* ---------- Table of contents ---------- */

.toc-page {
	padding: 40px 20px;
}

.toc-page h1 {
	font-size: 20px;
	font-weight: normal;
	margin-bottom: 24px;
}

.project-list {
	list-style: none;
	margin: 0;
	padding: 0;
}

.project-list li {
	margin-bottom: 14px;
}

.project-list a {
	text-decoration: none;
	font-size: 18px;
}

.project-list a:hover {
	text-decoration: underline;
}

.empty-hint {
	color: #666;
	font-size: 14px;
	max-width: 480px;
}

/* ---------- Project page ---------- */

.back-link {
	position: fixed;
	top: 12px;
	left: 13px;
	z-index: 2;
	background: rgba(255, 255, 255, 0.85);
	color: #000;
	padding: 8px 14px;
	border-radius: 4px;
	text-decoration: none;
	font-size: 14px;
}

#reel {
	display: flex;
	flex-direction: column;
	width: 100%;
	gap: 7vh;
	padding-left: 40px;
	padding-right: 40px;
}

.row {
	width: 100%;
	overflow: hidden;
	position: relative;
	background: #fff;
	display: flex;
	align-items: center;
	/* height gets set per-row by js/reel.js (random 30–90vh);
	   justify-content gets set per-row too (random horizontal position) */
}

.row video,
.row img {
	width: auto;
	height: 100%;
	max-width: 100%;
	object-fit: contain;
	display: block;
	cursor: zoom-in;
}

/* Click-to-expand: fills the whole screen, cropped this time (cover) —
   click again (or Escape) to go back to the normal, uncropped view. */
.row video.expanded,
.row img.expanded {
	position: fixed;
	top: 0;
	left: 0;
	width: 100vw;
	height: 100vh;
	max-width: 100vw;
	object-fit: cover;
	z-index: 1000;
	cursor: zoom-out;
	background: #000;
}
