@import url("https://fonts.googleapis.com/css2?family=Press+Start+2P&family=JetBrains+Mono:wght@400;500;600;700&family=Noto+Sans+KR:wght@300;400;500;700&family=Yuji+Mai&family=Yuji+Syuku&display=swap");:root{--bg-primary: #090b10;--bg-secondary: #0e1117;--bg-tertiary: #161c26;--bg-card: #111520;--accent: #5b9cf6;--accent-2: #a78bfa;--accent-glow: rgba(91, 156, 246, 0.18);--accent-subtle: #1d4ed8;--text-primary: #e8edf5;--text-muted: #8892a4;--text-faint: #4a5568;--border: #1e2535;--border-hover: #2d3a52;--glow-blue: rgba(91, 156, 246, 0.25);--glow-purple: rgba(167, 139, 250, 0.2);--gradient-1: linear-gradient(135deg, #5b9cf6 0%, #a78bfa 100%);--gradient-2: linear-gradient(135deg, #3b82f6 0%, #8b5cf6 50%, #ec4899 100%)}*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}html,body{cursor:url("/assets/images/cursor-pointer.png") 28 3,auto}a,button,[role="button"],.btn,.cat-filter-item,.cloud-tag,.copy-btn,.hamburger,.back-to-top,.post-nav-item,.mobile-toc-toggle,label,select,summary{cursor:url("/assets/images/cursor-pointer.png") 28 3,pointer}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-primary)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#484f58}::selection{background:rgba(88,166,255,0.2);color:var(--text-primary)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:2px}:focus:not(:focus-visible){outline:none}#page-shake{will-change:transform}html{scroll-behavior:smooth}body{background-color:var(--bg-primary);color:var(--text-primary);font-family:"Noto Sans KR",sans-serif;font-size:16px;line-height:1.7;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}a{color:var(--accent);text-decoration:none;transition:color 0.2s ease}a:hover{color:var(--text-primary)}ul,ol{list-style:none}img{max-width:100%;height:auto;display:block}.container{max-width:1100px;margin:0 auto;padding:0 24px}section{padding:128px 0}.section-title{font-family:"Press Start 2P","Galmuri11",monospace;font-size:12px;font-weight:400;color:var(--text-primary);margin-bottom:56px;position:relative;display:inline-flex;align-items:center;gap:12px;letter-spacing:0.04em;line-height:1.8;text-transform:uppercase;image-rendering:pixelated}.section-title::before{content:'▶';color:#00e676;font-size:9px;flex-shrink:0;animation:pixelBlink 1.2s step-end infinite}.section-title::after{content:'';position:absolute;bottom:-10px;left:0;width:100%;height:2px;background:#00e676;box-shadow:0 0 6px #00e676;opacity:0.35}.section-title.animate-in{opacity:0;transform:translateY(20px);transition:opacity 0.65s cubic-bezier(0.22, 1, 0.36, 1),transform 0.65s cubic-bezier(0.22, 1, 0.36, 1)}.section-title.animate-in.visible{opacity:1;transform:translateY(0)}.tag{display:inline-block;padding:3px 8px;background:rgba(91,156,246,0.08);border:2px solid rgba(91,156,246,0.3);border-radius:0;font-family:"JetBrains Mono","Courier New",monospace;font-size:10px;color:var(--text-muted);transition:all 0.15s steps(2);image-rendering:pixelated}.tag:hover{border-color:var(--accent);color:var(--accent);background:rgba(91,156,246,0.14);box-shadow:2px 2px 0 var(--accent)}.tag.tag-more{background:none;border-color:transparent;color:var(--text-muted);padding-left:0;font-size:10px;box-shadow:none}.tag.tag-more:hover{color:var(--text-primary);border-color:transparent}.badge{display:inline-block;padding:3px 8px;border-radius:0;font-family:"Press Start 2P","Galmuri11",monospace;font-size:8px;font-weight:400;text-transform:uppercase;letter-spacing:0.04em;image-rendering:pixelated}.badge.badge-mobile{background:rgba(91,156,246,0.12);color:var(--accent);border:2px solid rgba(91,156,246,0.4)}.badge.badge-game{background:rgba(167,139,250,0.12);color:#a78bfa;border:2px solid rgba(167,139,250,0.4)}.badge.badge-web{background:rgba(52,211,153,0.12);color:#34d399;border:2px solid rgba(52,211,153,0.4)}.badge.badge-platform{background:rgba(251,191,36,0.12);color:#fbbf24;border:2px solid rgba(251,191,36,0.4)}@keyframes pixelBlink{0%, 100%{opacity:1}50%{opacity:0}}@keyframes shimmer{0%{background-position:-200% center}100%{background-position:200% center}}@keyframes glowPulse{0%, 100%{box-shadow:0 0 12px rgba(91,156,246,0.2)}50%{box-shadow:0 0 28px rgba(91,156,246,0.35),0 0 48px rgba(167,139,250,0.15)}}@keyframes floatUp{0%, 100%{transform:translateY(0)}50%{transform:translateY(-6px)}}.animate-fade-up{opacity:0}.animate-fade-up.visible{opacity:1;animation:fadeUpReveal 0.65s cubic-bezier(0.22, 1, 0.36, 1) backwards}@keyframes fadeUpReveal{from{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}.hero::before,#cursor-glow,.reading-progress{animation:none !important}#cursor-glow{display:none !important}.animate-fade-up,.section-title.animate-in,.skill-tag,.timeline-item,.certification-item,.recent-card-wrap,.blog-post-grid .post-card{transform:none !important;transition:opacity 0.5s ease !important}.animate-fade-up.visible,.blog-post-grid .post-card.visible{animation:fadeInOnly 0.5s ease both !important}}@keyframes fadeInOnly{from{opacity:0}to{opacity:1}}#cursor-glow{position:fixed;top:0;left:0;width:400px;height:400px;border-radius:50%;background:radial-gradient(circle, rgba(91,156,246,0.07) 0%, rgba(167,139,250,0.04) 40%, transparent 70%);pointer-events:none;z-index:1;will-change:transform;mix-blend-mode:screen}@media (max-width: 768px){#cursor-glow{display:none}}@media (max-width: 768px){section{padding:80px 0}.section-title{font-size:20px;margin-bottom:40px}}.site-header{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(9,11,16,0.8);backdrop-filter:blur(16px) saturate(180%);-webkit-backdrop-filter:blur(16px) saturate(180%);border-bottom:1px solid transparent;transition:border-color 0.3s ease, background 0.3s ease}.site-header.scrolled{border-bottom-color:var(--border);background:rgba(9,11,16,0.92)}.site-header .header-inner{display:flex;align-items:center;justify-content:space-between;height:64px;max-width:1100px;margin:0 auto;padding:0 24px}.site-header .logo{font-family:"Press Start 2P","Galmuri11",monospace;font-size:12px;font-weight:400;color:var(--text-primary);text-decoration:none;letter-spacing:0.04em;image-rendering:pixelated}.site-header .logo span{color:#00e676;text-shadow:0 0 8px #00e676;animation:pixelBlink 2s step-end infinite}.site-header .logo:hover{color:var(--accent)}.site-header nav{display:flex;align-items:center;gap:28px}.site-header nav a{font-family:"Press Start 2P","Galmuri11",monospace;font-size:9px;color:var(--text-muted);text-decoration:none;transition:color 0.05s steps(1);position:relative;padding-bottom:4px;letter-spacing:0.04em;text-transform:uppercase;image-rendering:pixelated}.site-header nav a::after{content:'';position:absolute;bottom:-2px;left:0;width:0;height:2px;background:#00e676;box-shadow:0 0 4px #00e676;transition:width 0.1s steps(6)}.site-header nav a:hover,.site-header nav a.active{color:var(--text-primary)}.site-header nav a:hover::after,.site-header nav a.active::after{width:100%}.site-header nav a.active{color:#00e676;text-shadow:0 0 6px #00e676}.site-header .hamburger{display:none;flex-direction:column;gap:5px;cursor:pointer;padding:4px;background:none;border:none}.site-header .hamburger span{display:block;width:22px;height:2px;background:var(--text-primary);border-radius:2px;transition:all 0.3s ease}.site-header .hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg)}.site-header .hamburger.open span:nth-child(2){opacity:0}.site-header .hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg)}.site-header .mobile-nav{display:none;flex-direction:column;gap:0;border-top:1px solid var(--border);padding:16px 24px;background:var(--bg-primary)}.site-header .mobile-nav.open{display:flex}.site-header .mobile-nav a{font-family:"JetBrains Mono","Courier New",monospace;font-size:16px;color:var(--text-muted);text-decoration:none;padding:12px 0;border-bottom:1px solid var(--border);transition:color 0.2s ease}.site-header .mobile-nav a:last-child{border-bottom:none}.site-header .mobile-nav a:hover,.site-header .mobile-nav a.active{color:var(--accent)}@media (max-width: 768px){.site-header nav{display:none}.site-header .hamburger{display:flex}}.header-spacer{height:64px}.hero{min-height:100vh;display:flex;align-items:center;position:relative;overflow:hidden;padding:0}.hero::before{content:'';position:absolute;inset:0;background-image:radial-gradient(circle, rgba(91,156,246,0.14) 1px, transparent 1px);background-size:28px 28px;pointer-events:none;animation:gridDrift 24s ease-in-out infinite alternate}.hero::after{content:'';position:absolute;inset:0;background:radial-gradient(ellipse 60% 55% at 70% 38%, rgba(91,156,246,0.09) 0%, transparent 60%),radial-gradient(ellipse 45% 60% at 18% 68%, rgba(167,139,250,0.07) 0%, transparent 55%);pointer-events:none}.hero .hero-content{position:relative;z-index:3;max-width:700px;transform-origin:top right;transition:transform 0.5s cubic-bezier(0.4, 0, 0.2, 1),opacity 0.5s cubic-bezier(0.4, 0, 0.2, 1)}.hero .hero-content.anim-done .hero-greeting,.hero .hero-content.anim-done .hero-title,.hero .hero-content.anim-done .hero-subtitle,.hero .hero-content.anim-done .hero-description,.hero .hero-content.anim-done .hero-actions{animation:none;opacity:1;transform:translateY(0)}.hero .hero-content.minimized{transform:scale(0.45) translate(140%, -90%);opacity:1;pointer-events:none;width:fit-content !important;max-width:none !important;margin-left:auto !important;text-align:right !important}.hero .hero-content.minimized .hero-greeting,.hero .hero-content.minimized .hero-description,.hero .hero-content.minimized .hero-actions{opacity:0 !important;transform:translateY(-6px) !important;height:0 !important;margin:0 !important;overflow:hidden !important}.hero .hero-content.minimized .hero-subtitle{font-size:24px !important;display:flex !important;flex-direction:column !important;align-items:flex-end !important;gap:6px !important;margin-bottom:0 !important}.hero .hero-content.minimized .hero-subtitle .hero-skill-sep,.hero .hero-content.minimized .hero-subtitle .hero-skill-role{display:none !important}.hero .hero-content.minimized .hero-subtitle .hero-skill::before{content:'▸ ';color:var(--accent)}.hero .hero-content .hero-greeting,.hero .hero-content .hero-subtitle,.hero .hero-content .hero-description,.hero .hero-content .hero-actions{transition:opacity 0.25s ease, transform 0.25s ease}.hero .hero-scanlines{position:absolute;inset:0;z-index:4;pointer-events:none;background:repeating-linear-gradient(0deg, transparent 0px, transparent 3px, rgba(0,0,0,0.07) 3px, rgba(0,0,0,0.07) 4px)}.hero .hero-greeting{font-family:"Press Start 2P","Galmuri11",monospace;font-size:11px;color:#00e676;margin-bottom:20px;opacity:0;transform:translateY(16px);animation:fadeUp 0.4s ease forwards;animation-delay:0.05s;letter-spacing:0.08em;text-shadow:0 0 10px #00e676}.hero .hero-greeting .hero-cursor{animation:pixelBlink 0.8s step-end infinite}.hero .hero-title{font-family:"Press Start 2P","Galmuri11",monospace;font-size:clamp(22px, 4vw, 40px);font-weight:400;color:var(--text-primary);line-height:1.3;margin-bottom:24px;opacity:0;transform:translateY(16px);animation:fadeUp 0.4s ease forwards;animation-delay:0.12s;letter-spacing:0.04em;image-rendering:pixelated}.hero .hero-title .underline-accent{position:relative;display:inline-block;color:var(--accent);text-shadow:0 0 20px rgba(91,156,246,0.8),2px 2px 0 rgba(0,0,0,0.6)}.hero .hero-title .underline-accent::after{content:'';position:absolute;bottom:-6px;left:0;width:0;height:3px;background:#00e676;box-shadow:0 0 8px #00e676;animation:expandWidth 0.8s steps(20) forwards;animation-delay:0.7s}.hero .hero-subtitle{font-family:"Press Start 2P","Galmuri11",monospace;font-size:10px;color:var(--text-muted);margin-bottom:28px;opacity:0;transform:translateY(16px);animation:fadeUp 0.4s ease forwards;animation-delay:0.19s;letter-spacing:0.06em;line-height:2}.hero .hero-subtitle .hero-skill{color:#ffeb3b;text-shadow:0 0 8px rgba(255,235,59,0.4)}.hero .hero-subtitle .hero-skill-sep{color:var(--text-faint);margin:0 6px}.hero .hero-subtitle .hero-skill-role{color:var(--accent)}.hero .hero-description{font-size:16px;color:var(--text-muted);line-height:2;margin-bottom:44px;max-width:580px;opacity:0;transform:translateY(16px);animation:fadeUp 0.4s ease forwards;animation-delay:0.26s;font-family:"JetBrains Mono","Courier New",monospace;font-size:14px}.hero .hero-description .desc-line{display:inline}.hero .hero-description .desc-comment{color:rgba(91,156,246,0.5);user-select:none}.hero .hero-description .desc-now{color:#4ade80;font-weight:600}.hero .hero-actions{display:flex;gap:14px;flex-wrap:wrap;opacity:0;transform:translateY(16px);animation:fadeUp 0.4s ease forwards;animation-delay:0.33s}.hero .btn{display:inline-flex;align-items:center;gap:8px;padding:14px 20px;border-radius:0;font-family:"Press Start 2P","Galmuri11",monospace;font-size:9px;font-weight:400;cursor:pointer;transition:all 0.05s steps(1);text-decoration:none;position:relative;letter-spacing:0.06em;image-rendering:pixelated;text-transform:uppercase}.hero .btn.btn-primary{background:var(--accent);color:#090b10;border:2px solid var(--accent);box-shadow:4px 4px 0 #0a0b10}.hero .btn.btn-primary:hover{background:#00e676;border-color:#00e676;color:#090b10;box-shadow:4px 4px 0 #00e676,0 0 16px #00e676}.hero .btn.btn-primary:active{transform:translate(3px, 3px);box-shadow:1px 1px 0 #0a0b10}.hero .btn.btn-secondary{background:transparent;color:var(--text-primary);border:2px solid var(--border-hover);box-shadow:4px 4px 0 rgba(0,0,0,0.5)}.hero .btn.btn-secondary:hover{border-color:var(--accent);color:var(--accent);box-shadow:4px 4px 0 var(--accent)}.hero .btn.btn-secondary:active{transform:translate(3px, 3px);box-shadow:1px 1px 0 rgba(0,0,0,0.5)}@media (max-width: 768px){.hero .hero-title{font-size:32px}.hero .hero-subtitle{font-size:16px}}@media (max-width: 480px){.hero .hero-title{font-size:24px}.hero .hero-greeting{font-size:14px}.hero .hero-actions{flex-direction:column}.hero .hero-actions .btn{justify-content:center}}#hero-video-bg{position:absolute;inset:0;z-index:1;overflow:hidden}#hero-video-bg iframe{position:absolute !important;top:50% !important;left:50% !important;width:100vw !important;height:56.25vw !important;min-height:100vh !important;min-width:177.78vh !important;transform:translate(-50%, -50%) !important;pointer-events:none !important;border:0 !important;opacity:0;transition:opacity 2.5s ease}#hero-video-bg.playing iframe{opacity:0.45 !important}#hero-video-bg .hero-video-overlay{position:absolute;inset:0;z-index:1;background:linear-gradient(to bottom, rgba(9,11,16,0.62) 0%, rgba(9,11,16,0.28) 45%, rgba(9,11,16,0.78) 100%)}@keyframes fadeUp{to{opacity:1;transform:translateY(0)}}@keyframes expandWidth{from{width:0}to{width:100%}}@keyframes gridDrift{0%{background-position:0 0}100%{background-position:28px 28px}}.flappy-canvas{position:absolute;top:0;left:0;width:100%;height:100%;z-index:2;pointer-events:none}.projects-section{background:var(--bg-primary)}.projects-section .projects-list{display:flex;flex-direction:column;gap:24px}.project-row{background:var(--bg-card);border:2px solid rgba(91,156,246,0.55);border-radius:0;padding:28px;display:flex;align-items:flex-start;gap:36px;transition:border-color 0.05s steps(1),box-shadow 0.05s steps(1),transform 0.05s steps(1);position:relative;overflow:hidden;box-shadow:4px 4px 0 rgba(0,0,0,0.6)}.project-row::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:var(--accent);box-shadow:0 0 8px var(--accent);opacity:0.5}.project-row::after{display:none}.project-row:hover{border-color:var(--accent);transform:translate(-2px, -2px);box-shadow:6px 6px 0 rgba(91,156,246,0.3),6px 6px 0 rgba(0,0,0,0.4)}.project-row:hover::before{opacity:1}@media (max-width: 480px){.project-row{flex-direction:column;align-items:stretch;padding:20px;gap:24px}}.project-stack{flex:0 0 auto;display:flex;flex-direction:column;align-items:center;gap:14px;padding:10px 10px 0 0}.project-stack .stack-cards{position:relative;width:216px;aspect-ratio:9 / 16}.project-stack.stack-landscape .stack-cards{width:300px;aspect-ratio:16 / 10}.project-stack .stack-card{position:absolute;inset:0;border-radius:0;overflow:hidden;background:var(--bg-primary);border:2px solid rgba(91,156,246,0.55);display:flex;align-items:center;justify-content:center;transform:translate(calc(min(var(--i), 3) * 6px), calc(min(var(--i), 3) * -6px));opacity:calc(1 - min(var(--i), 3) * 0.18);transition:transform 0.35s ease, opacity 0.35s ease;box-shadow:4px 4px 0 rgba(0,0,0,0.5)}.project-stack .stack-card img,.project-stack .stack-card video{max-width:100%;max-height:100%;object-fit:contain}.project-stack .stack-card video{width:100%;height:100%;background:#000}.project-stack .stack-card.is-top{cursor:pointer}.project-stack .stack-card.has-video.is-top{cursor:default}.project-stack .stack-card.stack-leave{transform:translate(-70%, 4%) rotate(-8deg);opacity:0}.project-stack .stack-nav{display:flex;align-items:center;gap:12px}.project-stack .stack-counter{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--text-muted);min-width:44px;text-align:center}.project-stack .stack-btn{width:30px;height:30px;display:flex;align-items:center;justify-content:center;border:2px solid rgba(91,156,246,0.55);border-radius:0;background:transparent;color:var(--text-muted);cursor:pointer;transition:color 0.05s steps(1),border-color 0.05s steps(1),box-shadow 0.05s steps(1)}.project-stack .stack-btn svg{width:15px;height:15px}.project-stack .stack-btn:hover{color:var(--accent);border-color:var(--accent);box-shadow:2px 2px 0 rgba(91,156,246,0.3)}.project-stack .stack-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}@media (max-width: 480px){.project-stack{width:100%;padding:10px 10px 0 0}.project-stack .stack-cards{width:min(216px, 62vw)}.project-stack.stack-landscape .stack-cards{width:min(320px, 88%)}}.project-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:12px}.project-info .card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.project-info .card-title{font-family:"JetBrains Mono","Courier New",monospace;font-size:16px;font-weight:700;color:var(--text-primary);line-height:1.3;letter-spacing:-0.01em}.project-info .card-period{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--text-faint);margin-top:2px;letter-spacing:0.02em}.project-info .card-role{font-family:"JetBrains Mono","Courier New",monospace;font-size:14px;color:var(--accent);font-weight:500}.project-info .card-description{font-size:14px;color:var(--text-muted);line-height:1.75}.project-info .card-highlights{list-style:none;display:flex;flex-direction:column;gap:6px;margin:0;padding:0}.project-info .card-highlights li{font-size:14px;color:var(--text-muted);line-height:1.6;padding-left:18px;position:relative}.project-info .card-highlights li::before{content:'▹';position:absolute;left:0;color:var(--accent)}.project-info .card-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}.project-info .card-links{display:flex;gap:14px;margin-top:6px;padding-top:14px;border-top:1px solid var(--border)}.project-info .card-links a{display:inline-flex;align-items:center;gap:5px;font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--text-muted);text-decoration:none;transition:all 0.2s ease}.project-info .card-links a svg{width:13px;height:13px;flex-shrink:0}.project-info .card-links a:hover{color:var(--accent);transform:translateY(-1px)}.skills-section{background:var(--bg-secondary)}.skills-section .skills-grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:32px}@media (max-width: 768px){.skills-section .skills-grid{grid-template-columns:1fr;gap:24px}}.skill-group .skill-category{font-family:"JetBrains Mono","Courier New",monospace;font-size:14px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.1em;margin-bottom:16px;display:flex;align-items:center;gap:8px}.skill-group .skill-category::before{content:'';display:inline-block;width:16px;height:1px;background:var(--accent)}.skill-group .skill-tags{display:flex;flex-wrap:wrap;gap:10px}.skill-group .skill-tag{display:inline-block;padding:6px 16px;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:999px;font-family:"JetBrains Mono","Courier New",monospace;font-size:14px;color:var(--text-primary);opacity:0;transform:translateY(10px);transition:opacity 0.35s cubic-bezier(0.22, 1, 0.36, 1),transform 0.35s cubic-bezier(0.22, 1, 0.36, 1),border-color 0.2s ease,color 0.2s ease,background 0.2s ease}.skill-group .skill-tag.visible{opacity:1;transform:translateY(0)}.skill-group .skill-tag:hover{border-color:var(--accent);color:var(--accent);background:rgba(88,166,255,0.08)}.timeline-section{background:var(--bg-primary)}.timeline{position:relative;max-width:800px;margin:0 auto}.timeline::before{content:'';position:absolute;left:50%;top:0;bottom:0;width:2px;background:var(--border);transform:translateX(-50%)}@media (max-width: 768px){.timeline::before{left:16px;transform:none}}@keyframes nodePulse{0%, 100%{box-shadow:0 0 0 3px rgba(88,166,255,0.2)}50%{box-shadow:0 0 0 7px rgba(88,166,255,0.04)}}.timeline-item{display:flex;justify-content:flex-end;padding-right:calc(50% + 32px);margin-bottom:48px;position:relative;opacity:0;transform:translateX(-30px);transition:opacity 0.65s cubic-bezier(0.22, 1, 0.36, 1),transform 0.65s cubic-bezier(0.22, 1, 0.36, 1)}.timeline-item.visible{opacity:1;transform:translateX(0)}.timeline-item:nth-child(even){justify-content:flex-start;padding-right:0;padding-left:calc(50% + 32px);transform:translateX(30px)}.timeline-item:nth-child(even).visible{transform:translateX(0)}.timeline-item:nth-child(even) .timeline-node{right:auto;left:calc(50% - 8px)}.timeline-item .timeline-node{position:absolute;left:calc(50% - 8px);top:16px;width:16px;height:16px;border-radius:50%;border:2px solid var(--bg-primary);z-index:1}.timeline-item .timeline-node.node-work{background:var(--accent);box-shadow:0 0 0 3px rgba(88,166,255,0.2);animation:nodePulse 2.8s ease-in-out infinite}.timeline-item .timeline-node.node-education{background:var(--text-muted);box-shadow:0 0 0 3px rgba(139,148,158,0.2)}.timeline-item .timeline-card{background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;padding:20px 24px;max-width:360px;width:100%;transition:border-color 0.2s ease}.timeline-item .timeline-card:hover{border-color:var(--bg-tertiary)}.timeline-item .timeline-type{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:0.08em;margin-bottom:8px}.timeline-item .timeline-type.type-work{color:var(--accent)}.timeline-item .timeline-type.type-education{color:var(--text-muted)}.timeline-item .timeline-title{font-size:16px;font-weight:600;color:var(--text-primary);margin-bottom:6px;line-height:1.4}.timeline-item .timeline-period{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--text-muted);margin-bottom:10px}.timeline-item .timeline-desc{font-size:14px;color:var(--text-muted);line-height:1.7}@media (max-width: 768px){.timeline-item{padding-right:0;padding-left:48px;justify-content:flex-start;transform:translateX(-20px)}.timeline-item:nth-child(even){padding-left:48px;padding-right:0;justify-content:flex-start;transform:translateX(-20px)}.timeline-item .timeline-node{left:8px !important;right:auto !important}.timeline-item .timeline-card{max-width:100%}}.certifications-section{background:var(--bg-secondary)}.certifications-list{max-width:800px;margin:0 auto;display:flex;flex-direction:column;gap:16px}.certification-item{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:12px;padding:16px 20px;background:var(--bg-primary);border:1px solid var(--border);border-radius:4px;opacity:0;transform:translateY(12px);transition:opacity 0.55s cubic-bezier(0.22, 1, 0.36, 1),transform 0.55s cubic-bezier(0.22, 1, 0.36, 1),border-color 0.2s ease}.certification-item.visible{opacity:1;transform:translateY(0)}.certification-item:hover{border-color:rgba(88,166,255,0.2)}.certification-name{font-size:16px;font-weight:600;color:var(--text-primary);margin:0;line-height:1.4}.certification-date{font-family:"JetBrains Mono","Courier New",monospace;font-size:14px;color:var(--text-muted);margin:0}@media (max-width: 768px){.certification-item{flex-direction:column;align-items:flex-start}}.site-footer{background:var(--bg-secondary);position:relative;padding:40px 0}.site-footer::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:linear-gradient(90deg, transparent 0%, rgba(91,156,246,0.5) 25%, rgba(167,139,250,0.4) 55%, rgba(30,37,53,0.4) 80%, transparent 100%)}.site-footer .footer-inner{max-width:1100px;margin:0 auto;padding:0 24px;display:flex;flex-direction:column;align-items:center;gap:16px;text-align:center}.site-footer .footer-links{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:center}.site-footer .footer-links a{font-family:"JetBrains Mono","Courier New",monospace;font-size:14px;color:var(--text-muted);text-decoration:none;transition:color 0.2s ease}.site-footer .footer-links a:hover{color:var(--accent)}.site-footer .footer-links .divider{color:var(--border);user-select:none}.site-footer .footer-copy{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--text-muted)}.cat-badge{display:inline-block;padding:3px 10px;border-radius:999px;font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;font-weight:600;letter-spacing:0.04em}.cat-badge.cat-dev{color:#58a6ff;background:rgba(88,166,255,0.12);border:1px solid rgba(88,166,255,0.25)}.cat-badge.cat-project{color:#3fb950;background:rgba(63,185,80,0.12);border:1px solid rgba(63,185,80,0.25)}.cat-badge.cat-algorithm{color:#d2a8ff;background:rgba(210,168,255,0.12);border:1px solid rgba(210,168,255,0.25)}.cat-badge.cat-daily{color:#ffa657;background:rgba(255,166,87,0.12);border:1px solid rgba(255,166,87,0.25)}.cat-badge.cat-essay{color:#f78166;background:rgba(247,129,102,0.12);border:1px solid rgba(247,129,102,0.25)}.blog-page-inner{padding-top:64px}.blog-page-inner .container{padding-top:48px;padding-bottom:100px;max-width:1100px}.blog-header{margin-bottom:48px}.blog-header .blog-page-title{font-family:"JetBrains Mono","Courier New",monospace;font-size:32px;font-weight:700;color:var(--text-primary);margin-bottom:8px}.blog-header .blog-page-title .title-comment{color:var(--accent)}.blog-header .blog-page-desc{font-size:16px;color:var(--text-muted);margin-bottom:12px}.blog-header .blog-header-stats{display:flex;align-items:center;gap:8px;font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--text-muted)}.blog-header .blog-header-stats .stat-num{color:var(--accent);font-weight:600}.blog-header .blog-header-stats .blog-stat-sep{color:var(--border)}.blog-layout-wrapper{display:grid;grid-template-columns:220px 1fr;gap:48px;align-items:start}@media (max-width: 768px){.blog-layout-wrapper{grid-template-columns:1fr;gap:32px}}.blog-sidebar{position:sticky;top:80px}@media (max-width: 768px){.blog-sidebar{position:static;display:grid;grid-template-columns:1fr 1fr;gap:24px}}@media (max-width: 480px){.blog-sidebar{grid-template-columns:1fr}}.sidebar-section{margin-bottom:32px}@media (max-width: 768px){.sidebar-section{margin-bottom:0}}.sidebar-section-title{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.1em;margin-bottom:12px}.blog-search{position:relative}.blog-search .search-icon{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:var(--text-muted);pointer-events:none}.blog-search .blog-search-input{width:100%;background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;padding:10px 12px 10px 34px;font-family:"Noto Sans KR",sans-serif;font-size:14px;color:var(--text-primary);outline:none;transition:border-color 0.2s ease}.blog-search .blog-search-input::placeholder{color:var(--text-muted)}.blog-search .blog-search-input:focus{border-color:var(--accent)}.cat-filter-list{display:flex;flex-direction:column;gap:4px}@media (max-width: 768px){.cat-filter-list{flex-direction:row;flex-wrap:wrap;gap:6px}}.cat-filter-item{display:flex;align-items:center;gap:8px;width:100%;padding:8px 12px;background:none;border:1px solid transparent;border-radius:4px;font-family:"JetBrains Mono","Courier New",monospace;font-size:14px;color:var(--text-muted);cursor:pointer;transition:all 0.2s ease;text-align:left}@media (max-width: 768px){.cat-filter-item{width:auto;padding:6px 12px}}.cat-filter-item .cat-name{flex:1}.cat-filter-item .cat-count{font-size:12px;color:var(--text-muted);background:var(--bg-tertiary);padding:1px 6px;border-radius:999px}.cat-filter-item .cat-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.cat-filter-item .cat-dot.cat-dev-dot{background:#58a6ff}.cat-filter-item .cat-dot.cat-project-dot{background:#3fb950}.cat-filter-item .cat-dot.cat-algorithm-dot{background:#d2a8ff}.cat-filter-item .cat-dot.cat-daily-dot{background:#ffa657}.cat-filter-item .cat-dot.cat-essay-dot{background:#f78166}.cat-filter-item:hover{background:var(--bg-secondary);border-color:var(--border);color:var(--text-primary)}.cat-filter-item.active{background:var(--bg-secondary);border-color:var(--accent);color:var(--text-primary)}.cat-filter-item.active .cat-count{background:var(--accent);color:#0d1117}.tag-cloud{display:flex;flex-wrap:wrap;gap:8px}.cloud-tag{padding:4px 10px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:999px;font-family:"JetBrains Mono","Courier New",monospace;font-size:11px;color:var(--text-muted);cursor:pointer;transition:all 0.2s ease;line-height:1.5}.cloud-tag:hover{border-color:var(--accent);color:var(--accent)}.cloud-tag.active{background:rgba(88,166,255,0.12);border-color:var(--accent);color:var(--accent)}.blog-results-info{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;min-height:28px}.blog-results-info .results-count{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--text-muted)}.blog-results-info .clear-filter{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--accent);background:none;border:none;cursor:pointer;padding:4px 8px;border-radius:4px;transition:background 0.2s}.blog-results-info .clear-filter:hover{background:rgba(88,166,255,0.1)}.blog-post-grid{display:grid;grid-template-columns:repeat(2, 1fr);gap:20px}@media (max-width: 900px){.blog-post-grid{grid-template-columns:1fr}}.blog-post-grid .post-card{opacity:0}.blog-post-grid .post-card.visible{opacity:1;animation:blogPostCardEnter 0.55s cubic-bezier(0.22, 1, 0.36, 1) var(--enter-delay, 0ms) backwards}@keyframes blogPostCardEnter{from{opacity:0;transform:translateY(20px)}}.post-card{background:var(--bg-card);border:2px solid rgba(91,156,246,0.55);border-radius:0;overflow:hidden;transition:border-color 0.05s steps(1),box-shadow 0.05s steps(1);position:relative;box-shadow:4px 4px 0 rgba(0,0,0,0.6)}.post-card.cat-border-dev{border-top:2px solid #58a6ff}.post-card.cat-border-project{border-top:2px solid #3fb950}.post-card.cat-border-algorithm{border-top:2px solid #d2a8ff}.post-card.cat-border-daily{border-top:2px solid #ffa657}.post-card.cat-border-essay{border-top:2px solid #f78166}.post-card::after{content:'';position:absolute;inset:0;opacity:0;transition:opacity 0.35s ease;pointer-events:none;border-radius:inherit}.post-card:hover{transform:translate(-3px, -3px);box-shadow:6px 6px 0 rgba(0,0,0,0.7)}.post-card.cat-border-dev:hover{border-color:#58a6ff;box-shadow:6px 6px 0 rgba(88,166,255,0.25)}.post-card.cat-border-project:hover{border-color:#3fb950;box-shadow:6px 6px 0 rgba(63,185,80,0.25)}.post-card.cat-border-algorithm:hover{border-color:#d2a8ff;box-shadow:6px 6px 0 rgba(210,168,255,0.25)}.post-card.cat-border-daily:hover{border-color:#ffa657;box-shadow:6px 6px 0 rgba(255,166,87,0.25)}.post-card.cat-border-essay:hover{border-color:#f78166;box-shadow:6px 6px 0 rgba(247,129,102,0.25)}.post-card .card-inner{display:flex;flex-direction:column;gap:10px;padding:22px;text-decoration:none;color:inherit;height:100%;position:relative;z-index:1}.post-card .card-top{display:flex;align-items:center;justify-content:space-between;gap:8px}.post-card .read-time{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--text-faint);white-space:nowrap}.post-card .card-title{font-size:16px;font-weight:700;color:var(--text-primary);line-height:1.45;transition:color 0.2s ease;letter-spacing:-0.01em}.post-card:hover .card-title{color:var(--accent)}.post-card .card-excerpt{font-size:14px;color:var(--text-muted);line-height:1.65;flex:1;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.post-card .card-meta{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:auto;padding-top:12px;border-top:1px solid var(--border)}.post-card .card-meta time{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--text-faint)}.post-card .card-meta .card-tags{display:flex;gap:5px;flex-wrap:wrap}.blog-no-results{padding:60px 0;text-align:center;color:var(--text-muted);font-family:"JetBrains Mono","Courier New",monospace;font-size:14px;grid-column:1 / -1}.blog-empty{padding:80px 0;text-align:center;color:var(--text-muted);font-family:"JetBrains Mono","Courier New",monospace}.recent-posts-section{background:var(--bg-secondary);border-top:1px solid var(--border);padding:128px 0}.recent-posts-section .container{max-width:1100px}.recent-posts-header{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:40px;gap:16px}.recent-posts-header .section-title{margin-bottom:0}.view-all-btn{font-family:"JetBrains Mono","Courier New",monospace;font-size:14px;color:var(--accent);text-decoration:none;white-space:nowrap;padding:8px 16px;border:1px solid var(--border);border-radius:4px;transition:all 0.2s ease}.view-all-btn:hover{border-color:var(--accent);background:rgba(88,166,255,0.08);color:var(--accent)}.recent-posts-grid{display:grid;grid-template-columns:repeat(3, 1fr);gap:20px}@media (max-width: 768px){.recent-posts-grid{grid-template-columns:repeat(2, 1fr)}}@media (max-width: 480px){.recent-posts-grid{grid-template-columns:1fr}}.recent-posts-grid .recent-card-wrap{opacity:0;transform:translateY(28px);transition:opacity 0.65s cubic-bezier(0.22, 1, 0.36, 1) var(--card-delay, 0ms),transform 0.65s cubic-bezier(0.22, 1, 0.36, 1) var(--card-delay, 0ms)}.recent-posts-grid .recent-card-wrap.visible{opacity:1;transform:translateY(0)}.post-page{padding-top:64px}.post-page .container{padding-top:48px;padding-bottom:80px;max-width:1100px}.post-header{max-width:720px;margin-bottom:32px}.post-header .post-breadcrumb{display:flex;align-items:center;gap:8px;font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--text-muted);margin-bottom:20px;flex-wrap:wrap}.post-header .post-breadcrumb a{color:var(--accent);text-decoration:none}.post-header .post-breadcrumb a:hover{color:var(--text-primary)}.post-header .post-cat-badge{margin-bottom:16px}.post-header .post-title{font-family:"Noto Sans KR",sans-serif;font-size:32px;font-weight:700;color:var(--text-primary);line-height:1.3;margin-bottom:20px}@media (max-width: 768px){.post-header .post-title{font-size:24px}}.post-header .post-info{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-bottom:20px}.post-header .post-info time{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--text-muted)}.post-header .post-info .post-read-time{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--text-muted)}.post-header .post-info .post-read-time::before{content:'· '}.post-header .post-info .post-tags{display:flex;gap:6px;flex-wrap:wrap}.post-header .post-info .post-tags .tag{text-decoration:none;transition:all 0.2s ease}.post-header .post-info .post-tags .tag:hover{border-color:var(--accent);color:var(--accent)}.post-header .post-lead{font-size:16px;color:var(--text-muted);line-height:1.7;padding:16px 0 0;border-top:1px solid var(--border)}.mobile-toc{max-width:720px;margin-bottom:24px;display:none}@media (max-width: 1100px){.mobile-toc{display:block}}.mobile-toc .mobile-toc-toggle{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;font-family:"JetBrains Mono","Courier New",monospace;font-size:14px;color:var(--text-muted);cursor:pointer;width:100%;transition:all 0.2s ease}.mobile-toc .mobile-toc-toggle .toggle-icon{margin-left:auto;font-size:12px;transition:transform 0.2s ease}.mobile-toc .mobile-toc-toggle[aria-expanded="true"] .toggle-icon{transform:rotate(180deg)}.mobile-toc .mobile-toc-toggle:hover{border-color:var(--accent);color:var(--text-primary)}.mobile-toc .mobile-toc-content{display:none;background:var(--bg-secondary);border:1px solid var(--border);border-top:none;border-radius:0 0 4px 4px;padding:12px 16px}.mobile-toc .mobile-toc-content.open{display:block}.mobile-toc .mobile-toc-content a{display:block;font-size:14px;color:var(--text-muted);text-decoration:none;padding:5px 0;padding-left:var(--indent, 0px);transition:color 0.15s ease}.mobile-toc .mobile-toc-content a.toc-h3{--indent: 16px}.mobile-toc .mobile-toc-content a.toc-h4{--indent: 32px}.mobile-toc .mobile-toc-content a:hover{color:var(--text-primary)}.mobile-toc .mobile-toc-content a.active{color:var(--accent)}.post-layout{display:grid;grid-template-columns:1fr 220px;gap:48px;align-items:start}@media (max-width: 1100px){.post-layout{grid-template-columns:1fr}}.post-toc{position:sticky;top:88px}@media (max-width: 1100px){.post-toc{display:none}}.post-toc .toc-inner{background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;padding:20px}.post-toc .toc-title{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.1em;margin-bottom:12px}.post-toc .toc-list a{display:block;font-size:12px;color:var(--text-muted);text-decoration:none;padding:4px 0;padding-left:calc(var(--indent, 0px) + 8px);line-height:1.5;border-left:2px solid transparent;transition:all 0.15s ease}.post-toc .toc-list a:hover{color:var(--text-primary)}.post-toc .toc-list a.active{color:var(--accent);border-left-color:var(--accent);background:rgba(88,166,255,0.07);border-radius:0 4px 4px 0}.post-toc .toc-list a.toc-h3{--indent: 12px}.post-toc .toc-list a.toc-h4{--indent: 24px}.prose{font-size:16px;color:var(--text-primary);line-height:1.8;max-width:720px}.prose h1,.prose h2,.prose h3,.prose h4,.prose h5,.prose h6{font-family:"Noto Sans KR",sans-serif;color:var(--text-primary);font-weight:600;line-height:1.4;margin-top:2em;margin-bottom:0.75em;scroll-margin-top:88px;position:relative}.prose .heading-anchor{opacity:0;margin-left:8px;font-size:0.75em;color:var(--accent);text-decoration:none;font-weight:400;transition:opacity 0.15s ease;user-select:none}.prose .heading-anchor:hover{opacity:1;text-decoration:none}.prose h2:hover .heading-anchor,.prose h3:hover .heading-anchor{opacity:0.6}.prose h1{font-size:32px}.prose h2{font-size:24px;padding-bottom:8px;border-bottom:1px solid var(--border)}.prose h3{font-size:20px}.prose h4{font-size:16px;color:var(--text-muted)}.prose p{margin-bottom:1.25em}.prose a{color:var(--accent);text-decoration:underline;text-decoration-color:rgba(88,166,255,0.3);text-underline-offset:3px;transition:text-decoration-color 0.2s ease}.prose a:hover{text-decoration-color:var(--accent)}.prose strong{color:var(--text-primary);font-weight:600}.prose em{color:var(--text-muted)}.prose ul,.prose ol{padding-left:1.5em;margin-bottom:1.25em}.prose ul li,.prose ol li{margin-bottom:0.4em;list-style:revert;color:var(--text-primary)}.prose ul li{list-style-type:disc}.prose ol li{list-style-type:decimal}.prose blockquote{border-left:3px solid var(--accent);margin:1.5em 0;padding:14px 20px;background:linear-gradient(to right, rgba(88,166,255,0.06), rgba(88,166,255,0.02), transparent);border-radius:0 4px 4px 0;color:var(--text-muted);font-style:italic;box-shadow:inset 0 0 0 1px rgba(88,166,255,0.06)}.prose blockquote p{margin-bottom:0}.prose code{font-family:"JetBrains Mono","Courier New",monospace;font-size:0.875em;background:var(--bg-tertiary);border:1px solid var(--border);border-radius:4px;padding:2px 6px;color:#e3b341}.prose .highlight,.prose figure.highlight{background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;margin:1.5em 0;overflow:hidden}.prose .highlight pre,.prose figure.highlight pre{margin:0;padding:20px 24px;overflow-x:auto;font-family:"JetBrains Mono","Courier New",monospace;font-size:14px;line-height:1.7;background:transparent}.prose .highlight pre code,.prose figure.highlight pre code{background:none;border:none;padding:0;color:var(--text-primary);font-size:inherit}.prose .highlight .c,.prose .highlight .c1,.prose .highlight .cm{color:#8b949e;font-style:italic}.prose .highlight .k,.prose .highlight .kd,.prose .highlight .kn{color:#ff7b72}.prose .highlight .s,.prose .highlight .s1,.prose .highlight .s2{color:#a5d6ff}.prose .highlight .n,.prose .highlight .na{color:#e6edf3}.prose .highlight .nf{color:#d2a8ff}.prose .highlight .nc{color:#ffa657}.prose .highlight .nb{color:#79c0ff}.prose .highlight .m,.prose .highlight .mi,.prose .highlight .mf{color:#79c0ff}.prose .highlight .o{color:#ff7b72}.prose .highlight .p{color:#e6edf3}.prose .highlight .nt{color:#7ee787}.prose .highlight .ni{color:#ffa657}.prose .highlight .err{color:#f85149}.prose .highlight .gd{color:#ffa198;background:rgba(248,81,73,0.1)}.prose .highlight .gi{color:#7ee787;background:rgba(46,160,67,0.1)}.prose img{border-radius:4px;border:1px solid var(--border);margin:1.5em 0}.prose hr{border:none;border-top:1px solid var(--border);margin:2em 0}.prose table{width:100%;border-collapse:collapse;margin:1.5em 0;font-size:14px;overflow:hidden;border-radius:4px;border:1px solid var(--border)}.prose table th{background:var(--bg-tertiary);font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;font-weight:600;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.05em;padding:10px 16px;text-align:left}.prose table td{padding:10px 16px;border-top:1px solid var(--border);color:var(--text-primary)}.prose table tr:hover td{background:var(--bg-secondary)}.video-embed{position:relative;width:100%;padding-top:56.25%;margin:2em 0;border-radius:4px;overflow:hidden;border:1px solid var(--border);background:#000}.video-embed iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0}.post-nav{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:64px;padding-top:40px;border-top:1px solid var(--border);max-width:720px}@media (max-width: 480px){.post-nav{grid-template-columns:1fr}}.post-nav-item{display:flex;flex-direction:column;gap:6px;padding:20px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:4px;text-decoration:none;transition:all 0.2s ease}.post-nav-item.next{text-align:right}.post-nav-item .nav-label{font-family:"JetBrains Mono","Courier New",monospace;font-size:12px;color:var(--text-muted)}.post-nav-item .nav-title{font-size:14px;font-weight:500;color:var(--text-primary);line-height:1.4}.post-nav-item:hover{border-color:var(--accent);color:var(--text-primary)}.post-nav-item:hover .nav-label{color:var(--accent)}.related-posts{margin-top:64px;max-width:720px}.related-posts .related-title{font-family:"JetBrains Mono","Courier New",monospace;font-size:16px;font-weight:600;color:var(--text-muted);margin-bottom:20px}.related-posts .related-title::before{content:'// ';color:var(--accent)}.related-posts .related-grid{display:grid;grid-template-columns:repeat(3, 1fr);gap:16px}@media (max-width: 768px){.related-posts .related-grid{grid-template-columns:1fr}}.comments-section{margin-top:64px;max-width:720px;padding-top:40px;border-top:1px solid var(--border)}.comments-section .comments-title{font-family:"JetBrains Mono","Courier New",monospace;font-size:16px;font-weight:600;color:var(--text-muted);margin-bottom:24px}.comments-section .comments-title::before{content:'// ';color:var(--accent)}.reading-progress{position:fixed;top:0;left:0;height:6px;width:0%;background:#00e676;z-index:9999;transition:width 0.08s steps(4);pointer-events:none;box-shadow:0 0 8px #00e676;image-rendering:pixelated}.reading-progress::before{content:'';position:fixed;top:0;left:0;right:0;height:6px;background:rgba(0,0,0,0.45);z-index:-1;border-bottom:1px solid rgba(0,230,118,0.15)}.code-header{display:flex;align-items:center;gap:10px;padding:8px 14px;background:var(--bg-tertiary);border-bottom:1px solid var(--border);min-height:36px}.code-header::before{content:'';display:block;flex-shrink:0;width:44px;height:12px;background:radial-gradient(circle, #ff5f57 5px, transparent 5.5px) 0 0/12px 12px no-repeat,radial-gradient(circle, #febc2e 5px, transparent 5.5px) 16px 0/12px 12px no-repeat,radial-gradient(circle, #28c840 5px, transparent 5.5px) 32px 0/12px 12px no-repeat;opacity:0.65}.code-header .lang-badge{flex:1;font-family:"JetBrains Mono","Courier New",monospace;font-size:11px;color:var(--text-muted);text-transform:uppercase;letter-spacing:0.08em;opacity:0.55;user-select:none}.code-header .copy-btn{padding:2px 10px;background:none;border:1px solid transparent;border-radius:4px;font-family:"JetBrains Mono","Courier New",monospace;font-size:11px;color:var(--text-muted);cursor:pointer;transition:all 0.2s ease;line-height:1.6;white-space:nowrap}.code-header .copy-btn:hover{border-color:var(--border);color:var(--text-primary)}.code-header .copy-btn.copied{color:#3fb950;border-color:rgba(63,185,80,0.4)}.back-to-top{position:fixed;bottom:32px;right:32px;width:40px;height:40px;background:var(--bg-secondary);border:1px solid var(--border);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--text-muted);cursor:pointer;opacity:0;transform:translateY(12px);transition:all 0.3s cubic-bezier(0.22, 1, 0.36, 1);z-index:100}.back-to-top.visible{opacity:1;transform:translateY(0)}.back-to-top:hover{border-color:var(--accent);color:var(--accent);background:rgba(88,166,255,0.08);box-shadow:0 0 16px rgba(88,166,255,0.2);transform:translateY(-2px)}@media (max-width: 480px){.back-to-top{bottom:20px;right:20px;width:36px;height:36px}}.post-back{margin-top:32px;max-width:720px}.post-back .back-link{display:inline-flex;align-items:center;gap:8px;font-family:"JetBrains Mono","Courier New",monospace;font-size:14px;color:var(--text-muted);text-decoration:none;transition:color 0.2s ease}.post-back .back-link:hover{color:var(--accent)}.boot-sequence{position:fixed;inset:0;z-index:9999999;background:#05070c;display:flex;align-items:center;justify-content:center;overflow:hidden;image-rendering:pixelated;transition:opacity 0.4s steps(3);perspective:600px;perspective-origin:50% 50%}.boot-sequence.done{opacity:0;pointer-events:none}.boot-sequence.warp-out .boot-content-zoom,.boot-sequence.warp-out .boot-stage,.boot-sequence.warp-out .boot-streams{animation:warpZoom 0.5s cubic-bezier(0.7, 0, 1, 1) forwards}.boot-sequence.warp-out .boot-bloom{animation:bloomFlash 0.5s ease-out forwards}.boot-sequence::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(0deg, transparent 0, transparent 2px, rgba(0,0,0,0.25) 2px, rgba(0,0,0,0.25) 4px);pointer-events:none;z-index:5}.boot-bloom{position:absolute;top:50%;left:50%;width:60vmin;height:60vmin;transform:translate(-50%, -50%) scale(0.4);border-radius:50%;background:radial-gradient(circle, rgba(0,229,255,0.55) 0%, rgba(0,160,255,0.28) 30%, rgba(120,80,255,0.12) 55%, transparent 72%);filter:blur(12px);z-index:2;pointer-events:none;opacity:0;mix-blend-mode:screen}.boot-bloom.on{animation:bloomPulse 2.6s ease-in-out infinite}.boot-streams{position:absolute;inset:0;z-index:1;pointer-events:none;transform-style:preserve-3d}.boot-stream{position:absolute;width:6px;image-rendering:pixelated;will-change:transform, opacity}@keyframes bloomPulse{0%, 100%{opacity:0.55;transform:translate(-50%, -50%) scale(0.85)}50%{opacity:0.9;transform:translate(-50%, -50%) scale(1.15)}}@keyframes bloomFlash{0%{opacity:0.9;transform:translate(-50%, -50%) scale(1)}45%{opacity:0.85}100%{opacity:0;transform:translate(-50%, -50%) scale(7);filter:blur(4px)}}@keyframes warpZoom{0%{transform:scale(1);opacity:1;filter:blur(0)}100%{transform:scale(9);opacity:0;filter:blur(6px)}}.boot-stage{position:relative;z-index:3;display:none;flex-direction:column;align-items:center;text-align:center}.boot-stage.active{display:flex}.boot-linkstart .boot-ls-text{font-family:"Press Start 2P","Galmuri11",monospace;font-size:clamp(20px, 6vw, 56px);color:#fff;letter-spacing:0.08em;text-shadow:0 0 12px #fff,0 0 28px #00e5ff,0 0 60px rgba(0,229,255,0.8),0 0 110px rgba(0,160,255,0.6),0 0 160px rgba(120,80,255,0.4);animation:bootBlink 0.4s step-end 6,bootPunch 0.5s steps(5) 1}.boot-syscheck .sys-title{font-family:"Press Start 2P","Galmuri11",monospace;font-size:clamp(10px, 2vw, 16px);color:#00e5ff;letter-spacing:0.2em;margin-bottom:22px;text-shadow:0 0 10px #00e5ff}.boot-syscheck .sys-list{list-style:none;margin:0 0 18px;padding:0;display:flex;flex-direction:column;gap:9px;min-width:260px}.boot-syscheck .sys-list li{display:flex;justify-content:space-between;gap:24px;font-family:"Press Start 2P","Galmuri11",monospace;font-size:clamp(7px, 1.4vw, 11px);color:rgba(255,255,255,0.7);letter-spacing:0.06em;opacity:0;transform:translateX(-8px)}.boot-syscheck .sys-list li.shown{opacity:1;transform:none;transition:opacity 0.05s steps(1),transform 0.05s steps(1)}.boot-syscheck .sys-list li .ok{color:#00e676;text-shadow:0 0 8px #00e676}.boot-syscheck .sys-allgreen{font-family:"Press Start 2P","Galmuri11",monospace;font-size:clamp(12px, 3vw, 26px);color:#00e676;letter-spacing:0.12em;text-shadow:0 0 16px #00e676,3px 3px 0 #001a0a;opacity:0}.boot-syscheck .sys-allgreen.shown{opacity:1;animation:bootBlink 0.18s step-end 6}.boot-welcome .boot-welcome-main{font-family:"Press Start 2P","Galmuri11",monospace;font-size:clamp(18px, 5vw, 44px);color:#fff;letter-spacing:0.1em;text-shadow:0 0 18px #ffeb3b,3px 3px 0 #221a00;animation:bootPunch 0.35s steps(4) 1}.boot-welcome .boot-welcome-sub{display:block;font-family:"Press Start 2P","Galmuri11",monospace;font-size:clamp(8px, 1.6vw, 13px);color:#ffeb3b;letter-spacing:0.22em;margin-top:16px;text-shadow:0 0 10px #ffeb3b}.boot-skip{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);z-index:4;font-family:"Press Start 2P","Galmuri11",monospace;font-size:7px;color:rgba(255,255,255,0.35);letter-spacing:0.15em;animation:bootBlink 1.2s step-end infinite}body.booting{overflow:hidden}@keyframes bootBlink{0%, 100%{opacity:1}50%{opacity:0}}@keyframes bootPunch{0%{transform:scale(0.2)}60%{transform:scale(1.15)}100%{transform:scale(1)}}.achievement-toast{position:fixed;bottom:88px;right:24px;width:300px;background:rgba(9,11,16,0.97);border:2px solid #00e676;z-index:99990;box-shadow:4px 4px 0 rgba(0,230,118,0.2);transform:translateX(360px);transition:transform 0.08s steps(4);image-rendering:pixelated}.achievement-toast.visible{transform:translateX(0)}.achievement-toast .ach-header{background:#00e676;padding:5px 10px}.achievement-toast .ach-header span{font-family:"Press Start 2P","Galmuri11",monospace;font-size:7px;color:#000;letter-spacing:0.12em}.achievement-toast .ach-body{display:flex;align-items:center;gap:14px;padding:12px 14px}.achievement-toast .ach-icon{font-size:26px;flex-shrink:0;width:34px;text-align:center;line-height:1;animation:pixelBlink 0.5s step-end 4}.achievement-toast .ach-title{font-family:"Press Start 2P","Galmuri11",monospace;font-size:9px;color:#ffeb3b;margin-bottom:5px;line-height:1.6;letter-spacing:0.04em;text-shadow:0 0 8px rgba(255,235,59,0.5)}.achievement-toast .ach-desc{font-family:"JetBrains Mono","Courier New",monospace;font-size:11px;color:var(--text-muted);line-height:1.4}@media (max-width: 480px){.achievement-toast{width:calc(100vw - 32px);right:16px;bottom:16px}}.score-hud{position:fixed;top:70px;right:16px;z-index:150;pointer-events:none;text-align:right}.score-hud .score-label{display:block;font-family:"Press Start 2P","Galmuri11",monospace;font-size:7px;color:var(--text-faint);letter-spacing:0.1em;margin-bottom:2px}.score-hud .score-value{display:block;font-family:"Press Start 2P","Galmuri11",monospace;font-size:14px;color:#ffeb3b;letter-spacing:0.05em;text-shadow:0 0 10px rgba(255,235,59,0.35);transition:color 0.05s steps(1),text-shadow 0.05s steps(1)}.score-hud .score-value.bump{color:#00e676;text-shadow:0 0 12px #00e676}@media (max-width: 768px){.score-hud{display:none}}.konami-overlay{position:fixed;inset:0;z-index:999999;background:rgba(0,0,0,0.3);pointer-events:none;opacity:0;transition:opacity 0.05s steps(1),background 0.03s steps(1)}.konami-overlay.active{opacity:1;pointer-events:all}.konami-overlay.flash{background:#fff}.rd-kanji{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-family:"Yuji Mai","Yuji Syuku","Noto Sans KR",serif;font-size:84vmin;line-height:1;color:#c20012;-webkit-text-stroke:4px #ff5252;text-shadow:0 0 28px rgba(255,60,60,0.95),0 0 70px rgba(220,0,0,0.7),0 0 140px rgba(160,0,0,0.5);opacity:0;user-select:none}.rd-kanji.visible{opacity:1;animation:rdSlam 0.26s steps(4) 1}@keyframes rdSlam{0%{scale:2.6;opacity:0}55%{scale:0.88;opacity:1}100%{scale:1;opacity:1}}.rd-hits-wrap{position:absolute;bottom:14%;left:50%;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:4px;opacity:0;transition:opacity 0.04s steps(1)}.rd-hits-wrap.visible{opacity:1}.rd-hits-label{font-family:"Press Start 2P","Galmuri11",monospace;font-size:8px;color:rgba(255,255,255,0.5);letter-spacing:0.25em}.rd-hits-count{font-family:"Press Start 2P","Galmuri11",monospace;font-size:clamp(32px, 6vw, 72px);color:#ffeb3b;text-shadow:0 0 20px #ffeb3b,2px 2px 0 rgba(0,0,0,0.9);letter-spacing:0.04em;line-height:1}.rd-finish{position:absolute;inset:0;opacity:0;transition:opacity 0.05s steps(1)}.rd-finish .rd-char{position:absolute;font-family:"Yuji Mai","Yuji Syuku","Noto Sans KR",serif;color:#fff;line-height:0.9;-webkit-text-stroke:3px #cc0000;text-shadow:0 0 24px rgba(255,255,255,0.9),0 0 50px rgba(255,40,40,0.8),0 0 90px rgba(180,0,0,0.5);opacity:0}.rd-finish .rd-c1{top:3%;left:4%;font-size:30vmin;rotate:-7deg}.rd-finish .rd-c2{top:9%;right:4%;font-size:32vmin;rotate:5deg}.rd-finish .rd-c3{bottom:2%;left:50%;translate:-50% 0;rotate:-3deg;font-size:34vmin}.rd-finish .rd-sub{position:absolute;bottom:6%;right:7%;font-family:"Press Start 2P","Galmuri11",monospace;font-size:clamp(8px, 1.5vw, 15px);color:#ffeb3b;letter-spacing:0.2em;text-shadow:0 0 10px #ffeb3b;opacity:0}.rd-finish.visible{opacity:1}.rd-finish.visible .rd-c1{animation:rdSlam 0.22s steps(4) 0s forwards}.rd-finish.visible .rd-c2{animation:rdSlam 0.22s steps(4) 0.12s forwards}.rd-finish.visible .rd-c3{animation:rdSlam 0.24s steps(4) 0.24s forwards}.rd-finish.visible .rd-sub{animation:rdSubIn 0.2s steps(2) 0.45s forwards}@keyframes rdCharIn{0%{opacity:0}100%{opacity:1}}@keyframes rdSubIn{to{opacity:1}}.combo-popup{position:fixed;z-index:99995;font-family:"Press Start 2P","Galmuri11",monospace;color:#ffeb3b;font-size:clamp(10px, 2vw, 23px);text-shadow:0 0 16px #ffeb3b,3px 3px 0 rgba(0,0,0,0.9);pointer-events:none;opacity:0;letter-spacing:0.04em;text-align:center;white-space:nowrap;transform:translate(-50%, -50%) scale(0)}
