/*
Theme Name: mgt
Description: Manual Graphics Basic Theme
Author: Manual Graphics
Version: 1.0
*/

/* Reset Styles */
html,body,div,span,applet,object,iframe,h1,h2,h3,h4,h5,h6,p,blockquote,pre,a,abbr,acronym,address,big,cite,code,del,dfn,em,img,ins,kbd,q,s,samp,small,strike,strong,sub,sup,tt,var,b,u,i,center,dl,dt,dd,ol,ul,li,fieldset,form,label,legend,table,caption,tbody,tfoot,thead,tr,th,td,article,aside,canvas,details,embed,figure,figcaption,footer,header,hgroup,menu,nav,output,ruby,section,summary,time,mark,audio,video {
	margin: 0;
	padding: 0;
	border: 0;
	font-size: 100%;
	font: inherit;
	vertical-align: baseline;
}

article,aside,details,figcaption,figure,footer,header,hgroup,menu,nav,section {
	display: block;
}

body {
	line-height: 1;
}

ol,ul {
	list-style: none;
}

blockquote,q {
	quotes: none;
}

blockquote:before,blockquote:after,q:before,q:after {
	content: '';
	content: none;
}

table {
	border-collapse: collapse;
	border-spacing: 0;
}

textarea,input {
	-webkit-appearance: none;
	-webkit-border-radius: 0;
}

figure {
	margin: 0;
}

button {
	background-color: transparent;
	outline: none;
	border: none;
	font-family: var(--ff-pretendard);
	cursor: pointer; /* 접근성을 위해 추가 */
}

html {
	font-size: 62.5%;
}

a {
	text-decoration: none;
	color: var(--cb);
}

/* CSS Variables */
:root {
	/* Colors */
	--cp1: #5234C1;
	--cp2: #fdf5e6;
	--cp3: #a1d5fe;
	--cp4: #294935;
	
	--cw: #fff;
	--cb: #000;
	
	/* Grays */
	--cg1: #252525;
	--cg2: #3d3d3d;
	--cg3: #525252;
	--cg4: #737373;
	--cg5: #969696;
	--cg6: #bdbdbd;
	--cg7: #d9d9d9;
	--cg8: #f0f0f0;
	
	/* Lines */
	--line: #ccc;
	--linebk: #141414;
	
	/* Transitions */
	--tts: 0.3s;
	--ttm: 0.6s;
	--ttl: 1s;
	
	/* Fonts */
	--ff-pretendard: "Pretendard Variable", Pretendard, -apple-system, BlinkMacSystemFont, system-ui, Roboto, "Helvetica Neue", "Segoe UI", "Apple SD Gothic Neo", "Noto Sans KR", "Malgun Gothic", "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", sans-serif;
	--ff-mono: "SF Mono", Monaco, Inconsolata, "Roboto Mono", Consolas, "Andale Mono", monospace;
	
	/* Font Sizes */
	--fs0: 1.2rem;
	--fs1: 1.4rem;
	--fs2: 1.6rem;
	--fs3: 1.8rem;
	--fs4: 2rem;
	--fs5: 2.2rem;
	--fs6: 2.4rem;
	--fs7: 2.8rem;
	--fs8: 3.2rem;
	--fs9: 4rem;
	--fs10: 6rem;
	--fsmax: 8rem;
	
	/* Viewport height fix for mobile */
	--vh: 1vh;
}

/* Common Styles */
::selection {
	background-color: var(--cb);
	color: var(--cw);
}

/* Utility Classes */
.tac { text-align: center; }
.tar { text-align: right; }
.tal { text-align: left; }
.ttu { text-transform: uppercase; }
.ttc { text-transform: capitalize; }

.title {
	font-size: var(--fs9);
	line-height: 1.2;
	font-weight: 600;
}

.sub-title {
	font-size: var(--fs6);
	font-weight: 500;
}

.maxw {
	max-width: 1600px;
	margin-left: auto;
	margin-right: auto;
}

.maxws {
	max-width: 800px;
	margin-left: auto;
	margin-right: auto;
}

.lmt {
	width: calc(100% - 48px);
	margin-left: auto;
	margin-right: auto;
}

/* Display utilities */
.po { display: block; }
.mo { display: none; }

/* Spacing utilities */
.nmt { margin-top: 0; }
.nmb { margin-bottom: 0; }
.npt { padding-top: 0; }
.npb { padding-bottom: 0; }

/* Flexbox utilities */
.fx {
	display: flex;
	align-items: baseline;
	flex-wrap: wrap;
	gap: 24px;
}

.nogap { gap: 0; }
.gap4 { gap: 4px; }
.gap8 { gap: 8px; }
.gap12 { gap: 12px; }
.gap24 { gap: 24px; }
.gap32 { gap: 32px; }

.flx1 { flex: 1; }
.flx3 { flex: 3; }

.fx2 > * { width: calc(50% - 12px); }
.fx3 > * { width: calc(33.33333333333% - 16px); }
.fx4 > * { width: calc(25% - 18px); }

.fxjc { justify-content: center; }
.fxjs { justify-content: space-between; }
.fxac { align-items: center; }
.fxafs { align-items: flex-start; }
.fxafe { align-items: flex-end; }
.fxas { align-items: stretch; }
.fxdc { flex-direction: column; }
.fxdr { flex-direction: row; }
.fxnw { flex-wrap: nowrap; }

/* Position utilities */
.ctw {
	position: absolute;
	left: 50%;
	transform: translateX(-50%);
}

.cth {
	position: absolute;
	top: 50%;
	transform: translateY(-50%);
}

.cent {
	position: absolute;
	top: 50%;
	left: 50%;
	transform: translate(-50%, -50%);
}

/* Border radius */
.rd4 { border-radius: 4px; }
.rd8 { border-radius: 8px; }
.rd12 { border-radius: 12px; }
.rd16 { border-radius: 16px; }

/* Text overflow */
.ell {
	width: 100%;
	text-overflow: ellipsis;
	overflow: hidden;
	white-space: nowrap;
	word-wrap: normal;
	display: block;
}

.ellmx {
	display: -webkit-box;
	max-height: 80px;
	overflow: hidden;
	text-overflow: ellipsis;
	word-break: break-all;
	-webkit-box-orient: vertical;
	-webkit-line-clamp: 2;
}

/* Material Icons */
.material-symbols-outlined {
	font-size: 32px;
	color: var(--cb);
	opacity: 0;
	transition: var(--tts); /* 🔧 수정: vart → var */
}

.fonts-loaded .material-symbols-outlined {
	opacity: 1;
}

.xs.material-symbols-outlined {
	color: var(--cb);
	font-size: var(--fs3);
	vertical-align: text-bottom;
	font-variation-settings:
		'FILL' 0,
		'wght' 300,
		'GRAD' 0,
		'opsz' 20;
}

.xm.material-symbols-outlined {
	color: var(--cg3);
	font-size: var(--fs4);
	vertical-align: text-bottom;
	font-variation-settings:
		'FILL' 0,
		'wght' 300,
		'GRAD' 0,
		'opsz' 20;
}

.ico-arr {
	font-variation-settings:
		'FILL' 0,
		'wght' 400,
		'GRAD' 0,
		'opsz' 48;
}

.ico16 { font-size: 16px; }
.ico20 { font-size: 20px; }
.ico24 { font-size: 24px; }

hr {
	width: 100%;
	background: var(--cb);
	height: 1px;
	border: none;
	margin: 0;
}

/* Custom Cursor - 접근성 개선 */
.use-custom-cursor {
	cursor: none;
}

.use-custom-cursor * {
	cursor: none;
}

/* 터치 디바이스에서는 커스텀 커서 비활성화 */
@media (hover: none) {
	.use-custom-cursor,
	.use-custom-cursor * {
		cursor: auto;
	}
	
	.custom-cursor {
		display: none;
	}
}

.custom-cursor {
	position: fixed;
	top: -100px;
	left: -100px;
	width: 12px;
	height: 12px;
	background-color: var(--cp1);
	filter: drop-shadow(0px 0px 7px #ccc);
	border-radius: 50%;
	pointer-events: none;
	z-index: 9999;
	transform: translate(-50%, -50%);
	transition: transform var(--tts);
}

.custom-cursor.on-interactive {
	transform: translate(-50%, -50%) scale(0.8);
}

/* Layout */
body {
	position: relative;
	width: 100%;
	height: 100%;
	overflow-x: hidden;
	box-sizing: border-box;
	word-break: keep-all;
	font-family: var(--ff-pretendard);
	font-weight: 400;
	font-size: var(--fs3);
	line-height: 1.6;
	letter-spacing: -0.01em;
	color: var(--cg1);
	background-color: var(--cw);
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
	text-rendering: optimizeLegibility;
}

/* Header */
header {
	background-color: transparent;
	position: fixed;
	top: 0;
	left: 0;
	width: 100%;
	height: 60px;
	z-index: 100;
	transition: var(--tts);
}

header.scrolled {
	background: var(--cw);
	box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
}

header .inner {
	position: relative;
	height: 100%;
	display: flex;
	flex-direction: row;
	align-items: center;
	justify-content: space-between;
}

header .inner > * {
	flex: 1;
}

#logo img {
	display: block;
	height: 20px;
	width: auto;
}

.menu {
	width: 100%;
	padding: 0;
	display: flex;
	gap: 24px;
	justify-content: center;
}

.menu li {
	position: relative;
}

.menu li a {
	color: var(--cg4);
	position: relative;
	text-transform: capitalize;
	line-height: 1;
	font-size: var(--fs3);
	transition: color var(--tts);
}

.menu li a:hover {
	color: var(--cb);
}

#lnb {
	display: flex;
	justify-content: flex-end;
}

/* Container */
.container {
	margin: 0 auto;
	padding: 60px 0 180px;
}

.p-body {
	align-items: start;
	margin: 0px auto;
	box-sizing: border-box;
	flex-wrap: wrap;
	width: 100%;
}

/* Footer */
footer {
	position: relative;
	box-sizing: border-box;
}

footer section {
	position: relative;
}

/* Sections */
.sec {
	padding: 120px 0;
}

/* Post Styles */
.post > * {
	margin-bottom: 12px;
}

.post > *:last-child {
	margin-bottom: 0;
}

.profile {
	flex-direction: row;
	font-size: var(--fs1);
	color: var(--cg3);
}

.profile img {
	width: 28px;
	height: 28px;
	border-radius: 50%;
}

/* 반응형 대응 */
@media (max-width: 768px) {
	:root {
		--fs0: 1rem;
		--fs1: 1.2rem;
		--fs2: 1.4rem;
		--fs3: 1.6rem;
		--fs4: 1.8rem;
		--fs5: 2rem;
		--fs6: 2.2rem;
		--fs7: 2.4rem;
		--fs8: 2.8rem;
		--fs9: 3.2rem;
		--fs10: 4rem;
		--fsmax: 5rem;
	}
	
	.lmt {
		width: calc(100% - 24px);
	}
	
	.fx2 > * { width: 100%; }
	.fx3 > * { width: calc(50% - 12px); }
	.fx4 > * { width: calc(50% - 12px); }
	
	.menu {
		gap: 16px;
	}
	
	.container {
		padding: 40px 0 120px;
	}
	
	.sec {
		padding: 80px 0;
	}
	
	.mo { display: block; }
	.po { display: none; }
}
